auditd通过监控/etc/passwd、/etc/group、/etc/shadow、/etc/gshadow的写入与属性变更(-p wa)及useradd/groupadd等命令的execve调用,实现对用户组创建行为的完整审计,规则需持久化至/etc/audit/rules.d/并执行augenrules --load加载。

在 Linux 系统中,auditd 可以监控用户和组的创建行为,但需注意:它不直接记录“用户/组内容”,而是通过捕获相关系统调用(如 useradd、groupadd 调用的底层 syscall)来间接实现。关键在于审计对 /etc/passwd、/etc/group、/etc/shadow、/etc/gshadow 的写入操作,以及追踪执行这些命令的进程。
配置 auditd 监控关键文件的写入事件
用户与组信息最终落地到四个核心文件,任何新增操作都会触发对它们的写入。需为这些文件添加审计规则:
- 运行以下命令(需 root 权限),永久生效建议写入
/etc/audit/rules.d/user-group.rules:
auditctl -w /etc/passwd -p wa -k user_mod
auditctl -w /etc/group -p wa -k group_mod
auditctl -w /etc/shadow -p wa -k shadow_mod
auditctl -w /etc/gshadow -p wa -k gshadow_mod
说明:-w 表示路径监控;-p wa 表示监控写(w)和属性变更(a,如 chown/chmod);-k 指定自定义键名,便于后续过滤。
捕获 useradd/groupadd 命令的执行过程
仅监控文件写入可能漏掉中间步骤(如命令执行失败但已修改部分文件)。补充监控二进制程序调用,覆盖常见管理工具:
- 添加对关键命令的 execve 系统调用审计:
auditctl -a always,exit -F path=/usr/sbin/useradd -F perm=x -k useradd_cmd
auditctl -a always,exit -F path=/usr/sbin/groupadd -F perm=x -k groupadd_cmd
auditctl -a always,exit -F path=/usr/sbin/userdel -F perm=x -k userdel_cmd
auditctl -a always,exit -F path=/usr/sbin/groupdel -F perm=x -k groupdel_cmd
说明:-a always,exit 表示在系统调用退出时记录;-F perm=x 匹配可执行行为;-k 用于归类检索。
查看与筛选审计日志
日志默认存于 /var/log/audit/audit.log,使用 ausearch 工具高效提取目标事件:
- 查所有用户创建相关记录(含文件写入和命令执行):
ausearch -k user_mod -k useradd_cmd --start today | aureport -f -i
- 查某次具体操作的完整上下文(如 UID、命令行参数、终端):
ausearch -m SYSCALL -k useradd_cmd | aureport -f -i --summary
提示:加 --start recent 或 --start 2 hours ago 缩小时间范围;-i 参数将 UID/GID 等数字转为名称,更易读。
确保 auditd 持久化与权限正确
临时规则重启后失效,必须保存并重载:
- 将上面
auditctl命令写入/etc/audit/rules.d/10-user-group.rules(文件名需以数字开头,确保加载顺序) - 执行
augenrules --load重新生成规则并加载(RHEL/CentOS 7+、Fedora、Debian 10+ 默认支持) - 确认服务状态:
systemctl enable --now auditd - 检查规则是否生效:
auditctl -l | grep -E "(user_mod|useradd_cmd)"
注意:若系统启用了 SELinux,需确保 auditd 策略允许监控这些路径,一般默认策略已涵盖,无需额外调整。


















