liunx服务异常分析

systemd-journald 服务分析系统日志

实验环境:本地 Centos 7 请勿在 vps 服务器上操作!!!

1 systemd-journald 介绍

systemd-journald 是一个收集并存储各类日志数据的系统服务。 它创建并维护一个带有索引的、
结构化的日志数据库, 并可以收集来自各种不同渠道的日志。

systemd 是内核启动后的第一个用户进程,PID 为 1,是所有其它用户进程的父进程。所有服务的
启动运行日志都可以记录到 systemd-journald 中,日志守护进程会以安全且不可伪造的方式自动收集
每条日志的元数据。默认情况日志是存储在内存中的,系统重启后都会丢失。

黑客入侵系统后一般会将系统日志清空,以达到清理痕迹的作用,如果日志被黑客清空我们就无法通
过日志来分析黑客入侵系统后都做了哪些事情,/var/在很多情况下黑客在清理日志的时候都会忽略内存
中的日志。

2 systemd-journald 持久化配置

由于日志默认存储在内存中,重启就会失效,如果想保存日志可以通过持久化配置将日志保存到本
地。

默认的配置文档中所有的参数都是默认值。

[root@xuegod63 ~] vim /etc/systemd/journald.conf 
[Journal] 
#Compress=yes 
#Seal=yes 
#SplitMode=uid 
#SyncIntervalSec=5m 
#RateLimitInterval=30s 
#RateLimitBurst=1000 
#SystemMaxUse= 
#SystemKeepFree= 
#SystemMaxFileSize= 
#RuntimeMaxUse= 
#RuntimeKeepFree= 
#RuntimeMaxFileSize= 
#MaxRetentionSec= 
#MaxFileSec=1month 
#ForwardToSyslog=yes 
#ForwardToKMsg=no 
#ForwardToConsole=no 
#ForwardToWall=yes 
#TTYPath=/dev/console 
#MaxLevelStore=debug 
#MaxLevelSyslog=debug 
#MaxLevelKMsg=notice 
#MaxLevelConsole=info 
#MaxLevelWall=emerg 
#LineMax=48K 

新建一个配置文档,模板文件我们就不修改了。

[root@xuegod63 ~] mkdir /etc/systemd/journald.conf.d 
[root@xuegod63 ~] vim /etc/systemd/journald.conf.d/99-prophet.conf 
[Journal] 
# 持久化保存到磁盘 
Storage=persistent 
# 压缩历史日志 
Compress=yes 
SyncIntervalSec=5m 
RateLimitInterval=30s 
RateLimitBurst=1000 
# 最大占用空间 10G 
SystemMaxUse=10G 
# 单日志文件最大 200M 
SystemMaxFileSize=200M 
# 日志保存时间 2 周 
MaxRetentionSec=2week  
# 不将日志转发到 syslog 
ForwardToSyslog=no 

Storage 参数详解:
“volatile” 表示仅保存在内存中,也就是仅保存在/run/log/journal 目录中(将会被自动按需创建)。

“persistent” 表示优先保存在磁盘上, 也就优先保存在 /var/log/journal 目录中(将会被自动按
需创建), 但若失败(例如在系统启动早期"/var"尚未挂载), 则转而保存在 /run/log/journal 目录中
(将会被自动按需创建)。

“auto”(默认值) 与 “persistent” 类似, 但不自动创建 /var/log/journal 目录, 因此可以根据
该目录的存在与否决定日志的保存位置。
“none” 表示不保存任何日志(直接丢弃所有收集到的日志), 但日志转发(见下文)不受影响。 默认
值是 “auto”

重启服务使配置文件生效

[root@xuegod63 ~] systemctl restart systemd-journald 

配置持久化后日志文件从临时文件目录/run/log/journal 保存至/var/log/journal 目录

[root@xuegod63 ~] ll /var/log/journal/ 
drwxr-xr-x 2 root root 28 Nov 5 15:44 054c89aaafa04dccbc3f844cfd502639 

缺点:文件体积大,也容易被发现。

3 journalctl 查询日志

直接查询,默认查询规则是从旧到新排序。

[root@xuegod63 ~] journalctl 

在这里插入图片描述

从新到旧排序使用-r 参数

[root@xuegod63 ~] journalctl -r 

在这里插入图片描述

查看指定服务日志

[root@xuegod63 ~] journalctl -u sshd 

在这里插入图片描述
对比系统日志文件

[root@xuegod63 ~] tail -n 4 /var/log/secure 

在这里插入图片描述
系统日志多一条 pam_unix

实时查看最新日志。

[root@xuegod63 ~] journalctl -f

在这里插入图片描述

1、新建终端安装软件

[root@xuegod63 ~] yum install -y lsof 

2、返回实时日志窗口查看

Nov 05 16:01:38 xuegod63.cn yum[10338]: Installed: lsof-4.87-6.el7.x86_64 

问题:Centos 默认不记录系统命令 Ctrl+c 关闭实时窗口,配置系统日志记录系统命令。

3、配置文件中将 PROMPT_COMMAND 输出到系统日志中

