核心是捕获绕过常规访问控制的权限提升行为,需精准拦截execve(euid≠uid)、setuid/setgid/capset等关键系统调用,并持久化规则至/etc/audit/rules.d/、启用auditctl -e 2锁定防篡改。

配置 Auditd 审计关键进程的权限提升行为,核心是捕获攻击者绕过常规访问控制、获取更高执行权限的真实动作,而不是泛泛记录所有命令。重点在于识别“谁在何时以什么方式尝试改变自身或他人的权限上下文”,并确保这些事件不可绕过、不可删改。
聚焦提权路径的关键系统调用
权限提升往往通过特定系统调用实现,auditd 必须在内核入口/出口处精准拦截,避免依赖用户态日志(如 sudo 日志)——后者可被覆盖或跳过:
-
execve + euid != uid:捕获 setuid 程序执行(如 /usr/bin/sudo、/bin/su),规则示例:
-a always,exit -F arch=b64 -S execve -F euid!=uid -k setuid_exec -
setuid/setgid/capset:直接修改进程凭证或能力集,规则示例:
-a always,exit -F arch=b64 -S setuid,setgid,setreuid,setregid,capset -k cred_change -
ptrace + PTRACE_ATTACH:用于调试注入、劫持高权限进程,规则示例:
-a always,exit -F arch=b64 -S ptrace -F a1&0x10 -k process_inject(a1&0x10 匹配 PTRACE_ATTACH)
监控特权程序与敏感配置文件
权限提升常依赖合法工具链被滥用或配置被篡改,需绑定进程路径与文件变更:
-
sudo/su 二进制执行:不只看命令名,而是监控实际执行行为,防止软链接或 PATH 劫持:
-a always,exit -F arch=b64 -S execve -F path=/usr/bin/sudo -k sudo_exec
-a always,exit -F arch=b64 -S execve -F path=/bin/su -k su_exec -
/etc/sudoers 及其包含目录:任何写入或属性变更都可能开启提权通道:
-w /etc/sudoers -p wa -k sudoers_mod
-w /etc/sudoers.d/ -p wa -k sudoers_d_mod -
/etc/passwd 和 /etc/shadow 写操作:仅监控非 root 用户的写入,排除系统初始化等合法场景:
-w /etc/passwd -p w -F uid!=0 -k passwd_write
-w /etc/shadow -p w -F uid!=0 -k shadow_write
确保规则持久化与防篡改
临时规则(auditctl 添加)重启即失效,且 root 可手动清除;生产环境必须走持久化+锁定流程:
- 将上述规则保存为 /etc/audit/rules.d/99-privilege.rules,每行一条,不带
auditctl前缀 - 运行 sudo augenrules --load 合并并加载全部 .rules 文件
- 启用审计锁定模式:sudo auditctl -e 2,此后即使 root 也无法 stop、clear 或修改规则,除非重启系统
- 设置日志目录权限:chown root:root /var/log/audit/ && chmod 700 /var/log/audit/,对日志文件加追加锁:chattr +a /var/log/audit/audit.log
快速验证与日常检索
配置后必须主动触发并验证是否捕获,不能等待真实事件:
- 执行一次 sudo 命令:sudo ls /root,再查:
ausearch -k sudo_exec -i | head -3 - 查看今日所有提权相关事件:
ausearch --start today -k setuid_exec -k cred_change -k sudo_exec | aureport -f -i - 定位某用户(UID 1001)是否尝试修改凭证:
ausearch -ui 1001 -m SYSCALL -f /etc/sudoers











