pam_faillock 是 linux 系统中用于账户锁定策略的 pam 模块,其作用是在用户连续输入错误密码达到设定次数后自动锁定账户,防止暴力破解。它通过记录登录失败次数(deny=n)、设定锁定时间(unlock_time=秒数)及失败间隔(fail_interval=秒数)等参数实现控制逻辑。启用时需编辑如 /etc/pam.d/system-auth 或 /etc/pam.d/sshd 文件,添加包含 preauth、authfail 和 authsucc 的配置项,并注意不同发行版配置结构可能不同。查看和重置失败计数可使用 faillog -a、faillog -u username 及 faillog -r -u username 命令,passwd -u username 在某些情况下无法清除锁定状态。此外,ssh 与本地登录配置可能分离,日志审计和测试验证同样重要,且应结合其他安全措施共同防护系统安全。
linux系统中,用户登录失败的处理机制是安全防护的重要一环。pam_faillock模块就是用来实现账户锁定策略的关键组件之一。它可以在用户连续输入错误密码后自动锁定账号,防止暴力破解。
什么是 pam_faillock 模块?
pam_faillock.so 是 PAM(Pluggable Authentication Modules)的一部分,用于记录用户的登录失败次数,并在达到设定阈值时阻止进一步的登录尝试。
它的基本逻辑是:
- 用户登录失败 → 记录失败次数
- 达到预设失败次数 → 锁定账户
- 成功登录 → 清空失败计数
这个模块通常与 /etc/pam.d/sshd 或 /etc/pam.d/system-auth 等配置文件配合使用。
如何启用 pam_faillock 模块?
要在系统中启用 pam_faillock,需要编辑对应的 PAM 配置文件。常见的位置包括:
- /etc/pam.d/login
- /etc/pam.d/sshd
- /etc/pam.d/system-auth
以 centos/RHEL 系统为例,在 /etc/pam.d/system-auth 文件中添加或修改如下行:
auth required pam_faillock.so preauth auth [default=die] pam_faillock.so authfail auth sufficient pam_faillock.so authsucc
这些配置项的作用分别是:
- preauth:在认证前检查是否已被锁定
- authfail:认证失败时记录一次失败
- authsucc:认证成功时清除失败记录
注意:不同发行版的PAM配置结构略有差异,建议先备份原文件再修改。
常见参数设置及说明
你可以在 PAM 配置中为 pam_faillock.so 添加一些参数来定制行为。常用参数如下:
- deny=N:允许的最大失败次数,默认为5
- unlock_time=秒数:账户锁定后自动解锁的时间(单位为秒)
- fail_interval=秒数:两次失败之间的时间间隔,超过该时间则重新计数
- authfail 和 authsucc:用于判断是否记录失败或成功
例如:
auth required pam_faillock.so preauth deny=3 unlock_time=600
上面这行表示最多允许3次失败,锁定10分钟(600秒)后自动解锁。
如何查看和重置失败计数?
当用户被锁定后,可以使用 faillog 命令查看和管理失败记录:
- 查看所有用户的失败记录:
faillog -a
- 查看特定用户的失败记录:
faillog -u username
- 重置某个用户的失败计数:
faillog -r -u username
也可以使用 passwd 命令手动解锁用户:
passwd -u username
但要注意的是,某些情况下 pam_faillock 的锁定状态不会随 passwd -u 自动清除,仍需使用 faillog 才能完全解除。
小贴士:几个容易忽略的点
- SSH 登录和本地登录可能分开配置:比如 /etc/pam.d/sshd 和 /etc/pam.d/login 分别控制远程和本地登录的失败处理。
- 日志记录很重要:建议开启审计功能(如 auditd)或查看 /var/log/secure 来追踪登录失败事件。
- 测试环境优先:修改 PAM 配置有风险,最好先在非生产环境中验证效果。
- 不要过度依赖 faillock:它只是防线之一,结合 SSH 密钥登录、防火墙限制等手段更安全。
基本上就这些。合理配置 pam_faillock 可以有效增强系统的安全性,虽然不复杂,但细节容易出错,操作前记得确认当前配置并做好备份。