核心是捕获euid≠uid的执行、特权二进制调用、敏感文件变更三类不可绕过行为;通过auditd规则监控UID跃迁、/usr/bin/sudo等文件执行及/etc/sudoers等配置修改,并固化锁定规则防篡改。

审计未经授权的特权提权行为,核心是捕获“真实发生的权限跃迁动作”,而不是依赖用户身份或命令名称。auditd 从内核系统调用层切入,能稳定识别 euid ≠ uid 的执行、关键二进制调用、敏感文件变更这三类本质行为——它们绕不开、藏不住、改不了。
捕获所有有效 UID 变化的执行动作
这是最根本的提权信号:只要进程的有效用户 ID(euid)不等于实际用户 ID(uid),就代表发生了权限提升。它覆盖 sudo、su、ssh -l root、自定义 setuid 程序等全部路径,不受别名、脚本包装或 PATH 劫持干扰。
- 64 位系统添加规则:-a always,exit -F arch=b64 -S execve -F euid!=uid -k priv_escalation
- 兼容 32 位程序时补一条:-a always,exit -F arch=b32 -S execve -F euid!=uid -k priv_escalation
- 规则生效后,sudo whoami 或 su -c id 都会触发日志,记录 auid(原始登录用户)、uid/euid、exe 路径及完整命令行
盯住特权命令二进制文件被执行的瞬间
不解析参数、不依赖进程名,只监控 /usr/bin/sudo、/bin/su、/usr/bin/passwd 等文件被真正执行(-p x)的时刻。哪怕运行的是 sudo --help 或软链接指向的副本,只要触发了执行权限,就会被捕获。
- -w /usr/bin/sudo -p x -k privileged_cmd
- -w /bin/su -p x -k privileged_cmd
- -w /usr/bin/passwd -p x -k privileged_cmd
- 避免用 -F path= 匹配 execve,因攻击者可复制二进制到任意路径;-w + -p x 基于 inode,更可靠
锁定敏感配置文件的写入与属性变更
提权前必改配置。重点不是“谁有权限”,而是“谁在非预期时间修改了什么”。对 /etc/sudoers、/etc/shadow、/etc/passwd 等文件,同时监控写(w)和属性变更(a),覆盖 vim 编辑、chmod、chown、cp 覆盖等全部手法。
- -w /etc/sudoers -p wa -k sudoers_change
- -w /etc/shadow -p wa -F uid!=0 -k shadow_modification(仅记录非 root 用户写入)
- -a always,exit -F arch=b64 -S useradd,groupadd -k account_mgmt(比监控 /etc/passwd 更早发现新建账号)
- 对 SSH 后门风险,加:-w /etc/ssh/sshd_config -p wa -k sshd_config_change
确保规则持久化且防篡改
临时规则重启即失效,root 用户也可手动清除。生产环境必须固化并锁定:
- 将上述规则分别存为 /etc/audit/rules.d/10-privilege.rules 和 /etc/audit/rules.d/20-sensitive-files.rules
- 执行 sudo augenrules --load 合并加载(RHEL/CentOS)或 sudo systemctl restart auditd(Debian/Ubuntu)
- 启用锁定模式:sudo auditctl -e 2,此后连 root 也无法 stop/clear/修改规则,除非重启系统
- 验证是否生效:sudo auditctl -l | grep priv_escalation 应有输出;再执行 sudo ausearch -k priv_escalation -i | tail -2 查看实时日志结构


















