faillock 是什么
pam_faillock 是 Linux-PAM 提供的登录失败计数模块:连续输错口令达到阈值后锁定账户一段时间,用于满足身份鉴别条款中「限制非法登录次数」的要求。参数集中在 /etc/security/faillock.conf,查询与解锁用 faillock 命令;RHEL 8 及以上可用 authselect 一键启用该特性,Debian 系需确认 PAM 中的模块配置。
基本信息
| 适用平台 | RHEL/CentOS 8+、Rocky、AlmaLinux(PAM 体系通用) |
|---|---|
| 配置文件 | /etc/security/faillock.conf |
| 关键参数 | deny、fail_interval、unlock_time、dir、audit |
| 启用方式 | authselect enable-feature with-faillock(RHEL 8+) |
| 查询命令 | faillock --user 用户名;加 --reset 解锁 |
| 风险提示 | 改 PAM 配置错误会影响全部登录方式 |
典型使用场景
- 等保登录失败处理条款的整改落地
- 公网暴露服务器的口令猜测防护
- 控制台与 SSH 双通道的失败计数覆盖
- 事件处置中的账号锁定与解锁
- 与 fail2ban 配合,形成账户级与来源级双重限制
faillock 配置
faillock 配置
# /etc/security/faillock.conf
deny = 5 # 连续失败 5 次锁定
fail_interval = 900 # 统计窗口 900 秒
unlock_time = 600 # 锁定时长 600 秒
audit # 记录到审计日志
dir = /var/run/faillock # 计数文件目录启用与查询
启用与查询
# RHEL 8 及以上:启用 faillock 特性
authselect enable-feature with-faillock
# 查看某账号的失败计数与锁定状态
faillock --user ops
# 管理员手动解锁
faillock --user ops --reset参数读法
| 参数 | 含义 | 建议取值 |
|---|---|---|
| deny | 连续失败多少次触发锁定 | 5 |
| fail_interval | 失败计数统计窗口(秒) | 900 |
| unlock_time | 锁定时长(秒),0 表示需管理员解锁 | 600 至 900 |
| dir | 计数文件存放目录 | /var/run/faillock |
| audit | 是否写入审计日志 | 开启 |
与 fail2ban 的分工
| 维度 | pam_faillock | fail2ban |
|---|---|---|
| 作用对象 | 本地账户,记在账号上 | 来源 IP,记在防火墙上 |
| 生效范围 | SSH、控制台、su 等 PAM 入口 | 主要是带日志的服务如 sshd |
| 典型取值 | deny 5、unlock_time 600 | maxretry 5、bantime 1 小时 |
| 互补关系 | 账户不再被反复猜测 | 来源 IP 被直接封禁 |
处理 PAM 配置前备份 /etc/pam.d,配置错误会影响全部登录方式;先在测试环境验证再推到生产。
unlock_time 设为 0 时需管理员手动解锁,安全性更高但运维成本上升,公网服务与运维跳板机需权衡后再定。
迎检取证可直接用 faillock 输出配合系统日志:先查失败次数与锁定状态,再从 /var/log/secure 或 auth.log 调出对应时间段的失败记录,形成完整证据链。