这个坑值得记一笔。CentOS 7 等保整改,本来用 auditctl -w /etc/passwd -p wa -k passwd_changes 能查到记录,改成 -w /etc -p wa 之后改 passwd 在 ausearch 里查不到,只剩目录自身的记录。

这类报错背后常见的原因有几处,逐个排除就行。-w 挂的是 inode,文件被 mv 覆盖后 inode 变了,旧规则跟不过去;目录级监听只看目录项变化,子文件的写入事件要另外配;规则被 auditctl -D 清过又没重新加载,看起来配了其实没生效。

动手时先看当前生效的规则

auditctl -l

给关键文件单独加规则

auditctl -w /etc/passwd -p wa -k passwd_changes

然后按关键字回查事件

ausearch -k passwd_changes -ts today

持久化到 rules.d

echo '-w /etc/passwd -p wa -k passwd_changes' > /etc/audit/rules.d/passwd.rules

白天有业务在跑,能验证的部分都压到了晚上做。

当时还开着另一个排查窗口,两边日志对照着看才定位到。

别只看报错消失,验证要多做一步。手工 touch /etc/passwd 后 ausearch -k passwd_changes 能查到 SYSCALL 记录且 pid 与 exe 正确,augenrules –load 之后 auditctl -l 的条数与文件一致。

补一句。文件级监听比目录级精确也更省事件量,关键文件逐个列;规则一定要落到 rules.d,否则重启就回到解放前。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189