[root@xuegod63 ~] vim /etc/bashrc 
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: 
$(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"' 
readonly PROMPT_COMMAND 

构造消息日志过程:首先通过 history 1 取出当前执行的命来,$?获取该命令执行的返回值。

4、 logger -p local6.debug 自定义消息日志。

readonly PROMPT_COMMAND 设置为只读,防止被修改。

配置完成后重新打开终端窗口即可成效。

注:该配置也可配置到/etc/profile 中,两个位置都可以。

[root@xuegod63 ~] ifconfig 

5、查看实时日志

[root@xuegod63 ~]# journalctl -f 
Nov 05 16:50:19 xuegod63.cn root[10780]: root [10734]: 2021-11-05 16:50:19 $ifconfig 
[0] 

由于前面我们通过配置/etc/profile 对系统日志记录格式进行了自定义,所以这里获取到的信息会有
2 个时间戳,如果觉得重复可以去除/etc/profile 中对历史命令的自定义。

指定查询时间

[root@xuegod63 ~] journalctl --since "2021-11-05 00:00:00" --until "2021-11-05 17:00:00" 

–since 定义开始时间
–until 定义结束时间
两个参数可以单独指定,仅指定开始日期获取开始日期后所有日志,仅指定结束日期获取结束日期前
所有日志。日期格式必须是:YYYY-MM-DD HH:MM:SS

指定输出格式

[root@xuegod63 ~] journalctl -o short-precise 

在这里插入图片描述

输出的时间更加精细,日志信息简洁。

输出详细信息

[root@xuegod63 ~] journalctl -o verbose 

在这里插入图片描述

可信字段是指名称以下划线开头的字段。 这些字段由日志守护进程添加,客户端无法掌控这些字段
的内容, 因此是"可信的"。详细信息中的字段都可以作为查询条件使用。

通过可信字段查询指定用户的日志

[root@xuegod63 ~] journalctl _UID=0 -n 5 

在这里插入图片描述

注:可信字段必须带有下划线

实战清理系统日志后使用 systemd-journald 分析日志

新建用户

[root@xuegod63 ~] useradd xuegod 
[root@xuegod63 ~] echo "123456" | passwd --stdin xuegod 

kali 通过 xuegod 用户登录 centos

┌──(root xuegod53)-[~] 
└─ ssh xuegod@192.168.1.63 

切换到 root 用户

[xuegod@xuegod63 ~]$ su - root 

小伙子非常凶狠直接清空了日志

[root@xuegod63 ~] echo > /var/log/secure 
[root@xuegod63 ~] echo > /var/log/messages 
[root@xuegod63 ~] echo > /var/log/lastlog 
[root@xuegod63 ~] echo > /var/log/wtmp 
[root@xuegod63 ~] echo > /var/log/btmp 

登录系统进行排查

[root@xuegod63 ~] last 

wtmp begins Fri Nov 5 17:46:48 2021

[root@xuegod63 ~] lastlog 

在这里插入图片描述

可以看到日志都被删除了无法得知黑客做了什么。

查看日志文件修改时间

[root@xuegod63 ~] cd /var/log/ 
[root@xuegod63 log] stat secure 
 File: ‘secure’ 
 Size: 365 Blocks: 8 IO Block: 4096 regular file 
Device: fd00h/64768d Inode: 34004243 Links: 1 
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) 
Access: 2021-11-05 17:44:43.990999926 +0800 
Modify: 2021-11-05 17:46:48.017997318 +0800 
Change: 2021-11-05 17:46:48.017997318 +0800 
 Birth: - 

得知文件是 17:46 被修改。

查询 17:46 前所有日志,避免误差,加一分钟 17:47,实战中前后信息都要看。查看文件时间只能
确认这个时间内这个文件被修改了,并不是绝对时间。

搜索关键词

[root@xuegod63 log] journalctl --until "2021-11-05 17:47:00" -o short-precise 
/secure  

在这里插入图片描述

可以看到黑客通在 192.168.1.53 通过 ssh 服务登录 xuegod 用户,su - root 切换到 root 用户清
空了日志。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/345399.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈WPF之UI布局

一个成功的软件,离不开人性化的UI设计,如何抓住用户第一视觉,让用户产生依赖感,合适优雅的布局必不可少。本文以一些简单的小例子,简述WPF中布局 面板 控件的使用,仅供学习分享使用,如有不足之处…

学习笔记-李沐动手学深度学习(二)(08-09、线性回归、优化算法、Softmax回归、损失函数、图片分类)

总结 以_结尾的方法,好像是原位替换(即 原地修改,就地修改变量)如 fill_() 感恩的心:(沐神的直播环境) 08-线性回归基础优化算法 引言(如何在美国买房) 根据现在行…

51单片机ESP8266

一、MQTT透传AT固件 安信可提供的烧录WiFi固件工具: 链接: https://docs.ai-thinker.com/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B72 安信可提供的固件库链接: https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB 经过测试,选择这个不可以…

LeetCode刷题---删除排序链表中的重复元素 II

