要让 auditd 真正捕获非法权限提升事件,关键不是监控“谁是管理员”,而是盯住系统内核里真实发生的提权动作——比如有效用户id(euid)突然变了、sudo 二进制被调用、/etc/sudoers 被修改。这些行为绕不开内核审计层,也躲不过 auditd 的规则。捕获 euid ≠ uid 的 execve 调用这是最可靠的方式,覆盖 sudo、su、ssh -l root、pkexec 等所有导致身份切换的执行行为,不依赖命令名或脚本包装。 添加规则:-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 该规则记录的是原始登录用户(auid)、实际执行身份(uid/euid)、执行路径和命令行参数,能精准溯源“谁在什么会话里干了什么”盯住特权命令二进制文件的执行直接监控 /usr/bin/sudo、/bin/su、/usr/bin/passwd 等文件被“执行”(x 权限触发)的瞬间,比解析参数更稳定,防绕过。

要让 auditd 真正捕获非法权限提升事件,关键不是监控“谁是管理员”,而是盯住系统内核里真实发生的提权动作——比如有效用户ID(euid)突然变了、sudo 二进制被调用、/etc/sudoers 被修改。这些行为绕不开内核审计层,也躲不过 auditd 的规则。
捕获 euid ≠ uid 的 execve 调用
这是最可靠的方式,覆盖 sudo、su、ssh -l root、pkexec 等所有导致身份切换的执行行为,不依赖命令名或脚本包装。
- 添加规则:-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
- 该规则记录的是原始登录用户(auid)、实际执行身份(uid/euid)、执行路径和命令行参数,能精准溯源“谁在什么会话里干了什么”
盯住特权命令二进制文件的执行
直接监控 /usr/bin/sudo、/bin/su、/usr/bin/passwd 等文件被“执行”(x 权限触发)的瞬间,比解析参数更稳定,防绕过。
- 添加规则:-w /usr/bin/sudo -p x -k sudo_exec
- 同理加:-w /bin/su -p x -k su_exec、-w /usr/bin/passwd -p x -k passwd_exec
- -p x 表示只捕获“执行”动作,避免被 --help、空参数或别名干扰
锁定关键配置文件的写入与属性变更
非法提权往往先改配置:加 sudo 权限、新增 root 用户、篡改 sshd_config 开放后门。这些必须实时捕获。
- /etc/sudoers 变更:-w /etc/sudoers -p wa -k sudoers_change
- /etc/shadow 写入:-w /etc/shadow -p wa -k shadow_modification
- 新建账号行为:-a always,exit -F arch=b64 -S useradd,groupadd -k account_mgmt
- -p wa 同时监控“写入”和“属性更改”,覆盖 vim 编辑、chmod、chown、cp 覆盖等全部手法
确保规则持久化并验证可用性
临时规则重启即失效,且日志若没 auid 或时间不同步,就无法闭环溯源。
- 将上述规则分别存为:/etc/audit/rules.d/10-privilege.rules 和 /etc/audit/rules.d/20-sensitive-files.rules
- RHEL/CentOS 执行:sudo augenrules --load;Debian/Ubuntu 执行:sudo systemctl restart auditd
- 验证是否生效:sudo auditctl -l | grep priv_escalation
- 手动触发一次 su 或 sudo 命令,再运行:sudo ausearch -k priv_escalation -m EXECVE --start recent | aureport -i -f,确认能输出完整上下文











