账户锁定策略由pam_faillock.so控制,CentOS 7默认推荐使用该模块;pam_tally2.so已被弃用,两者不可混用,否则导致策略失效或冲突。

CentOS 7怎么修改账户锁定策略

账户锁定策略由 pam_tally2.so 还是 pam_faillock.so 控制?

CentOS 7 默认推荐用 pam_faillock.so,但很多旧文档和脚本仍沿用 pam_tally2.so。两者不能混用,否则策略失效或冲突。

相比之下,pam_faillock.so 属于更新一代、也更稳妥的方案:它支持独立保存失败计数,位置在 /var/run/faillock/,而且无论是 SSH 登录还是本地登录,都能按统一规则生效。pam_tally2.so 则依赖 /var/log/tallylog;更麻烦的是,在某些 PAM 配置顺序下,它对 SSH 可能根本不起作用,除非额外显式修改 /etc/pam.d/sshd

如果你刚装的 CentOS 7(≥7.4)且没动过 PAM,优先用 pam_faillock.so;若已有 pam_tally2.so 规则且运行正常,不建议强行切换。

修改 /etc/pam.d/system-auth 实现全局锁定

锁定策略需同时写入 authaccount 段,且顺序关键:失败计数必须在认证前触发,解锁检查必须在认证后验证。

auth [default=ignore] pam_faillock.so preauth silent deny=5 unlock_time=180 fail_interval=900
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=180 fail_interval=900
account required pam_faillock.so

说明:

SSH 登录也想生效?必须改 /etc/pam.d/sshd

/etc/pam.d/system-auth 的改动默认对 SSH 无效——因为 SSH 走的是自己的 PAM 链,不 include system-auth 的 auth 段(只 include account 和 password 段)。

所以必须单独配置 /etc/pam.d/sshd

常见失效原因和排查命令

策略写了却没反应,大概率是这几处踩坑:

真正起作用的是 faillock 命令输出和 /var/run/faillock/ 下的文件,不是日志里有没有“pam_faillock”字样。

本文转载于:https://www.php.cn/faq/2993024.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。