auditctl动态调整规则的核心是内存态即时生效:添加用-w/-a、验证用-l/ausearch、删除用-W/-d,重启或restart auditd即失效。

用 auditctl 动态调整规则链,核心是“不写磁盘、不重启服务、即时生效、随时删改”。它直接操作内核审计子系统,所有变更都在内存中完成,适合测试、应急和临时监控。
添加新规则:用 -w 或 -a 即时注入
规则格式与永久配置一致,只是省略前缀命令:
- 监控关键文件变动:
sudo auditctl -w /etc/shadow -p wa -k shadow_mod(-p wa 表示写+属性变更) - 捕获特定目录下所有读写执行行为:
sudo auditctl -a always,exit -F dir=/var/www/html -F perm=rwxa -k web_change - 记录普通用户执行命令(64位系统):
sudo auditctl -a always,exit -F arch=b64 -S execve -F auid>=1000 -k user_cmd
验证与排查:确认规则已加载并触发
加完别猜,立刻验证:
- 列出当前全部规则:
sudo auditctl -l,检查输出是否含你刚加的路径或 key - 手动触发一次目标动作(如
sudo usermod -p '!' testuser),再查日志:sudo ausearch -k shadow_mod | head -5 - 若无记录,先检查
sudo auditctl -s | grep enabled是否为enabled 1,再确认/etc/shadow路径真实存在(不能是符号链接未解析路径)
删除与清理:精准移除,避免残留
动态规则支持按条件精确删除,不用全清:
- 删单个文件监控:
sudo auditctl -W /etc/shadow(注意是大写 W) - 删系统调用类规则:
sudo auditctl -d always,exit -F arch=b64 -S execve -F auid>=1000(参数需完全匹配) - 清空所有临时规则(慎用):
sudo auditctl -e 0 && sudo auditctl -e 1,但会中断其他临时规则
注意事项:哪些操作会导致规则丢失
auditctl 规则本质是内存态,以下情况会自动失效:
- 系统重启或 auditd 服务重启(
systemctl restart auditd在 CentOS 7 会清空全部规则) - 执行
sudo auditctl -e 2锁定规则后,再执行-e 0或-e 1也会重置 - 规则中路径不存在(如
-w /nonexistent/file),内核静默忽略,auditctl -l不显示也不报错

















