关键在于用auditd对/etc/passwd、/etc/shadow、/etc/sudoers等账号核心文件实施内核级-w监控,结合-auid/comm/exe上下文精准溯源,并通过git备份、siem告警与自动拦截构建闭环响应机制。

要真正管住账号安全配置的每一次变动,关键不是“记下来”,而是让每次改动自动留痕、可定位、能判断风险。核心在于把账号相关的敏感操作从“人工记忆”变成“系统强制记录”,再叠加上下文分析和告警响应。
锁定必须监控的账号配置项
不是所有配置都值得审计,重点盯住直接影响身份与权限的底层文件和策略:
- /etc/passwd 和 /etc/shadow:用户增删、密码哈希变更、账户锁定状态(如密码过期字段)
- /etc/sudoers 及 /etc/sudoers.d/ 下所有文件:提权规则新增、删除或修改(如某用户突然获得 ALL=(ALL) NOPASSWD 权限)
- /etc/pam.d/ 系列文件:认证流程被绕过(如 pam_permit.so 被加入 auth 堆栈)、密码策略被弱化
- SSH 配置:/etc/ssh/sshd_config 中 PermitRootLogin、PasswordAuthentication、AllowUsers 等关键开关项
用 auditd 实现内核级操作捕获
auditd 是 Linux 最可靠的基础审计手段,它不依赖命令行行为,直接抓取系统调用,防绕过、难伪造:
- 在 /etc/audit/rules.d/account.rules 中添加规则,例如:
-w /etc/passwd -p wa -k account_passwd<br>-w /etc/shadow -p wa -k account_shadow<br>-w /etc/sudoers -p wa -k sudoers_change
- 重启生效:
sudo augenrules --load && sudo systemctl restart auditd - 每条日志会包含真实登录用户(auid)、执行进程(comm)、可执行路径(exe)、操作时间及返回结果,可精准区分是运维人员执行 usermod 还是恶意脚本直接 write 文件
把变更纳入配置管理闭环
光有日志不够,要让它参与决策和响应:
- 将 /etc/passwd、/etc/shadow 等文件每日定时备份(如用 rsync + 时间戳),并推送到私有 Git 仓库;每次提交强制关联 Jira 工单号或审批人
- 用 git diff 自动生成变更摘要,例如:“2026-06-16T14:22:05Z – 新增用户 ‘backdoor’ (UID 999),shell=/bin/bash,home=/tmp/.cache”
- 对高危变更(如 shadow 中新增非标准 UID、sudoers 中出现 NOPASSWD)设置自动拦截:触发 Webhook 调用审批接口,未通过则禁止写入或立即回滚
对接统一日志与告警通道
让安全团队第一时间看到异常,而不是等出事再翻日志:
- 用 rsyslog 或 filebeat 将 /var/log/audit/audit.log 推送至 SIEM(如 ELK 或 Splunk),按关键词(account_passwd、sudoers_change)建立仪表盘
- 配置告警规则:同一 auid 在 5 分钟内修改 /etc/shadow ≥2 次 → 触发钉钉通知+邮件;或检测到 shadow 中密码字段为空(!!)且非 root 账户 → 标记为紧急事件
- Windows 环境启用高级审核策略,重点开启“账户管理”和“策略更改”,确保事件 ID 4720(创建用户)、4732(加组)、4719(审计策略修改)全部捕获并转发











