应监控euid≠uid的execve调用、特权命令执行及权限结构篡改三类提权路径,规则写入/etc/audit/rules.d/10-privilege.rules后运行augenrules --load加载,并用ausearch -k priv_escalation -i验证日志。

要监控管理员的提权行为,关键不是盯住“谁是管理员”,而是捕获所有能绕过普通权限限制的动作——比如切换用户、执行特权命令、修改权限结构等。auditd 的优势在于它能深入内核系统调用层,不依赖进程名或用户身份判断,而是基于真实发生的动作做记录。
聚焦三类典型提权路径
提权行为通常表现为以下三类系统调用或文件操作,规则需覆盖这些核心节点:
-
用户身份切换:su、sudo、login 等命令本质是调用
setuid、setgid或execve并提升有效 UID(euid)。监控euid != uid的 execve 调用最可靠,不受命令别名或脚本包装干扰 -
特权命令执行:/usr/bin/sudo、/bin/su、/usr/bin/passwd 等二进制文件被执行时,即使由普通用户发起,也代表提权意图。直接监控其
-p x(执行权限)比监控进程名更准确 - 权限结构篡改:修改 /etc/sudoers、/etc/shadow、/etc/group 或添加新用户(useradd/groupadd),都会直接影响提权能力。这些操作必须触发写(w)或属性变更(a)事件
推荐使用的永久规则(写入 /etc/audit/rules.d/10-privilege.rules)
以下规则经生产环境验证,兼顾覆盖性与性能,避免日志泛滥:
宝塔Linux面板11.8.1为官网当前正式版,新增AI建站能力并经过宝塔网站工程师深度调教,开放自定义AI功能API,同时对WAF进行界面重构和深度优化,提升拦截能力与运维效率。
-
-a always,exit -F arch=b64 -S execve -F euid!=uid -k priv_escalation
捕获所有“有效 UID 不等于实际 UID”的命令执行(如 sudo ls、su -),64 位系统必加-F arch=b64;若服务器兼容 32 位程序,再补一条-F arch=b32 -
-w /usr/bin/sudo -p x -k privileged_cmd
监控 sudo 命令本身被执行,不依赖参数解析,稳定可靠 -
-w /etc/sudoers -p wa -k sudoers_change
任何对 sudo 配置的写入或权限修改都会被标记,包括 vim 编辑、cp 覆盖、chmod 修改 -
-a always,exit -F arch=b64 -S useradd,groupadd -k account_mgmt
直接捕获新建账号行为,比监控 /etc/passwd 更前置(因为 useradd 内部才写文件)
加载规则并确认生效
规则写入后不能直接重启服务,必须走标准流程:
- 运行
sudo augenrules --load,它会合并所有.rules文件并重载到内核 - 检查是否加载成功:
sudo auditctl -l | grep priv_escalation,应看到对应规则行 - 手动触发一次提权动作,例如
sudo whoami,然后立即查日志:sudo ausearch -k priv_escalation -i | tail -2,输出中应包含执行用户、终端、完整命令、时间戳和系统调用上下文
日常查看与告警建议
提权事件日志默认写入 /var/log/audit/audit.log,但它是二进制混合格式,不可直接 cat:
- 用
ausearch -k priv_escalation -i --start today查今日所有提权尝试,-i参数可将 UID、系统调用号等自动翻译为可读名称 - 用
aureport -m -ts recent快速看最近的认证相关事件(含 su/sudo 登录失败) - 如需实时告警,可用简单脚本每分钟执行
ausearch -k priv_escalation -ts $(date -d '1 minute ago' '+%m/%d/%Y %H:%M:%S') | wc -l,结果大于 0 就发邮件或 webhook










