应聚焦关键敏感二进制,用精准路径配合-p a监控属性变更、-p x监控异常执行,辅以临时目录执行捕获,通过auditd规则永久化实现高效完整性防护。

直接监控“所有二进制执行文件”的修改,不可行也不推荐——auditd不支持通配符路径(如 /usr/bin/*)或递归自动发现,且盲目监控海量文件会导致规则爆炸、日志泛滥、性能下降甚至服务异常。
真正可行且生产环境常用的做法是:聚焦关键敏感二进制,用精准路径 + 属性变更(-p a)+ 执行权限(-p x)组合监控其完整性。因为攻击者提权或持久化时,最常篡改的是那些带 setuid 或被广泛信任的程序(如 sudo、su、passwd、ping),而非所有可执行文件。
以下是具体落地方式:
明确监控目标:只盯住高价值敏感二进制
这些文件一旦被替换或属性被篡改(如 chmod +s 加 setuid),就极可能用于提权。典型包括:
-
/usr/bin/sudo -
/bin/su -
/usr/bin/passwd -
/bin/ping -
/usr/bin/chsh -
/usr/bin/newgrp -
/usr/bin/crontab
✅ 提示:用
find /usr/bin /bin -type f -perm -4000 2>/dev/null可快速列出当前系统所有 setuid 二进制,它们是优先级最高的监控对象。
使用 -p a 监控属性变更(比 -p w 更有效)
修改二进制文件本身(如 cp malicious /usr/bin/sudo)会触发写操作(-p w),但攻击者更常走“捷径”:
-
chmod u+s /tmp/malware→ 赋予普通文件 setuid 权限 -
chown root:root /tmp/malware→ 改属主以伪装 -
ln -sf /tmp/malware /usr/bin/sudo→ 软链接劫持(需配合监控 inode)
这些行为全部属于属性变更(-p a),而 -p w 完全捕获不到。因此核心规则应为:
sudo auditctl -w /usr/bin/sudo -p a -k binary_attr_sudo sudo auditctl -w /bin/su -p a -k binary_attr_su sudo auditctl -w /usr/bin/passwd -p a -k binary_attr_passwd
补充 -p x 监控异常执行(识别“新二进制首次运行”)
有些后门二进制不会替换原有文件,而是释放到临时目录(如 /tmp、/dev/shm)并直接执行。此时应加一条通用规则捕获非常规路径的执行行为:
sudo auditctl -a always,exit -F path=/tmp -F perm=x -k exec_in_tmp sudo auditctl -a always,exit -F path=/dev/shm -F perm=x -k exec_in_shm sudo auditctl -a always,exit -F path=/var/tmp -F perm=x -k exec_in_vartmp
这类规则能第一时间发现“非标准位置执行”,比等它改写 /usr/bin 更早预警。
永久化配置与验证
将上述规则写入 /etc/audit/rules.d/30-binary-integrity.rules:
-w /usr/bin/sudo -p a -k binary_attr_sudo -w /bin/su -p a -k binary_attr_su -w /usr/bin/passwd -p a -k binary_attr_passwd -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
然后加载:
sudo augenrules --load sudo systemctl restart auditd
验证是否生效:
sudo auditctl -l | grep -E "(binary_attr|exec_in_)" sudo ausearch -k binary_attr_sudo -i --start today | head -5
不复杂但容易忽略

















