首页/系统/信创系统运维速查/审计规则编写与持久化
安全加固65 条

审计规则编写与持久化

按审计目标收集事件:监控关键文件写删(-w)、系统调用(-a)、按用户过滤;临时规则用 auditctl -a/-w,持久化放 /etc/audit/rules.d/ 后 augenrules --load。

信创系统运维速查系统更新于 2026-10-13

审计规则是干什么的

Linux 审计子系统(auditd)在内核层记录安全相关事件,规则决定「记什么」。两类最常用的写法:用 -w 监控具体文件或目录的读、写、属性变更(-p rwxa),用 -a 匹配系统调用(如删除、改名、执行)。每条规则挂一个 -k 检索键,事后用 ausearch -k 就能把同类事件捞出来。规则写在内存里重启就丢,正式配置要落到 /etc/audit/rules.d/。

基本信息

适用平台启用 auditd 的 RHEL/CentOS/openEuler/银河麒麟/UOS
临时规则auditctl -w 或 -a,立即生效、重启丢失
持久化目录/etc/audit/rules.d/*.rules(按文件名序号合并)
加载方式augenrules --load,必要时 systemctl restart auditd
查看auditctl -l 列出已加载规则,auditctl -s 看状态

典型使用场景

  • 关键账户文件监控:/etc/passwd、/etc/shadow、/etc/sudoers 的写与属性变更
  • 等保与审计条款落地:把要求监控的文件与系统调用逐条写成规则
  • 排查谁删了文件:对 unlink、rename 系统调用建规则,按 key 检索
  • 特权命令追踪:记录 TTY 上的提权执行与命令参数
  • 变更审计:配置文件目录整体监控,发现未走流程的改动

临时加载规则

临时加载规则
auditctl -w /etc/passwd -p wa -k passwd_change        # 监控写与属性变更
auditctl -w /etc/sudoers -p wa -k sudoers_change
auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -k file_delete
auditctl -w /etc/ssh/sshd_config -p wa -k sshd_config_change
auditctl -l                                          # 查看当前已加载规则
auditctl -s | head                                   # 看审计子系统状态与丢弃计数

持久化与验证

持久化与验证
cat > /etc/audit/rules.d/99-local.rules <<'EOF'
-w /etc/passwd -p wa -k passwd_change
-w /etc/sudoers -p wa -k sudoers_change
EOF
chmod 640 /etc/audit/rules.d/99-local.rules
augenrules --load              # 合并 rules.d 并加载
systemctl restart auditd       # 部分环境需要重启才完全生效
ausearch -k passwd_change -ts today | tail -20   # 用 key 检索事件

规则字段读法

字段含义说明
-w 路径监控目标文件或目录,目录需配 -p 明确行为
-p wa监控权限类型r 读、w 写、x 执行、a 属性变更
-k 关键字检索键ausearch -k 使用,命名要能自解释
-a always,exit系统调用匹配exit 表示在调用返回时记录
-F arch=b64限定架构64 位程序写 b64;兼容 32 位需另加 b32
-F uid=按用户过滤只记录指定用户的操作,降低日志量
auditctl -w 只对已存在的路径生效:路径不存在或后续被移动,规则会静默失效,交付前用 auditctl -l 复核一遍。
规则过多或监控高写入目录会让审计日志暴涨,可能把 /var/log 撑满并触发服务异常;先圈定关键文件,再按需扩充。

易错点

  • auditctl 加的规则只在内存里,重启后全部丢失,未写 rules.d 会被审计核查判为不达标。
  • -p 参数漏写时默认监控范围有限,看起来规则在但事件抓不到,验收要真实触发一次再核对日志。
  • 监控系统调用时未限定 arch,32 位与 64 位程序只覆盖一半,容易出现漏记。
  • augenrules 加载后未确认 auditd 状态,丢弃计数(lost/backlog)持续增大说明队列跟不上,规则需要收敛。
  • 把 auditd 日志目录纳入 -w 监控形成自我循环写入,日志量迅速失控。

数据来源与参考

  • man 8 auditctl
  • man 8 augenrules
  • Red Hat 审计规则指南
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