auditd通过监控write、open、rename等系统调用精准捕获/etc/passwd修改行为,而非介入内核原子性机制;推荐规则为-w /etc/passwd -p wa -k passwd_write,并同步监控/etc/shadow,避免使用-p rwxa以减少冗余日志。

auditd 本身不直接监控“原子性写入”这一底层内核行为,它监控的是**系统调用层面的文件操作事件**。Linux 中对 /etc/passwd 的修改(如通过 useradd、passwd 或编辑器保存)最终会触发 write、open、rename 等系统调用,而这些正是 auditd 能可靠捕获的。所谓“原子性”是内核保证的写入语义(例如覆盖写或重命名替换),auditd 不需也不应介入该机制,只需精准捕获触发它的关键动作即可。
监控 /etc/passwd 的核心规则(推荐永久配置)
将以下规则写入 /etc/audit/rules.d/custom.rules,再执行 sudo augenrules --load 加载:
-
-w /etc/passwd -p wa -k passwd_write:监控所有写入(w)和属性变更(a),覆盖新增用户、改密码、锁账户等场景 -
-w /etc/shadow -p wa -k shadow_write:必须同步监控,因为密码哈希实际存于此,且多数工具会同时更新两者 -
-a always,exit -F path=/etc/passwd -F perm=w -F key=passwd_write:补充规则,确保捕获任何以写模式打开该文件的行为(更细粒度)
为什么不用 -p rwxa?
全权限监控(rwxa)会产生大量无关日志,比如 ls -l /etc/passwd 触发的 r 事件。聚焦 w 和 a 即可精准定位写入与权限/属主变更——这才是密码库被篡改的关键信号。
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
验证与排查真实写入事件
执行一次修改后(如 sudo usermod -p '$6$...' testuser),用以下命令快速定位:
-
sudo ausearch -k passwd_write -i | grep "name=\"/etc/passwd\"":筛选出明确操作该文件的记录 -
sudo ausearch -m SYSCALL -sc write -f /etc/passwd -i:直接查write()系统调用,确认是否发生数据写入 - 重点看
syscall=字段(如open、write、rename)和comm=字段(如usermod、vi、sed)
注意权限与日志完整性
确保审计日志本身受保护:
-
sudo chmod 600 /var/log/audit/audit.log:防止未授权读取审计痕迹 - 检查
/etc/audit/auditd.conf中flush = INCREMENTAL和freq = 20是否启用,避免高负载下日志丢失 - 若需强一致性,可临时设为
flush = DATA(牺牲性能换可靠性)










