CentOS服务器如何有效防止SSH被暴力破解?

在管理CentOS服务器时,SSH(Secure Shell)是进行远程管理的核心工具,其默认的22端口也使其成为自动化攻击脚本的主要目标,这些脚本会持续尝试猜测用户名和密码,即所谓的“暴力破解攻击”,为了保护服务器的安全,采取有效的防护措施至关重要,本文将详细介绍几种在CentOS系统上防止SSH暴力破解攻击的策略,从基础配置到高级防御,构建一个多层次的安全体系。

CentOS服务器如何有效防止SSH被暴力破解?

基础安全加固

在部署任何自动化防御工具之前,首先应确保SSH服务的基础配置已经足够安全,这些简单的调整可以立即降低被攻击的风险。

使用强密码或SSH密钥对

这是最基本也是最重要的一步,弱密码是暴力破解攻击能够成功的主要原因,应确保所有用户账户,尤其是具有sudo权限的账户,都使用包含大小写字母、数字和特殊符号的复杂密码。

更优的选择是彻底禁用密码认证,转而使用SSH密钥对进行认证,SSH密钥对由一个私钥和一个公钥组成,其加密强度远超任何可记忆的密码,几乎不可能被暴力破解。

禁用root用户远程登录

攻击者通常会首先尝试使用root用户名进行登录,禁止root用户通过SSH直接登录,可以迫使攻击者必须同时猜测一个有效的用户名和对应的密码,大大增加了攻击的难度。

编辑SSH配置文件:

sudo vi /etc/ssh/sshd_config

找到以下行,并将其修改为:

PermitRootLogin no

保存文件后,重启SSH服务使配置生效:

sudo systemctl restart sshd

更改默认SSH端口

绝大多数自动化扫描工具都默认扫描22端口,将SSH服务更改为一个非标准高位端口(2222, 34567等),可以有效规避这些无差别的扫描攻击。

CentOS服务器如何有效防止SSH被暴力破解?

/etc/ssh/sshd_config文件中,找到并修改Port配置:

#Port 22
Port 2222

同样,修改后需要重启SSH服务,注意,更改端口后,登录时需要使用-p参数指定新端口,ssh user@your_server_ip -p 2222

主动防御:使用Fail2ban

尽管基础加固很重要,但它们是被动的防御措施,Fail2ban是一款非常流行的入侵防御软件,它能够主动监控服务日志,并根据预设规则自动封禁那些表现出恶意行为的IP地址。

工作原理:Fail2ban会持续扫描SSH的认证日志(/var/log/secure),当它在指定时间内发现来自同一个IP地址的多次失败登录尝试时,会自动调用防火墙(如firewalldiptables)来封禁该IP地址一段时间。

安装与配置Fail2ban

在CentOS上,Fail2ban通常包含在EPEL(Extra Packages for Enterprise Linux)仓库中。

  1. 安装EPEL仓库(如果尚未安装)

    sudo yum install epel-release
  2. 安装Fail2ban

    sudo yum install fail2ban
  3. 配置Fail2ban
    Fail2ban的配置文件位于/etc/fail2ban/,为了避免在软件更新时配置被覆盖,最佳实践是创建一个名为jail.local的本地配置文件,而不是直接修改jail.conf

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    sudo vi /etc/fail2ban/jail.local

    jail.local文件中,找到[sshd]部分,并确保它已启用,可以根据需要调整全局默认参数或SSH专有参数。

    以下是一个示例配置片段:

    CentOS服务器如何有效防止SSH被暴力破解?

    [DEFAULT]
    # 封禁时长,单位:秒 (-1表示永久封禁)
    bantime = 3600
    # 在多长时间内发现失败尝试,单位:秒
    findtime = 600
    # 最大失败尝试次数
    maxretry = 3
    # 忽略的IP地址,例如你的本地网络或固定办公IP
    ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
    [sshd]
    enabled = true
    port = ssh,2222  # 如果你更改了SSH端口,请在这里一并指定
    logpath = %(sshd_log)s

为了更清晰地理解这些参数,可以参考下表:

参数 默认值 说明
bantime 600 IP地址被封禁的时长(秒)。-1代表永久。
findtime 600 检测窗口期(秒),在此时间内的失败尝试会被计数。
maxretry 5 findtime内允许的最大失败尝试次数。
ignoreip 0.0.1/8 白名单IP列表,这些IP不会被Fail2ban封禁。
  1. 启动并启用Fail2ban服务
    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban

补充防御策略

除了上述主要方法,还可以结合其他策略进一步增强安全性。

  • 利用TCP Wrappers:通过配置/etc/hosts.allow/etc/hosts.deny文件,可以限制特定IP地址或网段访问SSH服务,这是一种简单但有效的访问控制列表(ACL)机制。
  • 定期检查日志:定期使用cat /var/log/secure | grep "Failed password"等命令检查SSH日志,可以了解攻击的频率和来源,以便及时调整安全策略。

通过将基础加固、主动防御和补充策略相结合,可以为CentOS服务器的SSH服务构建一个坚固的防护屏障,有效抵御暴力破解攻击,保障服务器的稳定与安全。


相关问答FAQs

问题1:如果我不小心被Fail2ban封禁了IP,该怎么办?

解答:这种情况时有发生,尤其是当你自己输错密码次数过多时,解决方法如下:

  1. 通过服务器的控制台(VPS提供商提供的Web Console或物理机直接连接)登录服务器。
  2. 使用以下命令查看被封禁的IP列表:
    sudo fail2ban-client status sshd
  3. 找到被封禁的IP地址后,使用以下命令将其解封:
    sudo fail2ban-client set sshd unbanip <你的IP地址>

    sudo fail2ban-client set sshd unbanip 123.45.67.89

  4. 为了避免再次被封,可以将你的IP地址添加到jail.local文件的ignoreip列表中,然后重启Fail2ban服务。

问题2:更改SSH端口和使用Fail2ban,哪个更好?

解答:这两者并非“二选一”的关系,而是相辅相成的最佳实践,它们从不同层面提供保护:

  • 更改SSH端口:这是一种“规避”策略,它能让你躲开大量针对22端口的无差别、自动化扫描,显著降低日志的噪音和服务器被试探的频率,它的优点是简单高效,缺点是无法阻止针对性的端口扫描。
  • 使用Fail2ban:这是一种“检测与响应”策略,它不关心你使用哪个端口,而是监视登录行为,一旦检测到暴力破解模式,它会主动采取行动(封禁IP),是一种动态的、智能的防御。

将两者结合使用,效果最佳:更改端口可以过滤掉绝大多数的“噪音”攻击,而Fail2ban则作为最后一道防线,捕获那些已经发现你新端口的顽固攻击者,这种“深度防御”的理念能最大化地提升安全性。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-11 05:16
下一篇 2025-10-11 05:19

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告合作

QQ:14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信