需监控/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow四文件的写入与属性变更,用auditd添加-w -p wa -k account_mod规则并持久化至/etc/audit/rules.d/,再通过ausearch/aureport按关键词检索日志,结合auid字段溯源真实操作者。

要记录系统中所有用户账号变动日志,核心是捕获对账户数据库文件的写入与属性修改行为。这些操作(如 useradd、passwd、usermod -L)最终都会触发内核对 /etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 的 write 或 attr 系统调用,auditd 正是通过监听这些底层动作实现原子级审计。
必须监控的四类核心账户文件
每条规则使用 -w(文件监控)、-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(属性变更)必须保留,因为锁账号、密码过期等操作常通过 chage 或 usermod -L 修改文件属性而非内容。
让规则永久生效
临时添加的规则在重启后会丢失,生产环境必须走持久化流程:
- 新建规则文件:
sudo tee /etc/audit/rules.d/account.rules <<'EOF',然后粘贴上述四条规则 - 合并并重载:
sudo augenrules --load - 验证是否加载成功:
sudo auditctl -l | grep account_mod,应显示全部四条
快速查证账号变动行为
规则生效后,任意账号操作都会生成可追溯日志:
- 按关键词搜索:
sudo ausearch -k account_mod --start recent - 查看结构化报告:
sudo aureport -k account_mod -i --start recent(-i自动将 UID/GID 解析为用户名) - 重点关注字段:
exe(执行路径)、comm(命令名)、uid(实际执行者)、auid(原始登录用户,防 su/sudo 混淆)
例如一条典型日志会显示:exe="/usr/sbin/useradd"、uid=0、auid=1001,说明是 root 执行,但最初由 UID 1001 用户登录后提权完成。
增强溯源能力的补充建议
单看文件修改不够,建议同步开启登录行为审计:
- 确认 PAM 已加载
pam_loginuid.so,保证auid在首次登录时正确设置 - 若
ausearch -m USER_LOGIN | head -3中auid恒为4294967295,说明未经过标准登录流程(如直接ssh root@host),需检查/etc/pam.d/sshd和/etc/pam.d/login - 可额外添加规则监控
/var/log/auth.log的写入:-w /var/log/auth.log -p wa -k auth_log_mod,辅助交叉验证

















