在CentOS服务器运维中,频繁的失败登录尝试往往是暴力破解攻击的前兆,直接威胁系统安全。我们可以通过pam_tally2模块来实时监控和统计这些失败登录,它能够详细记录每个用户的失败尝试次数,并在达到阈值后自动锁定账户,这是加固SSH及系统登录安全的关键一步。

一、pam_tally2是什么?它如何工作?

pam_tally2是Linux-PAM(可插拔认证模块)中的一个组件,专门用于跟踪用户认证失败次数。它会在用户连续认证失败时进行计数,并将数据存储在/var/log/tallylog文件中。当失败次数超过预设限制,pam_tally2可以拒绝该用户的进一步登录尝试,直到管理员手动重置或等待自动解锁。与旧版pam_tally相比,pam_tally2功能更强大,支持更多选项,如单独统计tty和远程登录。

二、在CentOS中配置pam_tally2进行登录失败统计

首先,确认系统已安装pam_tally2。CentOS 7/8通常默认包含。通过编辑PAM配置文件来启用它。对于SSH登录,主要修改/etc/pam.d/sshd文件;对于本地tty登录,则修改/etc/pam.d/system-auth。下面以SSH为例:

# 在 /etc/pam.d/sshd 文件中添加以下行(通常在auth部分):
auth    required    pam_tally2.so deny=5 unlock_time=600 even_deny_root root_unlock_time=1200
account required    pam_tally2.so

参数解释:deny=5表示连续失败5次后锁定账户;unlock_time=600是普通用户锁定600秒(10分钟)后自动解锁;even_deny_root表示root用户也受限制;root_unlock_time=1200是root用户锁定1200秒(20分钟)。配置后需重启sshd服务:systemctl restart sshd

三、使用pam_tally2命令查看和管理失败登录统计

配置生效后,即可通过pam_tally2命令查看详细统计。直接运行pam_tally2会列出所有用户的失败计数:

$ pam_tally2
Login           Failures Latest failure     From
user1           3        07/10/2023 14:30:22  ssh:192.168.1.100
root            1        07/10/2023 13:15:10  tty2

要查看特定用户,如user1:pam_tally2 -u user1。当用户被锁定后,管理员可以手动重置计数解锁账户:pam_tally2 -u user1 -r。如果需清零所有统计:pam_tally2 --reset。这些操作对于日常安全审计和应急响应至关重要。

四、结合系统日志深化分析与告警

pam_tally2的统计可结合/var/log/secure日志(CentOS 7/8)进行深度分析。日志中会记录每次失败尝试的详细信息,例如:

Jul 10 14:30:22 server sshd[1234]: Failed password for user1 from 192.168.1.100 port 22 ssh2

我们可以编写脚本定期解析日志,当某IP或用户失败次数激增时触发告警。例如,使用awk提取失败登录IP并计数:

awk '/Failed password/ {print $(NF-3)}' /var/log/secure | sort | uniq -c | sort -nr

这能帮助识别潜在攻击源。进一步,可将pam_tally2数据与监控工具(如Zabbix或Prometheus)集成,实现可视化仪表盘和实时告警。

五、高级应用:自定义锁定策略与故障排除

除了基本配置,pam_tally2支持更细粒度的策略。例如,通过onerr=fail确保模块错误时不影响安全;file=/var/log/tallylog指定自定义计数文件。还可以针对不同用户组设置不同阈值,但这需要结合PAM其他模块实现。常见问题包括:配置后用户无法登录,可能是deny值过小或解锁时间过长;计数不更新,检查PAM文件顺序是否冲突。务必在测试环境验证后再上生产。

六、pam_tally2在整体安全架构中的角色

pam_tally2不应孤立使用,而是纵深防御的一部分。建议搭配fail2ban(基于日志的自动封禁)和强密码策略。例如,fail2ban可监控/var/log/secure,当同一IP多次失败时用iptables封锁;而pam_tally2在系统层提供用户级锁定。此外,禁用root的SSH登录、使用密钥认证能大幅减少攻击面。定期审计pam_tally2统计,可发现内部账户异常,提升整体安全水位。

七、从CentOS迁移到替代系统的注意事项

随着CentOS 7生命周期结束和CentOS Stream的转变,许多用户转向Rocky Linux或AlmaLinux。这些替代系统与CentOS二进制兼容,pam_tally2配置通常可直接迁移。但需注意:某些新发行版可能默认使用更新的pam_faillock模块,功能类似但语法不同。例如,在RHEL 8+中,pam_faillock使用/etc/security/faillock.conf进行配置。如果迁移,应测试认证流程,确保统计和锁定功能正常。

总之,pam_tally2是CentOS运维中一个轻量而强大的失败登录统计工具。通过正确配置和日常管理,它能有效遏制暴力破解,并提供关键的安全审计数据。结合日志分析和多层防护,可以构建更 resilient 的系统安全防线。