虚拟主机域名注册-常见问题服务器知识 → 操作系统

怎么在 Linux 中使用 Fail2Ban 防护您的服务器

  如果你的服务器开放了进入的连接请求,例如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可让您将连接类型移入和移出fail2ban's监视。如果默认设置不匹配要应用于Jail,您可以设置特定值bantime,findtime和maxretry。

  向下滚动到第280行,您将看到[sshd]部分。

  /etc/fail2ban/jail.local在gedit窗口中打开并滚动到第280行。

  您可以在此处设置SSH连接Jail的值。要将这个Jail包括在监视和禁止中,我们必须输入以下行:

  enabled = true

  我们还输入以下行:

  maxretry = 3

  默认设置为5,但我们希望在使用SSH连接时更加谨慎。我们将其降为三,然后保存并关闭文件。

  我们将此Jail添加到fail2ban's监视中,并覆盖了默认设置。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 是解决一个棘手问题的好的方案。它只需要很少的配置,而且几乎不需要任何操作费用,对您或您的服务器来说都是如此。




免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:bkook@qq.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:Linux内核5.7正式版怎么升级
下一篇:CentOS 8安装Memcached(缓存服务器)的操作方法
  >> 相关文章
没有相关文章。
0

在线
客服

在线客服服务时间:9:00-18:00

客服
热线

19899115815
7*24小时客服服务热线

关注
微信

关注官方微信
顶部