auditd通过监控setuid/setgid等系统调用、关键配置文件写入及特权程序执行实现精准权限变更记录,需结合上下文过滤与日志防篡改措施确保有效溯源。

auditd 能精准记录权限变更行为,关键在于捕获 setuid/setgid 类系统调用和敏感文件写入事件,而非依赖 chmod 命令本身——因为攻击者可能绕过命令直接调用内核接口。
必须监控的权限变更入口点
权限提升或滥用往往通过以下路径发生,需逐层布防:
-
系统调用层:监控 setuid、setgid、setreuid、setregid 等调用,它们是提权的直接信号
规则示例:-a always,exit -F arch=b64 -S setuid,setgid -k privilege_escalation -
关键配置文件层:/etc/sudoers、/etc/passwd、/etc/group、/etc/shadow 的写操作
规则示例:-w /etc/sudoers -p wa -k sudoers_mod -
特权程序执行层:/usr/bin/sudo、/bin/su、/usr/bin/pkexec 的调用行为
规则示例:-a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec
区分正常运维与异常提权的关键细节
仅记录“谁改了 sudoers”不够,要判断是否可疑,需结合上下文字段过滤:
- 用
-F uid!=0排除 root 的常规维护(若需保留 root 操作,改用-F auid!=0区分登录会话) - 加
-F key=priv_change统一标签,便于后续用ausearch -k priv_change快速聚合 - 对 /etc/passwd 写操作,可追加
-F gid!=0过滤非 root 组修改,缩小异常范围
日志留存与防篡改保障
权限变更日志一旦被删,溯源即失效。必须启用两项基础防护:
- 在
/etc/audit/auditd.conf中设置:max_log_file_action = keep_logs(防止日志被覆盖)flush = sync(强制同步写入磁盘,降低掉电丢日志风险) - 启用远程日志转发(如 rsyslog 或 auditd 自带的 audispd 插件),将
type=SYSCALL事件实时发往独立日志服务器
快速验证权限变更是否被记录
测试不是跑个 chmod 就完事,要模拟真实提权路径:
- 普通用户执行:
cp /bin/bash /tmp/shell; chmod u+s /tmp/shell→ 触发 setuid 系统调用 - 编辑 sudoers:
sudo visudo→ 触发 /etc/sudoers 写事件 + sudo 执行事件 - 检查结果:
ausearch -m SYSCALL -i | grep -E "(setuid|sudoers|chmod)"











