auditd本身不校验文件哈希,需结合-p wa规则监控关键二进制文件的写入与属性变更,并辅以外部脚本定期比对md5快照,实现行为与状态双校验。

auditd 本身不校验文件哈希,也不直接生成“完整性报告”,它通过记录对关键二进制文件的敏感操作(如写入、属性变更、执行),实现行为级完整性监控。真正有效的方案是聚焦高价值目标、精准配置规则、结合外部校验形成闭环。
只监核心,不扫全盘
不要用通配符或递归监控所有可执行文件——auditd不支持路径通配,盲目扩大范围会导致日志爆炸、性能下降甚至审计服务异常。应优先锁定以下几类:
- 带 setuid 权限的程序:sudo、su、passwd、ping、chsh、newgrp、crontab
- 系统启动与登录关键程序:/sbin/init、/bin/bash、/usr/bin/python3、/usr/sbin/sshd
- 网络与运维常用工具:/usr/bin/curl、/usr/bin/wget、/usr/bin/ssh
可用命令快速识别当前系统全部 setuid 二进制:find /usr/bin /bin -type f -perm -4000 2>/dev/null
监控重点是 -p wa,不是 -p x
文件被篡改最典型的信号不是“被执行”,而是“被写”或“属性被改”。例如:
- cp newbin /usr/bin/sudo → 触发 -p w(写入)
- chmod u+s /tmp/malware → 触发 -p a(属性变更)
- ln -sf /tmp/malware /usr/bin/sudo → 触发 -p a(链接目标变更)
因此规则必须用 -p wa,例如:
-w /usr/bin/sudo -p wa -k binary_attr_sudo
不建议加 -p x 用于完整性目的——它只记录执行,无法反映修改行为,且日志量极大。
补充执行路径监控,防绕过
攻击者常把恶意二进制释放到临时目录直接运行,避开对原文件的修改。需额外添加通用规则捕获非常规路径执行:
- -a always,exit -F path=/tmp -F perm=x -k exec_in_tmp
- -a always,exit -F path=/dev/shm -F perm=x -k exec_in_shm
- -a always,exit -F path=/var/tmp -F perm=x -k exec_in_vartmp
这类规则能第一时间发现“新二进制首次运行”,比等它替换 /usr/bin 更早预警。
行为+状态双校验才可靠
auditd 告诉你“谁在什么时候动了文件”,但不告诉你“动完后内容是否变了”。必须配合外部哈希校验:
- 首次采集快照:find /usr/bin /bin /sbin -type f -perm /111 2>/dev/null | xargs md5sum > /var/log/bin-md5.snap
- 编写比对脚本,定期(如每小时)执行并记录差异到日志
- 搭配 AIDE 做周期性深度校验(含权限、inode、SHA512 等),弥补 auditd 的静态盲区
auditd 是实时探头,AIDE 和哈希脚本是定期体检——二者缺一不可。










