auditd需手动启用服务、精准配置规则、主动验证生效并加固日志管理才能有效审计。必须先systemctl enable --now auditd,再在/etc/audit/rules.d/写.rules文件并augenrules --load加载,聚焦敏感文件、特权命令、权限变更等高价值目标,避免全量审计导致日志爆炸。

auditd 不是装上就自动干活的工具,得明确目标、配对规则、验证生效、管好日志,才能真正记录下敏感操作。
先确保 auditd 服务在跑
它默认不启动也不自启。执行 systemctl status auditd,如果显示 inactive,就得手动拉起来:
-
sudo systemctl start auditd -
sudo systemctl enable auditd
没这步,规则再全,日志文件 /var/log/audit/audit.log 也一直是空的。
只监控高价值目标,别搞全量审计
盲目开所有 execve 或所有 open 调用,一天就能撑爆磁盘。优先盯住这几类:
- 敏感文件:
/etc/shadow、/etc/passwd、/etc/sudoers、/etc/ssh/sshd_config - 特权命令:
/usr/bin/sudo、/usr/bin/passwd、/usr/sbin/useradd - 权限变更:
setuid、setgid、chmod、chown系统调用 - 登录与提权行为:
sshd进程启动、su切换、execve中 euid 改变
用 augenrules 加载永久规则
把规则写进 /etc/audit/rules.d/ 目录下,文件名必须以 .rules 结尾(比如 critical.rules),内容示例:
-w /etc/shadow -p wa -k identity_change -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/sudo -k sudo_exec -a always,exit -F arch=b64 -S setuid,setgid -k uid_gid_change
写完后运行 sudo augenrules --load,它会合并所有 .rules 文件并重载进内核。别用 systemctl restart auditd,那会清空当前规则。
验证规则是否真起作用
别等出事才查,主动触发再确认:
- 执行
sudo touch /tmp/audit-test,然后运行ausearch -k sudo_exec -i | tail -2,看有没有对应记录 - 用
sudo visudo修改 sudoers 后,查ausearch -k identity_change - 检查当前加载规则:
sudo auditctl -l | grep -E "(sudo_exec|identity_change)"
没记录?常见原因有:规则没 reload、SELinux 拦截(临时setenforce 0测试)、或-F arch=没匹配当前系统架构。
让日志可用且防篡改
auditd 日志默认存在 /var/log/audit/audit.log,但需注意:
- 编辑
/etc/audit/auditd.conf,设max_log_file = 50(MB)、num_logs = 10,避免单个日志过大 - 日志只追加不覆盖,root 也无法删除历史条目,天然防删改
- 若需告警,可配合
ausearch+awk提取关键事件,再转发到 syslog 或 Kafka
不复杂但容易忽略











