Auditd 监控用户账户变更及身份验证失败记录

作者:袖梨 2026-07-08
要让auditd真正发挥账户安全审计作用,关键是聚焦账户变更(如/etc/passwd、/etc/shadow等文件的写与属性操作)和登录失败(结合PAM日志与execve规则),并通过持久化规则、启用sshd VERBOSE日志及ausearch/aureport交叉验证确保实效。

要让 auditd 真正发挥账户安全审计作用,关键不是堆砌规则,而是聚焦两类高价值行为:账号本身被创建/修改/删除(账户变更),以及登录尝试失败(身份验证失败)。这两类日志共同构成用户行为基线,是识别内部越权、暴力破解或横向移动的核心证据。

监控账户变更:盯紧四类核心文件的写与属性操作

所有标准用户管理命令(useraddpasswdusermod -Lgroupadd)最终都会修改以下四个文件。auditd 不需解析命令逻辑,只需捕获内核级写入和属性变更:

  • -w /etc/passwd -p wa -k account_mod —— 用户基本信息(UID/GID/Shell等)
  • -w /etc/shadow -p wa -k account_mod —— 密码哈希、过期策略
  • -w /etc/group -p wa -k account_mod —— 组成员关系
  • -w /etc/gshadow -p wa -k account_mod —— 组密码与管理员列表

注意:-p wa 表示只监控 write(写)和 attr(属性变更),不加 r(读)避免日志爆炸;auid 字段可溯源真实操作者(例如 su 切换后仍显示原始登录用户),比 uid 更可靠。

捕获身份验证失败:结合 PAM 日志与系统调用

auditd 本身不记录用户名或源 IP,必须配合服务配置才能获得完整上下文:

  • 为 SSH 添加规则:-w /var/log/auth.log -p wa -k auth-fail-ssh(Ubuntu/Debian)或 -w /var/log/secure -p wa -k auth-fail-ssh(RHEL/CentOS)
  • 启用 sshd 的详细日志:LogLevel VERBOSE(确保 /etc/ssh/sshd_config 中已设置),重启 sshd 后失败日志会包含“Failed password for user xxx from 192.168.1.5”
  • 添加 execve 规则捕获 login 进程:-a always,exit -F arch=b64 -S execve -F path=/usr/bin/login -F key=login-attempt

这样,一次失败登录会在 audit.log 和系统日志中同时留下记录,可通过 ausearch -k auth-fail-sshtail -n 20 /var/log/auth.log 交叉验证。

让规则真正生效:持久化与验证缺一不可

临时规则在重启后失效,生产环境必须固化:

  • 新建规则文件:sudo tee /etc/audit/rules.d/account-and-auth.rules,粘贴上述所有规则
  • 重载并确认:sudo augenrules --load && sudo auditctl -l | grep -E "(account_mod|auth-fail)",应输出全部规则行
  • 验证日志生成:sudo useradd testuser 后运行 sudo ausearch -k account_mod -i --start recent,检查是否含 exe="/usr/sbin/useradd"、auid=1001 等字段

快速排查与日常运维建议

日常查看不需要翻原始日志,用结构化工具更高效:

  • 查最近账户变动:sudo aureport -k account_mod -i --start today
  • 查最近失败登录:sudo aureport -k auth-fail-ssh -i --start this-hour
  • 重点关注字段:exe(执行程序)、comm(命令名)、auid(原始登录者)、msg(事件摘要)
  • 建议同步开启 /etc/sudoers 监控:-w /etc/sudoers -p wa -k sudoers_mod,防止提权路径被绕过

不复杂但容易忽略

相关文章

精彩推荐