在 Linux 应急响应中,攻击者清理日志的行为给追踪和分析带来了巨大挑战。本文将介绍在日志被清理后,如何利用 journald 工具进行日志分析。
一、介绍
journalctl
命令是 Linux 系统中一个用于查询和管理系统日志的命令行工具,它基于 systemd
的日志守护进程 systemd-journald
的功能。journalctl
命令可以帮助用户查找、过滤和分析系统日志。这些日志信息包括内核消息、系统服务日志、用户登录和注销信息等。通过 journalctl
,用户可以快速定位系统问题并进行排查。
二、命令选项
以下是 journalctl
命令的一些常用选项:
-f
:实时追踪日志输出,用于实时查看系统的日志信息。-n
或--lines=
:显示指定数量的日志行。例如,journalctl -n 10
将显示最近的 10 条日志。-u unit
:仅显示指定单元的日志。例如,journalctl -u sshd
将显示 sshd 服务的所有日志信息。-k
:显示内核消息,用于调试内核相关的问题。-b
:显示引导过程的日志,用于排查系统启动问题。-p priority
:仅显示指定优先级的日志。例如,journalctl -p err
将显示所有错误级别的日志信息。--since time
和--until time
:显示指定时间范围内的日志信息。时间格式可以是 "YYYY-MM-DD HH:MM:SS"。
三、示例说明
查看计划任务
journalctl | grep cron
查看登录记录
journalctl | grep Accept
显示指定时间范围内的日志信息(例如,从 2024-08-01 00:00:00 到 2024-08-08 23:59:59)
journalctl --since "2024-08-01 00:00:00" --until "2024-08-08 23:59:59"
查看 sshd 服务的日志信息
journalctl -u sshd
四、日志被清除?
攻击者可能会通过删除或清空日志文件来掩盖其行踪。这包括但不限于/var/log
目录下的secure
、messages
、lastlog
、wtmp
和btmp
等关键日志文件。
使用systemd-journald恢复日志:
systemd-journald是systemd的一部分,它以结构化数据库的形式存储日志,即使在系统重启后也不会丢失数据。
持久化配置:
通过修改/etc/systemd/journald.conf文件,设置Storage=persistent,可以将日志持久化保存到磁盘上。
日志清理后的应急响应:
如果日志文件被清空,可以通过以下步骤进行应急响应:
- 检查日志文件的修改时间:
stat /var/log/secure
- 使用
journalctl
查询清理前的所有日志:journalctl --until "时间点"
例如,我们将/var/log/auth.log 日志删除(/var/log/auth.log:记录系统授权信息,包括用户登录和使用的权限机制等。)
首先查看/auth.log 日志关于登录成功的日志。
同时 journalctl 也可以查看到
将/var/log/auth.log 日志内容删除,可以看到 journalctl 依旧可以查看登录日志