使用fail2ban,你的Linux服务器会自动屏蔽连接失败次数过多的IP地址。四川联想服务器代理这是一个自我调节的安全系统,这里将向您展示如何使用它。
如果你的服务器开放了进入的连接请求,例如Secure Shell (SSH)连接,或作为Web、电子邮件服务器,你需要保护它免受暴力破解和密码破解。
为此,您需要监控无法进入帐户的连接请求。如果他们在很短的时间内反复无法进行身份验证,就应该禁止他们进行进一步的尝试。
实际实现这一目标的唯一方法是将整个过程自动化。只需进行一点简单的配置,fail2ban就能为你管理监控、禁止和解除禁止。
fail2ban与Linux防火墙iptables集成。它通过在防火墙上添加规则来执行对可疑IP地址的禁止。
为了让描述更加简洁,我们使用带有空规则集的iptables。如果你担心安全问题,你可能已经在防火墙上配置了一个完善的规则集。 fail2ban只添加和删除它自己的规则--你的常规防火墙功能将保持不变。
我们可以使用这个命令查看我们的空规则集:
sudo iptables -L
一、安装fail2ban
在我们用于研究本文的所有发行版上,安装fail2ban都很简单。在Ubuntu 20.04上,命令如下:
sudo apt-get install fail2ban
在Fedora 32上,输入:
sudo dnf install fail2ban
在Manjaro 20.0.1上,我们使用了 pacman:
sudo pacman -Sy fail2ban
二、配置fail2ban
fail2ban的安装包含一个默认的配置文件,名为 jail.conf。当fail2ban升级时,这个文件会被覆盖,所以如果我们对这个文件进行自定义修改,就会丢失我们的更改。
相反,我们将把 jail.conf 文件复制到 jail.local 文件中。通过将我们的配置更改放在 jail.local 中,它们将在升级时保持不变。这两个文件都会被 fail2ban 自动读取。
这是复制文件的方法:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
现在,在您喜欢的编辑器中打开文件。我们将使用gedit:
sudo gedit /etc/fail2ban/jail.local
我们将在文件中寻找两个部分。[DEFAULT]和[SShd]. 不过要注意找到实际的部分。这些标签也会出现在靠近顶部描述它们的部分,但这不是我们想要的。
您会在第40行附近找到[DEFAULT]部分。这是一个很长的部分,包含很多评论和解释。
向下滚动到第90行,您将发现以下四个需要了解的设置:
ignoreip: 永远不会被禁止的IP地址白名单。该本地主机的IP地址 (127.0.0.1)是在列表中默认情况下,其IPv6相当于沿(::1)。如果您有不能被禁止的IP地址,请将它们添加到此列表中,并在每个IP地址之间留一个空格。
bantime:禁止IP地址的持续时间(“ m”代表分钟)。如果输入的值不带“ m”或“ h”(代表小时),则将其视为秒。值-1将永久禁止IP地址。要非常小心,不要讲自己误封了哦。
findtime:尝试失败的连接次数过多会导致IP地址被禁止的时间。
maxretry: “尝试失败次数过多”的值。
如果来自同一IP地址的maxretry连接在该findtime时间段内尝试失败的连接,则在的持续时间内将其禁止bantime。唯一的例外是ignoreip列表中的IP地址。
fail2ban将IP地址封禁一段时间。fail2ban支持许多不同的封禁规则,每个规则代表适用于单个连接类型的设置。这使您可以对各种连接类型进行不同的设置。或者,您可以fail2ban仅监控一组选定的连接类型。
您可能已经从[DEFAULT]部分的名称中猜到了,但是我们看到的设置是默认设置。现在,让我们看一下SSH Jail的设置。
三、配置封建规则
Jails可让您将连接类型移入和移出fail2bans监视。如果默认设置不匹配要应用于Jail,您可以设置特定值bantime,findtime和maxretry。
向下滚动到第280行,您将看到[sshd]部分。
/etc/fail2ban/jail.local在gedit窗口中打开并滚动到第280行。
您可以在此处设置SSH连接Jail的值。要将这个Jail包括在监视和禁止中,我们必须输入以下行:
enabled = true
我们还输入以下行:
maxretry = 3
默认设置为5,但我们希望在使用SSH连接时更加谨慎。我们将其降为三,然后保存并关闭文件。
我们将此Jail添加到fail2bans监视中,并覆盖了默认设置之一。Jail可以结合使用默认设置和特定于Jail的设置。
四、启用fail2ban
到目前为止,我们已经安装fail2ban并配置了它。现在,我们必须使它能够作为自动启动服务运行。然后,我们需要对其进行测试以确保其可以正常工作。
要启用fail2ban即服务,我们使用以下systemctl命令:
sudo systemctl enable fail2ban
我们还使用它来启动服务:
sudo systemctl start fail2ban
我们也可以使用来检查服务的状态systemctl:
sudo systemctl status fail2ban.service
终端窗口中的sudo systemctl status fail2ban.service。
一切看起来都很好-我们已经开绿灯,所以一切都很好。
让我们看看是否 fail2ban 同意:
sudo fail2ban-client status
这反映了我们的设置。我们启用了一个名为[sshd]的Jail。如果在前面的命令中包含Jail的名称,我们可以对其进行更深入的研究:
sudo fail2ban-client status sshd
此列表列出了失败的数量和被禁止的IP地址。当然,目前所有统计信息均为零。
五、测试我们的Jail
在另一台服务器上,我们将向测试服务器发出SSH连接请求,并故意输入密码。您将进行三次尝试以在每次连接尝试中正确获取密码。
该maxretry值将在三次连接尝试失败后触发,而不是三次密码尝试失败。因此,我们必须键入3次错误的密码才能使连接尝试一次失败。
然后,我们将尝试进行另一次连接,并再三次错误输入密码。第三个连接请求的第一次错误密码尝试应触发 fail2ban.
在第三个连接请求上输入了第一个不正确的密码后,我们没有收到远程服务器的响应。
您必须按Ctrl + C返回到命令提示符。如果再试一次,我们将得到不同的响应:
ssh dave@ubuntu20-04.local
以前,错误消息是“权限被拒绝”。这次,连接被完全拒绝。
让我们再次查看[sshd]Jail的详细信息:
sudo fail2ban-client status sshd
有3个失败,并且一个IP地址(192.168.4.25)被禁止。
如前所述,fail2ban通过将规则添加到防火墙规则集来实施禁令。让我们再来看一下规则集(以前是空的):
sudo iptables -L
规则已添加到INPUT策略中,将SSH通信发送到f2b-sshd链。f2b-sshd链中的规则拒绝来自192.168.4.25的SSH连接。我们没有更改的默认设置 bantime,因此,在10分钟内,该IP地址将被禁止并且可以发出新的连接请求。
如果您设置了更长的禁令持续时间(例如数小时),但是希望允许IP地址重新连接,则可以提早解除封禁。
我们输入以下内容来做到这一点:
sudo fail2ban-client set sshd unbanip 192.168.5.25
在我们的远程服务器上,如果我们发出另一个SSH连接请求并输入正确的密码,则可以连接:
ssh dave@ubuntu20-04.local
越简单越好,而 fail2ban 是解决一个棘手问题的最佳方案。它只需要很少的配置,而且几乎不需要任何操作费用,对您或您的服务器来说都是如此。
成都联想代理www.lenovocd.com【公司名称】成都鸿盛广达科技有限公司
【代理级别】成都联想服务器总代理
【销售经理】成都鸿盛广达科技有限公司
【联系方式】座机:028-85952921 手机:13981931555
【公司地址】成都市武侯区人民南路四段一号时代数码广场A座17楼