核心是监控/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/var/log/wtmp、/var/log/btmp六类文件的写与属性变更,并添加execve规则捕获useradd/userdel/usermod等命令及setuid提权行为,所有规则须持久化至/etc/audit/rules.d/并执行augenrules --load生效。

要审计 Linux 系统的账号安全变更,核心是用 auditd 捕获对账号相关文件和命令的真实访问行为,而不是依赖日志轮转或用户命令历史。关键在于精准监控几个高敏感目标:用户信息、密码哈希、组配置、登录记录等,并打上统一标签便于后续关联分析。
聚焦账号类关键路径,写入持久化规则
所有规则必须存入 /etc/audit/rules.d/ 目录下以 .rules 结尾的文件(如 99-account.rules),不能直接写进 /etc/audit/audit.rules,否则重启后失效。
-
-w /etc/passwd -p wa -k account_passwd:监控用户条目增删改(写)及权限/属主变更(属性) -
-w /etc/shadow -p wa -k account_shadow:监控密码哈希文件写入(高敏感,禁止非 root 写) -
-w /etc/group -p wa -k account_group:监控用户组定义变动 -
-w /etc/gshadow -p wa -k account_gshadow:监控组密码文件(若启用) -
-w /var/log/wtmp -p wa -k login_history:监控成功登录记录追加 -
-w /var/log/btmp -p wa -k failed_login:监控失败登录尝试(常被暴力破解利用)
捕获账号操作背后的实际命令
仅监控文件不够,还需知道“谁、用什么命令”改了账号。需添加系统调用规则,尤其关注 execve 和权限提升动作:
-a always,exit -F arch=b64 -S execve -F path=/usr/sbin/useradd -k account_create-a always,exit -F arch=b64 -S execve -F path=/usr/sbin/userdel -k account_delete-a always,exit -F arch=b64 -S execve -F path=/usr/sbin/usermod -k account_modify-
-a always,exit -F arch=b64 -S execve -F euid!=uid -k setuid_exec:捕获所有 setuid 提权行为(如 sudo、su 调用)
注意:-F arch=b64 必须显式指定(x86_64 系统),否则 execve 参数(如命令行参数)无法完整记录,查不到具体执行了哪个 useradd -u 还是 -g。
加载规则并验证是否真正生效
写完规则文件后,不能只重启服务——CentOS/RHEL 7+ 或 Ubuntu 20.04+ 必须执行:
-
sudo augenrules --load:合并所有.rules文件,生成/etc/audit/audit.rules,再调用auditctl -R加载进内核 -
sudo auditctl -l | grep account:确认规则已出现在运行时列表中 -
sudo ausearch -k account_passwd -i --start today | head -5:测试能否查到带该标签的事件(-i 自动解析 UID/GID/路径)
快速定位异常账号变更行为
不用翻原始日志,用 ausearch 按语义检索:
- 查所有账号创建操作:
ausearch -k account_create -m execve -i - 查非 root 用户修改 shadow:
ausearch -k account_shadow -F uid!=0 -m SYSCALL -i - 查最近一小时内所有账号相关变更:
ausearch -k account_passwd -k account_shadow -k account_group --start 1h -i - 查失败的账号操作(如权限拒绝):
ausearch -k account_create -F exit=-1 -i(需规则中已包含 -F exit=-1 才能捕获)











