auditd需通过-w /etc/passwd -p wa -k account_mod等四条规则监控核心账户文件的写入与属性变更,持久化存于/etc/audit/rules.d/account.rules并执行augenrules --load生效,配合ausearch和aureport按关键词account_mod追溯操作详情。

要让Auditd完整记录所有针对系统账户数据库的原子级修改操作,关键在于精准覆盖/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow这四类核心文件,并确保规则在内核层实时捕获每次写入与属性变更。这些操作本身(如useradd、passwd、usermod)最终都会触发对这些文件的write或attr系统调用,Auditd正是通过监听这些底层调用实现“原子”记录。
监控核心账户文件的最小必要规则
每条规则需使用-w(watch)配合-p wa(写入+属性变更),并打上统一关键词便于后续检索:
-w /etc/passwd -p wa -k account_mod-w /etc/shadow -p wa -k account_mod-w /etc/group -p wa -k account_mod-w /etc/gshadow -p wa -k account_mod
注意:不加r(读)和x(执行)——账户数据库只在修改时才需审计,读取行为日志量大且安全价值低;a(attribute change)必须保留,因为密码过期、锁账号等操作常通过chage或usermod -L修改文件属性而非内容。
确保规则永久生效的操作步骤
临时用auditctl -w添加的规则在重启后会丢失。生产环境必须走持久化流程:
- 新建规则文件:
sudo tee /etc/audit/rules.d/account.rules -w /etc/passwd -p wa -k account_mod<br>-w /etc/shadow -p wa -k account_mod<br>-w /etc/group -p wa -k account_mod<br>-w /etc/gshadow -p wa -k account_mod<br>EOF
- 合并并重载规则:
sudo augenrules --load - 验证是否加载成功:
sudo auditctl -l | grep account_mod应显示全部四条
快速验证与定位修改行为
规则生效后,任何账户操作(例如sudo useradd testuser)都会生成可追溯的日志:
- 按关键词搜索:
sudo ausearch -k account_mod --start recent - 查看完整上下文:
sudo aureport -k account_mod -i --start recent(-i自动解析UID/GID为用户名) - 重点关注字段:
exe(执行命令路径)、comm(命令名)、uid(实际操作者)、auid(原始登录用户,防su切换混淆)
例如一条典型日志会显示:exe="/usr/sbin/useradd"、uid=0、auid=1001(说明是root执行,但最初由UID 1001用户登录后提权)。
补充建议:关联登录行为增强溯源能力
单看文件修改还不够,建议同步开启登录审计,把“谁在什么时候登录、以什么方式提权、再修改了账户”串成完整链条:
- 监控登录相关文件:
-w /var/log/wtmp -p wa -k login_mod、-w /var/log/btmp -p wa -k failed_login - 启用PAM审计(可选):在
/etc/pam.d/sshd和/etc/pam.d/system-auth中加入session required pam_audit.so,能捕获更细粒度的认证事件
这样当发现/etc/shadow被修改时,就能立刻反查同一时间段内是否有异常登录、sudo提权或su切换记录,真正实现行为闭环。











