首页/安全/应急响应速查/登录失败记录与锁定状态核查

登录失败记录与锁定状态核查

btmp/wtmp 与 pam_faillock 给出账号维度的登录失败与锁定情况;交叉 auth 日志可判断记录是否被清空。

应急响应速查安全更新于 2026-10-13

登录失败记录在哪里

Linux 把登录失败与成功分别写进两个二进制记录文件:失败进 /var/log/btmp(用 lastb 读),成功进 /var/log/wtmp(用 last 读)。pam_faillock 则在达到阈值后锁定账号,状态放在 /var/run/faillock。三者的价值在于可以互相验证:btmp 被清空或截断时,auth 日志与 faillock 目录仍可能留下痕迹。

基本信息

失败记录/var/log/btmp,二进制,须用 lastb 读
成功记录/var/log/wtmp,二进制,须用 last 读
锁定策略faillock 的 deny 次数与 unlock_time,可写在 /etc/security/faillock.conf
状态查看faillock --user <账号>
解锁命令faillock --reset --user <账号>
为什么不可信这两个文件只需写权限就能清空,本身不防篡改

典型使用场景

  • 排查账号被爆破:统计失败次数与来源分布
  • 确认某账号是否已被 pam_faillock 锁定以及锁定原因
  • 复现登录故障,区分是口令错误、账号锁定还是来源限制
  • 与 auth 日志对账,核实 btmp 是否被清空或截断
  • 处置完成后重置被误锁的运维账号,恢复管理通道
  • 结合 last 的成功登录记录,判断失败之后是否出现过成功登录

查看失败与锁定状态

查看失败与锁定状态
lastb -n 20                       # 最近 20 条失败登录(读 btmp)
sudo lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head -n 20   # 失败来源聚合
faillock --user root              # 该账号的失败次数与锁定状态
sudo faillock --user root --reset  # 处置后解锁被误锁的账号
last -n 20                        # 成功登录记录(读 wtmp)
ls -la /var/log/btmp /var/log/wtmp /var/run/faillock/ 2>/dev/null  # 体积与时间是否可疑

记录与命令读法

对象含义异常判读
/var/log/btmp二进制失败记录,须用 lastb体积异常小说明可能被清空过
/var/log/wtmp二进制成功记录,须用 last重启与登录都会写入,突然变短需解释
faillock --user当前失败计数与锁定状态计数应随时间衰减,长期不清零要查原因
lastb 输出列用户名、终端、来源 IP、时间来源列出现陌生 IP 需追查
last 输出列同样字段的成功登录异常时间点的成功登录是排查重点
发现 btmp 短得异常时,用 auth 日志和 /var/run/faillock 交叉对账:清空日志的人未必会一起清理 faillock 的计数文件。
lastb 输出可能极长:先用 awk 做来源与账号聚合,再挑可疑地址看明细,比直接翻屏有效得多。
重置锁定状态前先导出原始记录:faillock 计数清零后,「这里曾经被锁定过、锁了多少次」这一事实就再无凭据。

易错点

  • 把 btmp 当唯一真相:它可被覆盖写,清空后无从对账,必须与 auth 日志交叉
  • 直接跑 lastb 全量:输出极长且难以阅读,应先聚合统计再看明细
  • 重置锁定状态不留记录:丢失「何时被锁、锁了多少次」这一证据
  • 只看失败不看成功:定性要看失败之后有没有成功登录,否则容易误判

数据来源与参考

  • man 1 lastb / man 1 last
  • man 8 pam_faillock

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