登录失败记录在哪里
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 计数清零后,「这里曾经被锁定过、锁了多少次」这一事实就再无凭据。