解题思路: 1.首先定义虚拟节点dummy,dummy的下一个节点指向head节点。 2.定义辅助节点cur指向dummy节点 3.开始遍历链表,如果当前节点cur的下一个节点和下下一个节点都不为空的情况下,对cur的下一个节点和下下一个节点的值进行判断。 4.如果当前节点cur的…

Python基础第九篇(Python可视化的开发)

文章目录 一、json数据格式(1).转换案例代码(2).读出结果 二、pyecharts模块介绍三、pyecharts模块入门(1).pyecharts模块安装(2).pyecharts模块操作(1).代码…

洛谷刷题-【入门2】分支结构

目录 1.苹果和虫子 题目描述 输入格式 输出格式 输入输出样例 2.数的性质 题目描述 输入格式 输出格式 输入输出样例 3.闰年判断 题目描述 输入格式 输出格式 输入输出样例 4.apples 题目描述 输入格式 输出格式 输入输出样例 5.洛谷团队系统 题目描述 …

什么是信号抖动

对于抖动,有一个简单而直观的定义: “Jitter is defined as the short-term variations of a digital signal’s significant instants from their ideal positions in time.” 翻译过来,就是: “抖动被定义为一个数字信号的重要时…

Duplicate keys detected: ‘41172‘. This may cause an update error.

在写项目的过程中,遇到了 Duplicate keys detected: 41172. This may cause an update error. 这个错误具体错误信息如下: 原因:v-for 循环时,用了重复的key值 解决方案: 1、单个v-for循环,选择id或其他唯一…

【C++杂货铺】快速学会命名空间

目录 🌈前言 📁 命名空间的定义 📁 命名空间的使用 ● 加命名空间名称及作用域限定符 ● 使用using将命名空间中某个成员引入 ● 使用using namespace 命名空间名称 引入 📁 C输入 和 输出 📁 总结 &#x1f3…

微信小程序首页、界面布局、功能简洁(示例三)

微信小程序首页界面布局、页面简洁,功能简单 直接上具体代码: 1、js代码 Page({/*** 页面的初始数据*/data: {imgList: [../../images/demo.jpg, ../../images/demo.jpg, ../../images/demo.jpg],navList: [{src: ../../images/nav1.png,title: 菜单一}…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第 2章感知机

文章目录 第 2章感知机2.1 感知机模型2.2 感知机学习策略2.2.1 数据集的线性可分性2.2.2 感知机学习策略 2.3 感知机学习算法2.3.1 感知机学习算法的原始形式2.3.2 算法的收敛性2.3.3 感知机学习算法的对偶形式 实践:二分类模型(iris数据集)数…

【机器学习300问】17、什么是欠拟合和过拟合?怎么解决欠拟合与过拟合?

一个问题出现了,我们首先要描述这个问题,然后分析问题出现的原因,找到原因后提出解决方案。废话不多说,直接上定义,然后通过回归和分类任务的例子来做解释。 一、什么是欠拟合和过拟合? (1&am…

微信小程序之全局配置-window和tabBar

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

日常修复msvcp140.dll丢失的解决方法,msvcp140.dll文件的影响

msvcp140.dll文件是Microsoft Visual C Redistributable包的一部分,它在Windows系统中发挥着重要作用。当出现msvcp140.dll丢失的情况时,这意味着操作系统或应用程序无法找到该文件,可能会导致应用程序无法启动、错误提示等问题。幸运的是&am…

【漏洞复现】Atlassian Confluence远程代码执行漏洞(CVE-2023-22527)

文章目录 前言声明一、Atlassian Confluence简介二、漏洞描述三、影响版本四、漏洞复现五、整改意见 前言 Atlassian Confluence是澳大利亚Atlassian公司的一套专业的企业知识管理与协同软件,也可以用于构建企业WiKi。 声明 请勿利用文章内的相关技术从事非法测试…

knife4j调用接口报404

问题 Knife4j文档请求异常,请求资源的接口都是404 解决方法 就是请求路径出错了,我一开始还以为是拦截器拦截了来自knife4j发来的请求。。。

C++后端开发之Sylar学习一:配置环境

Sylar学习一:配置环境 安装虚拟机 我安装的是Ubuntu 20.04,分配了60G的SSD容量,8G的内存 配置Ubuntu 修改软件源 切换到管理员账户进入到/etc/apt目录 /etc/apt 目录是 Ubuntu 系统中存储与包管理系统 APT (Advanced Package Tool) 相关…

需求分析的结构化和面向对象方法

需求分析的方法,主要有结构化(SA)方法、面向对象分析(OOA)方法。另外有面向问题域的分析(Problem Domain Oriented Analysis,PDOA)方法,还有一些形式化方法例如VDM ( Vienna Design Method)和Z等…

Linux中Iptables使用

概念:网络中的防火墙,是一种将内部网络和外部网络分开的方法,是一种隔离技术 作用: 防火墙在内网与外网通信时进行访问控制,依据所设置的规则对数据包作出判断,最大限度地阻止网络中的黑客破坏企业网络&…

抓包工具Charles修改Response步骤

前言 Charles是在Mac下常用的截取网络封包的工具,在测试服务器端的网络通讯,往往用它来截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取与…