RHEL 10 auditd:规则生效但 ausearch 说没记录?加 -if
This content is not available in your language yet.
审计规则加了、文件也改了,ausearch 却回 <no matches>——在 RHEL 10 上这通常不是规则没生效,而是 ausearch 没有读到 /var/log/audit/audit.log。本页用 /etc/hosts 做一次可还原的实测。
在 PVE 390 rhel10-lab(RHEL 10.2,auditd 4.0.3)执行:
systemctl is-active auditdsudo auditctl -ssudo auditctl -w /etc/hosts -p wa -k hosts_changesecho '# audit test' | sudo tee -a /etc/hostssudo ausearch -k hosts_changes -isudo ausearch -if /var/log/audit/audit.log -k hosts_changes -iE3 记录:plans/content-expansion/evidence/rhel/rhel-auditd/run.json(6 步,含触发事件与两种 ausearch 输出 sha256)。
先给结论:规则没坏,是输入路径
Section titled “先给结论:规则没坏,是输入路径”auditctl -l能看到规则;audit.log里确实有key="hosts_changes";ausearch -k默认输入找不到;- 加
-if /var/log/audit/audit.log就能查到。
auditd.conf 里 log_format = ENRICHED、log_file = /var/log/audit/audit.log,但默认输入路径在这个环境没有命中,显式 -if 最稳。
sudo auditctl -w /etc/hosts -p wa -k hosts_changessudo auditctl -l | grep hosts_changes# -w /etc/hosts -p wa -k hosts_changes-w监视文件/目录;-p wa监视写(w)与属性(a);-k给事件打 key,便于ausearch -k。
运行时规则重启会丢;要持久化写 /etc/audit/rules.d/*.rules 再 augenrules --load。
cp /etc/hosts /tmp/hosts.bakecho '# audit test' | sudo tee -a /etc/hostssudo grep hosts_changes /var/log/audit/audit.log | tail -2type=SYSCALL ... syscall=openat success=yes ... key="hosts_changes"type=PATH ... name=/etc/hosts ... nametype=NORMALopenat 的 flags 是 O_WRONLY|O_CREAT|O_APPEND,和追加写一致。测试完:
sudo cp /tmp/hosts.bak /etc/hostsausearch 的坑
Section titled “ausearch 的坑”$ sudo ausearch -k hosts_changes -i<no matches>
$ sudo ausearch -if /var/log/audit/audit.log -k hosts_changes -itype=SYSCALL ... key=hosts_changes ...同一份日志、同一条规则,差别只在 -if。排查顺序:
grep <key> /var/log/audit/audit.log,确认事件在不在;- 在 → 用
ausearch -if /var/log/audit/audit.log; - 不在 → 再查规则、
auditctl -s、journalctl -u auditd。
aureport 也要 -if
Section titled “aureport 也要 -if”$ sudo aureport -k<no events of interest were found>
$ sudo aureport -if /var/log/audit/audit.log -k | tail -43. 11/05/26 07:23:41 passwd_changes yes /usr/bin/touch 1000 42994. 11/05/26 07:24:29 audit_test yes /usr/sbin/auditctl 1000 43425. 11/05/26 07:24:29 audit_test yes /usr/bin/bash 1000 43436. 11/05/26 07:26:52 hosts_changes yes /usr/sbin/auditctl 1000 44707. 11/05/26 07:26:52 hosts_changes yes /usr/bin/bash 1000 4471sudo auditctl -W /etc/hosts -p wa -k hosts_changessudo auditctl -l-W 删除运行时规则;持久化规则要从 /etc/audit/rules.d/ 删除对应行再 augenrules --load。
-
auditdactive、auditctl -senabled=1; -
auditctl -l能看到规则; - 触发后
grep key /var/log/audit/audit.log有记录; -
ausearch加-if能查到; -
aureport同样加-if; - 测试文件/配置已还原;
- 持久化规则写入
rules.d并augenrules --load。
未实测与边界
Section titled “未实测与边界”- 未测试
augenrules --load持久化后的重启; - 未测试 audit 规则对性能的影响;
- 未测试远程 syslog/audisp 转发;
- 未测试
auditctl -e 2锁定规则。
- RHEL SELinux:文件上下文与布尔值 — 审计与 SELinux
- RHEL 10 rsyslog 接收端 — 日志集中
- 官方:Security hardening