必须用auditd内核级监控高危文件权限变更,启用-p a并持久化规则;锁定/etc/passwd、/etc/shadow等路径,确认真实inode;用ausearch -k -i检索日志,关注comm、exe、auid等字段;确保auditd运行、规则放rules.d且以.rules结尾。

要监控高危系统文件的权限变更(如 chmod、chown、chgrp),必须用 auditd 捕获内核级属性修改事件,仅靠日志分析或定时检查无法准确回溯“谁在何时改了权限”。关键在于启用 -p a(attribute change)并配合 -w 路径监听,且规则必须持久化。
明确监控目标与路径真实性
优先锁定以下高危文件,它们直接影响认证、授权和系统控制:
-
/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow -
/etc/sudoers及/etc/sudoers.d/目录 -
/root/.ssh/authorized_keys、/etc/ssh/sshd_config
执行 ls -i /etc/shadow 确认真实 inode 路径,不要使用软链接名(如 /etc/shadow-)或错误拼写;路径中不能含空格或特殊字符,否则规则加载失败。
配置精准的权限变更监控规则
权限变更本质是元数据操作,对应系统调用如 chmod、chown、utimensat 等,应使用 -p a 显式捕获。不建议加 -p r(读取),否则日志量激增且无安全价值。
- 临时生效(验证用):
sudo auditctl -w /etc/shadow -p a -k shadow_attr_change - 生产环境必须永久化:写入
/etc/audit/rules.d/shadow.rules文件:-w /etc/shadow -p a -k shadow_attr_change - 加载规则:
sudo augenrules --load - 验证是否生效:
sudo auditctl -l | grep shadow_attr_change
高效检索与识别真实操作者
日志默认为二进制格式,需用 ausearch 结合 -k 标签过滤,并加 -i 还原可读语义:
- 查最近所有权限变更:
sudo ausearch -k shadow_attr_change -i - 重点关注字段:
comm=触发命令(如chmod或chown)
exe=实际执行程序路径(防 PATH 劫持)
auid=原始登录用户 ID(不可被sudo伪造)
uid=当前进程有效用户(判断是否提权)
name=被修改的目标路径 - 若出现
comm="(unknown)",说明进程已退出,需结合ppid(父进程 ID)向上追溯调用链
避免常见失效陷阱
很多规则看似写了却查不到记录,往往卡在这几个环节:
-
auditd服务未运行:
执行sudo systemctl is-active auditd,若非active,需运行sudo systemctl start auditd && sudo systemctl enable auditd - 规则写错位置:
切勿直接编辑/etc/audit/audit.rules(该文件由augenrules自动生成,手动改会被覆盖) - 规则文件命名不规范:
必须以.rules结尾,如auth.rules;文件名中不能有空格或中文 - 虚拟路径无效:
不要对/proc、/sys、/dev使用-w,它们无真实 inode,规则会静默失败











