管理CentOS登录次数是保障服务器安全的核心环节,通过精准监控登录行为、严格限制失败尝试次数以及合理控制并发会话,管理员可以有效抵御暴力破解攻击,防止资源耗尽,并确保系统的可追溯性,这不仅是安全合规的基本要求,更是运维专业性的直接体现,要实现这一目标,需要从审计历史日志、配置系统安全策略(PAM)、部署主动防御工具(如Fail2ban)以及优化会话资源限制四个维度进行系统性部署。
登录历史审计与实时监控
在实施任何限制策略之前,首要任务是建立完善的监控机制,掌握当前的登录状况,CentOS系统提供了强大的日志记录和查询工具,能够帮助管理员清晰地看到“谁在什么时候、从哪里、登录了多少次”。


系统默认会将登录记录保存在/var/log/wtmp和/var/log/btmp中。wtmp记录成功的登录,btmp记录失败的尝试,通过last和lastb命令,管理员可以直观地读取这些二进制日志文件。
- 查看成功登录历史:使用
last命令可以列出所有成功的登录会话,包括用户名、终端、源IP地址以及登录时长,通过last n 10可以快速查看最近10次登录,用于判断是否有异常IP在短时间内频繁登录。 - 查看失败登录尝试:使用
lastb命令至关重要,它是发现暴力破解攻击的第一道防线,如果发现某个IP地址在极短时间内产生了数百条失败记录,说明服务器正在遭受字典攻击或撞库攻击。 - 实时日志分析:除了上述命令,直接监控
/var/log/secure文件(RHEL/CentOS 7及以上版本)或/var/log/auth.log是更深入的分析方式,使用tail f /var/log/secure可以实时观察系统的认证过程,结合grep命令,例如grep "Failed password" /var/log/secure | awk '{print $(NF3)}' | sort | uniq c | sort nr,可以统计出攻击最频繁的源IP地址,为后续的防火墙封禁提供数据支持。
配置SSH服务与PAM模块限制登录次数
单纯的监控是被动的,通过配置系统参数主动限制登录尝试次数是防御暴力破解的有效手段,这主要涉及SSH服务配置和PAM(可插拔认证模块)的深度调优。
- 优化SSH配置:编辑
/etc/ssh/sshd_config文件,可以设置MaxAuthTries参数,该参数定义了每次SSH连接允许的最大认证尝试次数,默认值通常是6,建议将其修改为3或4,一旦用户连续输错密码超过该次数,SSH连接会自动断开,迫使攻击者必须重新建立TCP连接,从而显著增加攻击成本,降低爆破效率,修改后需执行systemctl restart sshd生效。 - 利用PAM模块锁定账户:在系统层面,使用
pam_faillock模块(CentOS 7/8/Stream)可以实现更严格的账户锁定策略,编辑/etc/pam.d/systemauth和/etc/pam.d/passwordauth文件,在auth sufficient pam_unix.so行之前添加auth required pam_faillock.so preauth silent audit deny=5 unlock_time=900,这里的deny=5表示允许连续失败5次,unlock_time=900表示锁定15分钟,这种机制直接作用于用户账户,即使攻击者更换连接IP,只要针对同一用户名,在解锁时间内依然无法登录,极大地提高了安全性。
部署Fail2ban实现动态防御
虽然系统自带的限制策略有效,但面对分布式的僵尸网络攻击,静态的规则往往显得力不从心,部署Fail2ban这一入侵防御软件,是CentOS服务器安全运维的专业选择。
Fail2ban通过监控日志文件(如/var/log/secure)来检测恶意行为,并自动更新防火墙规则(如firewalld或iptables)来封禁攻击源IP。
- 配置Jail(监狱)规则:Fail2ban的核心在于Jail配置,针对SSH服务,通常配置
[sshd]段,关键参数包括enabled = true(启用)、port = ssh(监控端口)、logpath = /var/log/secure(日志路径)、maxretry = 3(最大重试次数)和bantime = 3600(封禁时长)。 - 设置查找时间窗口:
findtime参数定义了检测的时间窗口,例如设置findtime = 600,表示如果在10分钟内(600秒)失败次数达到maxretry,则触发封禁,这种动态机制比单纯的次数统计更智能,能够有效识别高频率的突发攻击,同时避免误封正常用户偶尔的输错密码。 - 白名单管理:在
ignoreip参数中配置管理员的信任IP地址(如0.0.1/8或内网网段),防止因自己操作失误导致被锁在门外,这是运维中必须考虑的容错设计。
并发登录数与会话超时控制
除了防御外部攻击,管理内部用户的登录行为同样重要,限制同一用户的并发登录数和设置会话自动超时,可以防止账号共享带来的审计困难,并减少因忘记退出而留下的安全隐患。
- 限制并发登录数:通过修改
/etc/security/limits.conf文件,可以控制特定用户的最大会话数,添加配置如* hard maxlogins 3,表示限制所有用户同时登录的终端数不超过3个,这对于关键系统账号尤为重要,能够确保同一账号在同一时间只能由一人使用,便于落实操作责任制。 - 设置会话超时:在
/etc/profile文件中添加TMOUT变量可以设置空闲超时时间,例如设置export TMOUT=600,表示用户如果10分钟内没有任何操作,系统将自动注销该用户,这能有效防止管理员临时离开终端时,账号被他人利用,为了防止用户修改此变量,建议将其设置为只读或强制加载。
构建多层防御体系的专业建议
在CentOS登录管理中,不存在“银弹”式的单一解决方案,专业的安全架构应当遵循“纵深防御”的原则,应强制要求使用SSH密钥认证而非密码认证,从根本上杜绝密码被爆破的风险;结合上述的Fail2ban和PAM策略作为第二道防线;通过堡垒机进行统一运维审计,实现所有操作的可追溯、可控制,对于关键业务系统,建议进一步集成多因素认证(MFA),确保即使密码泄露,攻击者也无法轻易登录,通过这种层层递进的策略,将登录次数的管理转化为一个动态的、智能的安全防御过程。

相关问答
Q1:如果不小心把自己锁定了,无法登录CentOS服务器该怎么办?
A:如果是因为pam_faillock策略导致账户被锁定,可以通过单用户模式或使用其他具有sudo权限的未被锁定的账户登录服务器,执行faillock user 用户名 reset命令来重置该用户的失败计数,从而解锁账户,如果是SSH连接被防火墙封禁,需要通过服务器控制台(VNC/终端)本地登录,检查Fail2ban状态并执行fail2banclient set sshd unbanip IP地址来解封。
Q2:如何查看当前CentOS系统有多少个用户在线?
A:可以使用w命令或who命令来查看当前登录系统的用户信息。w命令比who更详细,它不仅显示登录用户、终端、登录时间、来源IP,还显示了用户当前正在执行的进程以及CPU和内存的占用情况,非常适合管理员快速掌握系统当前的负载和用户活动状态。
希望以上关于CentOS登录次数管理的策略能帮助您提升服务器的安全性,如果您在配置过程中遇到任何问题,或者有更独特的防御思路,欢迎在评论区留言交流,让我们一起探讨更高效的运维方案。
