journalctl 非万能审计工具,但可快速定位服务异常、登录失败、内核告警;需结合 auditd、结构化过滤与时间对齐才能闭环分析提权等高危行为。

journalctl 不是万能审计工具,但它能快速定位服务异常、登录失败、内核告警等关键安全线索。真正有效的威胁分析,靠的是结构化过滤 + 时间对齐 + 与 auditd 协同验证。
明确 journalctl 的能力边界
它不记录命令执行细节(比如 sudo rm -rf /),但能清晰反映:
- 服务启停状态:sshd、auditd 是否被意外关闭
- 系统登录行为:PAM 认证成功/失败、TTY 登录来源 IP
- 内核级异常:OOM killer 触发、驱动崩溃、tainted kernel 告警
- systemd 单元生命周期:定时任务是否失联、关键服务是否未按计划启动
开启持久化并设置合理留存策略
默认日志存在 /run/log/journal,重启即丢——完全无法满足审计要求。
- 创建落盘目录:sudo mkdir -p /var/log/journal
- 编辑 /etc/systemd/journald.conf,启用:
Storage=persistent
SystemMaxUse=500M
MaxRetentionSec=90d - 重启生效:sudo systemctl restart systemd-journald
不设容量上限易致磁盘打满;留存不足 90 天则难以回溯中期攻击链。
用字段过滤抓取高价值安全线索
避免全文 grep,直接利用 journalctl 的结构化字段精准提取:
- 查所有 SSH 登录失败:journalctl SYSLOG_IDENTIFIER=sshd PRIORITY=3
- 查 root 权限切换行为:journalctl _COMM=sudo | grep -i "command="
- 查内核完整性告警:journalctl -k -p warning..err | grep -i "integrity\|tainted"
- 导出某月完整日志归档:journalctl --since "2026-05-01" --until "2026-05-31" --all > may2026-audit.log
必须与 auditd 联动才能闭环分析
journalctl 显示“sudo 启动了”,audit.log 才能告诉你“sudo 后执行了 chmod 777 /etc/shadow”。两者缺一不可:
- 确保 auditd 已启用:sudo systemctl enable --now auditd
- 为敏感路径加规则,例如:sudo auditctl -w /etc/passwd -p wa -k etc_passwd_mod
- 用 ausearch -k etc_passwd_mod 查操作链,再用 journalctl --since yesterday 对齐时间戳看上下文
单独依赖 journalctl 分析提权行为,等于只看见门开了,却不知道谁进门、拿了什么、往哪去了。











