服务器密码被反复试:登录失败锁定把爆破试错次数钉死

公网上的 Linux 服务器,只要开着 SSH 端口,认证日志里几乎都有一类固定戏码:陌生的 IP 一轮轮地试用户名密码,一分钟好几发,不达目的不罢休。密码强度再高,也架不住对方不知疲倦。除了改端口、上密钥,还有一道常被忽略的基础防线——登录失败锁定:试错超过次数就锁死,让爆破脚本自己撞墙。

看看自己的服务器正被怎么试

先建立体感。执行 lastb 命令(查看失败的登录记录),如果你的 SSH 对公网开放,大概率能看到满屏的 Failed password 和陌生来源地址;再看 /var/log/secure 或 auth.log 里的认证日志,试错频率一目了然。很多管理员头回看这个输出都会吃惊——服务器每天被试上百次是常态。

锁定方案一:pam_faillock(主流发行版现行方案)

较新的 RHEL、openEuler、Rocky 等发行版默认带 pam_faillock 模块,配置在 /etc/security/faillock.conf:deny 设定允许的失败次数(比如 5 次),fail_interval 设定统计窗口(比如 15 分钟内的失败累计),unlock_time 设定锁定时长(比如 10 分钟后自动解锁)。配置生效后,同一来源或同一用户在窗口内失败超次,账户即被锁定,期间哪怕密码正确也进不来。对 root 账户可以单独设定是否同样锁定——建议锁定,反正真正该做的是禁用 root 密码直登。

锁定方案二:fail2ban(主动封地址)

fail2ban 走的是另一条思路:实时扫描认证日志,失败超次的来源地址直接写进防火墙封禁名单,整个 IP 都进不来,而不是只锁账户。它适合放在网络边界统一管理,还能盯 SSH 之外的多种服务。两者不冲突:主机层 faillock 管账户,边界层 fail2ban 管地址,双层的防御纵深更稳。

配套的三件小事

一是确认锁定不会把自己锁在门外:运维跳板机的来源 IP 先摸清,必要时加白名单;二是锁定只治爆破,治不了弱密码,密码策略(长度、复杂度、定期更换)要同时立住;三是能走密钥认证就关掉密码认证,这一刀下去爆破直接失去意义,锁定机制退居第二道保险。

服务器安全基线加固与入侵面收敛,贵州诚鑫致达科技提供上门实施与定期巡检服务,欢迎留言或私信咨询。

企业存储选型参考|贵州诚鑫致达

做中小企业全能主力存储,群晖机型参考:DS1823xs+ · DS2422+ · DS923+。需要选型建议或上门评估,搜「诚鑫致达」即可找到我们。