Linux默认不启用密码输错锁定,必须通过PAM手动配置pam_faillock.so模块,核心是设置deny=5、fail_interval=60、unlock_time=900参数,并严格按序插入三行auth规则及一行account required规则,同时建议为root添加silent参数豁免计数。

Linux 默认不启用密码输错锁定,必须通过 PAM 手动配置 pam_faillock.so 模块,核心是设置失败次数、时间窗口和自动解锁时长,并确保三行规则顺序正确、位置靠前。
确认系统支持并选择配置文件
主流发行版(Ubuntu 22.04+、RHEL/CentOS 8+、Debian 12+)已默认内置 pam_faillock.so。可执行以下命令验证:
-
grep -r "pam_faillock" /etc/pam.d/—— 若有输出,说明已在使用 -
find /lib* -name "pam_faillock.so"—— 若有结果,模块存在,可直接配置
根据系统选择主配置文件:
- Debian/Ubuntu:编辑
/etc/pam.d/common-auth - RHEL/CentOS/Alma/Rocky:编辑
/etc/pam.d/system-auth - 如需同时覆盖 SSH 和图形登录,还需检查
/etc/pam.d/sshd和/etc/pam.d/password-auth
添加三行严格顺序的 auth 规则
在所选配置文件的 auth 段开头附近(#%PAM-1.0 后空白处),插入以下三行,顺序不可调换:
auth [default=ignore] pam_faillock.so preauth silent deny=5 unlock_time=900 fail_interval=60<br>auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900 fail_interval=60<br>auth [default=ok] pam_faillock.so authsucc
关键参数说明:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
deny=5:60 秒内连续输错 5 次即触发锁定 -
unlock_time=900:锁定后 15 分钟自动解锁(单位为秒) -
fail_interval=60:仅统计最近 60 秒内的失败记录,避免历史误操作累积 -
silent:隐藏具体错误提示,提升安全性
⚠️ 注意:若需对账户状态做最终校验(推荐启用),还需在 account 段添加一行:account required pam_faillock.so
跳过 root 账户锁定(强烈建议)
root 被锁可能导致紧急维护中断。推荐在上述每行 pam_faillock.so 末尾添加 silent,例如:
auth [default=ignore] pam_faillock.so preauth silent deny=5 unlock_time=900 fail_interval=60 silent
这样 root 的失败尝试不会被计数,也不会被锁定。如确需锁定 root,请改用 even_deny_root,但务必提前配好 sudo 权限或密钥登录备用通道。
测试与管理锁定状态
配置保存后,切勿立即退出当前会话。用新终端对普通用户测试:
- 反复输入错误密码,第 5 次应被拒绝;再等 10 秒重试仍被拒
- 执行
faillock --user username查看失败计数与锁定状态 - 用 root 执行
faillock --user username --reset立即解锁
失败记录默认存于 /var/run/faillock/,重启不丢失。日志可查 /var/log/auth.log(Debian系)或 /var/log/secure(RHEL系),搜索 pam_faillock 或 Authentication failure。

















