审计规则是干什么的
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 撑满并触发服务异常;先圈定关键文件,再按需扩充。