最可靠的方式是捕获 euid ≠ uid 的 execve 系统调用,覆盖 sudo、su、ssh -l root 等所有提权行为;同时监控特权命令执行和关键配置文件的写入与属性变更,并确保规则持久化及日志可溯源。

监控用户提权操作,关键不是看“谁是管理员”,而是捕获所有绕过普通权限限制的真实动作——比如切换身份、执行特权命令、篡改权限配置。auditd 的能力在于深入内核系统调用层,不依赖进程名或 shell 命令,只认真实发生的系统行为。
捕获 euid ≠ uid 的 execve 调用
这是最可靠的方式,能覆盖 sudo、su、ssh -l root 等所有导致有效 UID 变化的执行行为,不受别名、脚本包装或自定义路径干扰。
- 添加规则:-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)”、“执行了什么(exe/cmdline)”,而非“运行了哪个命令”
监控特权命令二进制文件执行
直接盯住 /usr/bin/sudo、/bin/su、/usr/bin/passwd 等文件被调用的瞬间,比解析参数更稳定,避免被 --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
- -p x 表示只监控“执行权限触发”,不关心读或写,精准对应提权意图
锁定权限配置文件的写入与属性变更
攻击者提权前常修改 /etc/sudoers、/etc/shadow、/etc/passwd 或新建账号,这些操作必须被实时捕获。
- /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 覆盖等全部手法
确保规则持久化并验证日志可用性
临时规则重启后失效,必须写入 rules.d 目录并走标准加载流程;同时要确认 auid 字段完整,才能准确溯源原始用户。
- 将上述规则分别存为 /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 -l | grep priv_escalation
- 手动触发一次 sudo whoami,再运行 sudo ausearch -k priv_escalation -i | tail -3,确认输出含 auid、exe、cmdline 和时间戳











