必须使用-a always,exit系统调用规则监控unlink/unlinkat/rmdir/rename/renameat等删除相关调用,并指定arch=b64和b32、dir=/etc及key=etc_deletion,配合auditd服务运行与augenrules加载方可有效审计关键配置文件删除操作。

要审计关键系统配置文件的删除操作,不能只依赖 -w 文件监控规则,因为删除动作本质是系统调用(如 unlink, unlinkat, rmdir, rename, renameat),而非对目标文件本身的写或属性变更。直接监控 /etc/passwd 这类路径的 -p wa 规则,捕获不到删除行为——它只在文件被打开写入或 chmod/chown 时触发。
必须使用 -a always,exit 类型的系统调用规则,并精确限定架构、调用类型和目标路径上下文。
确保 auditd 正常运行并持久化支持
服务未运行或规则未加载,一切配置都无效。
- 检查状态:
sudo systemctl status auditd→ 必须显示active (running) - 若未启用开机自启:
sudo systemctl enable auditd - 确认规则加载机制可用:
ls /etc/audit/rules.d/*.rules应存在且文件名以.rules结尾
针对关键配置文件目录部署删除监控规则
不要逐个文件写规则(如 -w /etc/passwd -p wa),而应监控其所在目录下所有可能引发“消失”的系统调用。推荐覆盖 /etc 目录层级:
向 /etc/audit/rules.d/etc-deletion.rules 写入以下内容:
-a always,exit -F arch=b64 -S unlink,unlinkat,rmdir,rename,renameat -F dir=/etc -F key=etc_deletion -a always,exit -F arch=b32 -S unlink,unlinkat,rmdir,rename,renameat -F dir=/etc -F key=etc_deletion
说明:
- 同时指定
b64和b32架构,避免 32 位程序(如某些兼容工具)漏审 -
-F dir=/etc表示匹配该目录及其所有子目录下的操作(递归生效) - 五个系统调用覆盖全部删除/移动路径场景:
unlink(删文件)、unlinkat(删文件/目录,含相对路径)、rmdir(删空目录)、rename/renameat(重命名到其他位置或覆盖,等效于“消失”) -
-F key=etc_deletion是统一检索标签,后续查日志只需ausearch -k etc_deletion
保存后执行:
sudo augenrules --load
验证是否进内核:
sudo auditctl -l | grep etc_deletion
验证与排查技巧
手动触发测试:
sudo rm /etc/test.conf(提前创建一个测试文件)-
查看实时匹配事件:
sudo ausearch -k etc_deletion -i | tail -n 20
输出中会明确显示:
-
syscall=263(对应unlinkat) -
cwd="/etc"(当前工作目录) -
exe="/bin/rm"(执行程序) -
uid=0 auid=1000(实际用户与登录会话用户) -
key="etc_deletion"(确认标签命中)
-
-
若无日志,常见原因:
- 服务没运行或规则未
augenrules --load -
/etc是真实目录(非 bind mount 或 tmpfs),auditd 不接受虚拟路径 - 没有指定
-F arch=,64 位系统下缺arch=b64将完全不匹配
- 服务没运行或规则未
补充建议:缩小范围提升精准度
若只想监控制定几个文件(如仅 /etc/shadow, /etc/sudoers),可改用更细粒度规则:
-a always,exit -F arch=b64 -S unlink,unlinkat -F path=/etc/shadow -F key=shadow_deletion -a always,exit -F arch=b64 -S unlink,unlinkat -F path=/etc/sudoers -F key=sudoers_deletion
注意:-F path= 要求路径必须已存在,且只匹配该精确文件(不递归子目录),适合高价值单点防护。
不复杂但容易忽略。











