本文聚焦于 RHEL 7 系统安全加固,深入解析了 pam_tally2.so 模块的核心作用,内容详细介绍了该模块在防止暴力破解攻击、限制登录失败次数以及配置账户锁定策略方面的具体使用方法与配置步骤,旨在帮助管理员有效提升系统登录安全性。在 Linux 系统管理中,防止暴力破解攻击和账号锁定是保障服务器安全的重要环节,对于 RHEL 7(以及 CentOS 7、AlmaLinux 7 等基于 RHEL 7 架构的系统)而言,pam_tally2.so 模块是实现这一功能的核心工具,它是 RHEL 6 中 pam_tally.so 的升级版本,提供了更强大的计数和锁定功能。
本文将详细介绍如何在 RHEL 7 环境下配置和使用 pam_tally2.so,以有效防御暴力破解。
为什么需要 pam_tally2.so?
当攻击者尝试多次输入错误的密码时,系统如果没有限制,攻击者可能会通过不断尝试来破解账号。pam_tally2.so 模块可以记录用户登录失败的次数,一旦达到设定的阈值,系统将拒绝该用户的登录请求,从而增加攻击者的破解难度。

配置 pam_tally2.so
在 RHEL 7 中,主要需要修改两个配置文件:
/etc/pam.d/system-auth:负责本地登录验证。/etc/pam.d/password-auth:负责远程登录(如 SSH)验证。
修改配置文件
使用 vi 或 vim 编辑上述文件,找到 auth 部分并添加或修改 pam_tally2.so 相关的行,通常需要添加一行 deny 规则。
示例配置:
在 /etc/pam.d/system-auth 文件中添加以下内容(建议添加在 pam_unix.so 之前):
auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=60
同样地,在 /etc/pam.d/password-auth 文件中也应添加相同的配置行,以确保远程登录也能生效。
参数详解
上述配置行中的参数含义如下:
- deny=3:表示当同一用户连续认证失败 3 次后,锁定该账号。
- unlock_time=300:表示锁定 300 秒(5分钟)后自动解锁,如果设为 0,则表示永久锁定,需手动重置。
- even_deny_root:表示 root 用户也受此策略限制,如果不加此参数,root 用户通常可以忽略计数继续尝试登录。
- root_unlock_time=60:表示 root 用户被锁定后的自动解锁时间(60秒)。
验证与管理
配置完成后,我们可以通过 pam_tally2 命令来查看用户的状态或重置计数器。
查看用户登录失败次数
使用 --user 参数指定用户名:
[root@rhel7 ~]# pam_tally2 --user=root
输出示例:
Login Failures Latest failure From
root 5 10/24/2023 14:30 192.168.1.100
这里显示 root 用户失败 5 次,最后一次失败时间。
重置用户计数器
如果管理员误操作导致账号被锁定,或者需要重新开始计数,可以使用 --reset 参数:
[root@rhel7 ~]# pam_tally2 --user=root --reset
执行后,该用户的失败计数将被清零,下次登录将重新开始计算。
在 RHEL 7 环境下,利用 pam_tally2.so 模块配置登录失败锁定策略是系统安全加固的基础操作,通过合理设置 deny(拒绝次数)和 unlock_time(解锁时间),可以在有效防止暴力破解的同时,给予用户一定的容错空间,务必同时

