应监控 /etc/shadow 的写入与属性变更(-p wa),规则为 -w /etc/shadow -p wa -k passwd_change,需持久化至 /etc/audit/rules.d/passwd.rules 并重载;查日志用 ausearch -k passwd_change -i,重点看 exe、auid 和 success=yes。

要监控 Linux 系统中特权账号(如 root 或其他具有 sudo 权限的用户)的密码修改行为,核心是捕获对 /etc/shadow 文件的写入操作——因为所有密码变更(passwd、chpasswd、usermod -p 等)最终都会触发对该文件的 write 或 attr 系统调用。auditd 在内核层监听这些动作,能精准记录“谁、何时、用什么命令”改了密码。
必须监控 /etc/shadow 的写入与属性变更
只监控内容写入(-p w)不够:攻击者可能先 chmod 600 /etc/shadow 隐藏修改痕迹,或用 chage 设置密码过期,这类操作只改文件属性(-p a),不改内容。所以规则必须包含 -p wa:
-w /etc/shadow -p wa -k passwd_change
规则要打统一关键词并持久化
关键词 passwd_change 是后续检索日志的唯一高效入口。该规则不能仅用 auditctl -w 临时添加(重启即失效),必须存入规则文件:
sudo tee /etc/audit/rules.d/passwd.rules <p>验证是否生效: </p><pre class="brush:bash;toolbar:false;">sudo auditctl -l | grep passwd_change
应输出完整规则行。
查密码修改日志要结合 -i 和关键字段
执行 sudo passwd root 后,立即检索:
sudo ausearch -k passwd_change --start recent -i
重点关注:
-
exe:实际执行程序路径(如/usr/bin/passwd) -
comm:命令名(如passwd) -
uid:当前有效 UID(提权后为 0) -
auid:原始登录用户 ID(防su/sudo混淆,比如auid=1001表示最初由普通用户登录后提权) -
cwd:操作时所在目录(辅助判断上下文)
若看到 success=yes 且 exe="/usr/bin/passwd",基本可确认是一次真实密码修改。
补充建议提升溯源可靠性
- 确保 PAM 正确设置
pam_loginuid.so:检查/etc/pam.d/sshd和/etc/pam.d/login是否含session required pam_loginuid.so,否则auid可能为4294967295(未登录态)。 - 可同步加一条规则监控
passwd命令本身被执行:-w /usr/bin/passwd -p x -k passwd_exec
这能捕获绕过 shadow 直接调用二进制的行为(如某些容器环境),与 shadow 规则形成交叉验证。
不复杂但容易忽略











