首页/安全/安全加固速查/pam_faillock 失败锁定策略
口令与认证策略55 条

pam_faillock 失败锁定策略

连续认证失败达到阈值后临时锁定账号,是抗暴力破解的核心控制;主流发行版统一读 /etc/security/faillock.conf。

安全加固速查安全更新于 2026-10-13

失败锁定在防什么

连续认证失败达到阈值后临时锁定账号,是在线暴力破解最直接的阻断手段:攻击者每次尝试都会消耗窗口,而正常用户误输几次口令只是短暂等待。它保护的是登录入口本身,与口令复杂度互补——复杂度让口令难猜,锁定让猜测次数受限。RHEL 8 与 Debian 10 之后的发行版统一从 /etc/security/faillock.conf 读取参数。

基本信息

加固项登录失败处理
适用平台Linux(RHEL 8+、Debian 10+,PAM)
风险等级中
配置文件/etc/security/faillock.conf
基线deny 不超过 5 次,解锁时间按业务权衡

典型使用场景

  • 等保身份鉴别:条款要求配置登录失败处理功能与结束会话条件
  • 公网服务器加固:SSH 口令认证仍开启时,锁定是必要的兜底
  • 账号安全排查:确认某账号是否因失败次数过多被锁定
  • 故障处理:用户反馈登不上,先看是否触发锁定而不是先改口令
  • 批量整改:与口令复杂度策略同步下发,一次到位

faillock.conf 基线

faillock.conf 基线
deny = 5               # 连续失败 5 次触发锁定
fail_interval = 900    # 统计窗口 900 秒
unlock_time = 900      # 锁定 900 秒后自动解锁
audit                  # 记录到审计日志
silent                 # 不在屏幕上回显失败计数

PAM 接线与核查

PAM 接线与核查
# /etc/pam.d/system-auth 或 common-auth
# auth required pam_faillock.so preauth
# auth [default=die] pam_faillock.so authfail
# account required pam_faillock.so
faillock --user alice                # 查看某账号的失败计数
faillock --user alice --reset        # 手动解锁(确认非攻击后使用)

关键参数读法

参数含义设置建议
deny触发锁定的失败次数5 次以内,兼顾安全与误输
fail_interval统计失败的滑动窗口秒数与 deny 一起评估,窗口过短易失效
unlock_time自动解锁等待秒数为 0 表示永久锁定,需管理员解锁,慎用
audit把失败事件写入审计日志建议开启,便于事后分析
silent屏幕不回显失败次数避免把剩余尝试次数暴露给攻击者
unlock_time 设为 0 表示永久锁定,只能由管理员手动解锁:一旦被批量尝试就会把正常用户一起卡住,运维成本很高。设置前先评估业务对登录可用性的要求,并约定解锁流程与责任人。
faillock 只统计本机认证失败:来自多台主机的分布式爆破,单机计数可能永远到不了阈值,需要配合边界限制或集中认证策略。另外只有走 PAM 的认证才会被计数,密钥登录不经过这条路;用 authselect(旧版 authconfig)管理 PAM 比直接编辑 pam.d 更不容易在升级时被覆盖。

生效后的验证方式

配置完成后用测试账号连续输错口令,确认出现锁定提示,再用 faillock --user 看计数,最后解锁并确认恢复正常登录。这一轮验证同时覆盖了策略生效与解锁流程,比只看配置文件可靠得多。验证用的账号与计数记录一并留档,作为条款符合性的证据。

易错点

  • unlock_time 设为 0:永久锁定会让批量失败波及正常用户,需要逐个人工解锁
  • 只改配置文件不动 PAM 接线:参数存在但没有被调用,策略实际不生效
  • 直接编辑 pam.d 而不使用 authselect:系统升级或策略切换后配置被覆盖,锁定功能静默失效
  • 假设密钥登录也会被计数:不经过 PAM 的认证不受 faillock 约束,评估爆破防护时要说明覆盖范围
  • 忘记验证解锁流程:只验证锁定不验证解锁,出现误锁时无法快速恢复业务

数据来源与参考

  • man 8 pam_faillock
  • CIS Benchmark:Account Lockout 条目
  • 等保 2.0:登录失败处理

相关工具

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