云服务器
linux 如何使用 fail2ban 防止 ssh 暴力破解
2025-07-20 09:48  点击:0

在网络安全中,防止SSH暴力破解是非常重要的。如果您坚持使用密码进行SSH登录,那么业内公认的最有效且成本最低的方法是使用Fail2ban。Fail2ban不仅能够保护SSH服务,还能与WordPress结合,防止暴力登录。本文将介绍如何在CentOS系统上安装和使用Fail2ban,以保护您的SSH服务免受暴力破解。

安装Fail2ban

首先,确保您的CentOS系统已经安装了EPEL(Extra Packages for Enterprise Linux) repository。然后,使用以下命令安装Fail2ban

bash
sudo yum -y install epel-release
sudo yum -y install fail2ban


配置Fail2ban

安装完成后,我们需要编辑Fail2ban的配置文件。打开/etc/fail2ban/jail.conf文件进行编辑。在这个文件中,您可以在[DEFAULT]部分定义所有受监控服务的默认参数。然后在特定服务的配置部分,可以为每个服务(如SSH、Apache等)设置特定的配置,这些配置将覆盖默认参数。

在针对特定服务的监狱区域(即在[DEFAULT]部分之后),我们需要定义一个名为[ssh-iptables]的监狱配置,用于定义与SSH相关的监狱配置。真正禁止IP地址的操作是通过iptables完成的。下面是一个包含ssh-iptables监狱配置的/etc/fail2ban/jail.conf文件样例

conf
[DEFAULT]
全局设置
ignoreip = 127.0.0.1/8
bantime = 600
findtime = 600
maxretry = 3
backend = auto

[ssh-iptables]
# 单个服务设置,服务优先级大于全局设置
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername='Fail2Ban']
logpath = /var/log/secure
# 在5分钟内出现3次密码验证失败,禁止用户IP访问主机1小时。
bantime = 3600
findtime = 300
maxretry = 3


在这个配置中,我们设置了对SSH服务的监控。Fail2ban会监控/var/log/secure文件(或者您指定的其他SSH日志文件),如果发现某个IP地址在规定时间内(本例中为5分钟)进行了多次错误密码尝试(本例中为3次),就会触发禁令,禁止该IP地址访问您的SSH服务1小时(由bantime设置)。

测试Fail2ban

为了测试Fail2ban是否正常工作,您可以在另一台机器上尝试多次错误的SSH密码登录。在尝试了规定次数后,您会看到SSH连接被断开,这表明Fail2ban已经成功地禁止了您的IP地址访问SSH服务。

您可以检查iptables规则来确认这一点。在终端中运行以下命令

bash
sudo iptables -L


您应该能看到Fail2ban添加的规则,这表明您的IP地址已经被禁止访问SSH端口。

通过这种方式,Fail2ban可以帮助您保护Linux服务器免受SSH暴力破解的威胁,确保服务器的安全性。