监控/etc/shadow权限变动需配置auditd的-p a规则捕获attr调用,验证enabled=1、audit模块加载及auditd运行状态,通过ausearch提取auid和comm字段识别操作者与命令,并配合脚本或audispd实现实时告警。

监控 /etc/shadow 的权限变动(如 chmod、chown),核心是捕获 attr 类系统调用,而非读写操作;auditd 本身不发告警,需配合脚本或 audispd 实时解析日志并触发响应动作。
一、配置精准的权限变更监控规则
权限变动对应文件属性(attribute)修改,必须使用 -p a(a 表示 attribute),不能只写 -p r 或 -p w:
- 临时测试规则:
sudo auditctl -w /etc/shadow -p a -k shadow_attr_change - 永久生效:新建
/etc/audit/rules.d/20-shadow-attr.rules,内容为:
-w /etc/shadow -p a -k shadow_attr_change - 加载规则:
sudo augenrules --load(不是 restart auditd) - 验证是否加载:
sudo auditctl -l | grep shadow_attr_change,有输出即成功
二、确认规则真正生效的关键检查项
很多规则“看似加了却没记录”,往往卡在这几步:
- 运行
sudo auditctl -s | grep enabled,确保enabled值为 1(0 表示审计被禁用) - 检查内核模块:
lsmod | grep audit,无输出需执行sudo modprobe audit - 确认 auditd 服务状态:
systemctl status auditd必须显示 active (running) -
/etc/shadow是真实文件(非软链接),规则中路径必须与ls -i /etc/shadow输出一致
三、实时捕获权限变更事件并提取关键字段
权限变动会触发 SYSCALL 和 ATTRIB 两类事件,推荐用以下命令快速定位:
- 查最近 10 分钟所有属性变更:
sudo ausearch -k shadow_attr_change -m SYSCALL,ATTRIB -i --start 10 minutes ago - 只看是谁改的(原始登录用户):
sudo ausearch -k shadow_attr_change -m SYSCALL -i | grep "auid=" - 看具体执行命令:
sudo ausearch -k shadow_attr_change -m SYSCALL -i | grep "comm="(如comm="chmod"或comm="chown") - 若需过滤非 root 操作,可加
-F auid!=0到规则中,更早拦截高危行为
四、实现即时告警的轻量方案
auditd 不自带告警,但可用极简脚本监听日志流并触发动作:
- 用
ausearch --raw -m SYSCALL -k shadow_attr_change | aureport -f -i持续解析新事件 - 写一个循环脚本,每 5 秒执行一次
ausearch -k shadow_attr_change -m SYSCALL --start recent -i,发现新条目就echo到 syslog 或调用mail发邮件 - 进阶做法:配置
audispd插件,将匹配事件转发给自定义程序,自动执行logger、systemctl restart sshd或调用 API 上报 SOC 平台











