如何使用fail2ban保护您的linux服务器

使用fail2ban,您的Linux计算机会自动阻止连接失败过多的IP地址。这是自我调节的安全!我们会教你怎么使用它。...

使用fail2ban,您的Linux计算机会自动阻止连接失败过多的IP地址。这是自我调节的安全!我们会教你怎么使用它。

安全

温莎公爵夫人沃利斯·辛普森(Wallis Simpson)曾说过一句名言:“你永远不能太富有或太瘦。”我们为我们这个相互联系的现代世界更新了这句话:你永远不能太小心或太安全。

如果您的计算机接受传入的连接请求,例如Secure Shell(SSH)连接,或者充当web或电子邮件服务器,则需要保护它免受暴力攻击和密码猜测。

为此,您需要监视无法进入帐户的连接请求。如果他们在短时间内多次未能通过身份验证,则应禁止他们进一步尝试。

唯一可行的方法是实现整个过程的自动化。通过一点简单的配置,fail2ban将为您管理监视、禁止和取消禁止。

fail2ban与Linux防火墙iptables集成。它通过在防火墙中添加规则来执行对可疑IP地址的禁令。为了保持这个解释的清晰,我们使用iptables和一个空的规则集。

当然,如果您担心安全性,那么您可能有一个配置了良好填充规则集的防火墙。fail2ban只添加和删除自己的规则您的常规防火墙功能将保持不变。

我们可以使用以下命令查看空规则集:

sudo iptables -L

如何使用fail2ban保护您的linux服务器

相关内容:iptables初学者指南,Linux防火墙

安装fail2ban

在我们用来研究本文的所有发行版上安装fail2ban都很简单。在Ubuntu 20.04上,命令如下:

sudo apt-get install fail2ban

如何使用fail2ban保护您的linux服务器

在Fedora 32上,键入:

sudo dnf install fail2ban

如何使用fail2ban保护您的linux服务器

在Manjaro 20.0.1上,我们使用了pacman:

sudo pacman -Sy fail2ban

如何使用fail2ban保护您的linux服务器

配置fail2ban

fail2ban安装包含一个名为监狱.conf。升级fail2ban时会覆盖此文件,因此如果对此文件进行自定义,则会丢失所做的更改。

相反,我们将复制监狱.conf文件到一个调用监狱.本地. 将我们的配置更改监狱.本地,它们将在升级过程中保持不变。fail2ban会自动读取这两个文件。

以下是复制文件的方法:

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

如何使用fail2ban保护您的linux服务器

现在在你最喜欢的编辑器中打开这个文件。我们将使用gedit:

sudo gedit /etc/fail2ban/jail.local

我们将在文件中查找两个部分:[DEFAULT]和[sshd]。不过,要注意找到实际的部分。这些标签也出现在描述它们的部分的顶部附近,但这不是我们想要的。

如何使用fail2ban保护您的linux服务器

您将在第40行附近找到[DEFAULT]部分。这是一个很长的章节,有很多评论和解释。

如何使用fail2ban保护您的linux服务器

向下滚动到第90行左右,您会发现需要了解以下四个设置:

  • ignoreip:永远不会被禁止的IP地址的白名单。他们有永久的免出狱卡。默认情况下,本地主机IP地址(127.0.0.1)及其IPv6等效地址(::1)都在列表中。如果您知道还有其他IP地址永远不应该被禁止,请将它们添加到此列表中,并在每个IP地址之间留一个空格。
  • bantime:IP地址被禁止的持续时间(“m”代表分钟)。如果您键入的值没有“m”或“h”(表示小时),它将被视为秒。值为-1将永久禁止IP地址。小心别把自己永远锁在外面。
  • findtime:太多失败的连接尝试将导致IP地址被禁止的时间量。
  • maxretry:“失败尝试次数过多”的值

如果来自同一IP地址的连接在findtime期间进行maxretry失败的连接尝试,则在bantime期间将禁止这些尝试。唯一的例外是ignoreip列表中的IP地址。

fail2ban将IP地址放入监狱一段时间。fail2ban支持许多不同的jail,每个jail代表应用于单个连接类型的设置。这允许您对各种连接类型进行不同的设置。或者,您可以让fail2ban监视器只监视一组选定的连接类型。

您可能已经从[DEFAULT]节名称猜到了,但是我们查看的设置是默认值。现在,让我们看看SSH监狱的设置。

相关:如何使用gedit在Linux上以图形方式编辑文本文件

配置监狱

监狱可以让你在fail2ban的监控中进出连接类型。如果默认设置与要应用于监狱的设置不匹配,可以为bantime、findtime和maxretry设置特定值。

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

如何使用fail2ban保护您的linux服务器

在这里可以为SSH连接设置值。要将这座监狱纳入监控和取缔范围,我们必须键入以下行:

enabled = true

我们还键入以下行:

maxretry = 3

默认设置是5,但是我们希望对SSH连接更加谨慎。我们把它调到3,然后保存并关闭了文件。

我们将这个监狱添加到fail2ban的监控中,并覆盖了其中一个默认设置。监狱可以使用默认设置和监狱特定设置的组合。

启用fail2ban

到目前为止,我们已经安装并配置了fail2ban。现在,我们必须使它能够作为自动启动服务运行。然后,我们需要测试它以确保它按预期工作。

要将fail2ban作为服务启用,我们使用systemctl命令:

sudo systemctl enable fail2ban

我们还使用它来启动服务:

sudo systemctl start fail2ban

如何使用fail2ban保护您的linux服务器

我们也可以使用systemctl检查服务的状态:

sudo systemctl status fail2ban.service

如何使用fail2ban保护您的linux服务器

一切看起来都很好,我们开了绿灯,所以一切都很好。

让我们看看fail2ban是否同意:

sudo fail2ban-client status

如何使用fail2ban保护您的linux服务器

这反映了我们的设置。我们启用了一个监狱,名为[sshd]。如果我们在之前的命令中包括监狱的名字,我们可以更深入地了解它:

sudo fail2ban-client status sshd

如何使用fail2ban保护您的linux服务器

它列出了失败的次数和被禁止的IP地址。当然,目前所有的统计数字都是零。

考验我们的监狱

在另一台计算机上,我们将向测试机器发出SSH连接请求,并故意输入错误的密码。每次连接尝试都会有三次尝试来正确获取密码。

maxretry值将在三次连接尝试失败后触发,而不是三次密码尝试失败。因此,我们必须输入三次错误的密码,才能使连接尝试失败。

然后,我们将再次尝试连接并再次错误地键入密码三次。第三个连接请求的第一次错误密码尝试应触发fail2ban。

如何使用fail2ban保护您的linux服务器

在第三个连接请求中输入了第一个不正确的密码之后,我们没有从远程计算机得到响应。我们没有得到任何解释,我们只是受到冷遇。

必须按Ctrl+C返回命令提示符。如果我们再试一次,会得到不同的回答:

ssh [email protected]

如何使用fail2ban保护您的linux服务器

以前,错误消息是“权限被拒绝”。这次,连接被完全拒绝。我们是不受欢迎的人。我们被禁止了。

让我们再来看看[sshd]监狱的细节:

sudo fail2ban-client status sshd

如何使用fail2ban保护您的linux服务器

有三个失败,一个IP地址(192.168.4.25)被禁止。

正如我们前面提到的,fail2ban通过向防火墙规则集添加规则来执行禁止。让我们再看一看规则集(它以前是空的):

sudo iptables -L

如何使用fail2ban保护您的linux服务器

向输入策略添加了一个规则,将SSH通信发送到f2b sshd链。f2b sshd链中的规则拒绝来自192.168.4.25的SSH连接。我们没有更改bantime的默认设置,因此,在10分钟内,该IP地址将被取消绑定,并可以发出新的连接请求。

如果您设置了较长的禁止持续时间(如几个小时),但希望允许一个IP地址更快地发出另一个连接请求,则可以提前假释。

为此,我们键入以下命令:

sudo fail2ban-client set sshd unbanip 192.168.5.25

如何使用fail2ban保护您的linux服务器

在远程计算机上,如果我们发出另一个SSH连接请求并键入正确的密码,我们将被允许连接:

ssh [email protected]

如何使用fail2ban保护您的linux服务器

简单有效

简单通常更好,fail2ban是解决棘手问题的一个优雅的解决方案。它只需要很少的配置,几乎不会给您或您的计算机带来任何操作开销。

  • 发表于 2021-04-02 03:13
  • 阅读 ( 176 )
  • 分类:互联网

你可能感兴趣的文章

哪些应用程序使用端到端加密来改善在线隐私?

...安全。使用端到端加密,邮件内容在到达邮件应用程序的服务器或internet提供商之前,会在设备或帐户上进行本机加密。重要的是,消息只有在到达收件人时才被解密。 ...

  • 发布于 2021-03-11 02:45
  • 阅读 ( 280 )

不,linux不需要防病毒或防火墙

... 你唯一需要防火墙的时候,就是在你的系统上运行某种服务器应用程序的时候。这可能是web服务器、电子邮件服务器、游戏服务器等。在这种情况下,防火墙将限制某些端口的传入连接,确保它们只能与适当的服务器应用程序...

  • 发布于 2021-03-12 20:15
  • 阅读 ( 189 )

如何在windows或linux上使用imessage和其他mac应用程序

...RealVNC系统的一半。通常,您会在远程计算机上安装RealVNC服务器(另一半)。我们已经讨论过在从PC或**远程访问Raspberry Pi设备时使用RealVNC的服务器和查看器。 ...

  • 发布于 2021-03-13 01:38
  • 阅读 ( 217 )

如何保护linux上的usb端口

... 你需要让电脑或服务器无人看管吗?如果是这样,您可以使用一个恰当命名的实用程序USBGuard来防止攻击。这是为了防止恶意USB设备也被称为BadUSB。例如,USB设备可以模拟键盘并发出登录...

  • 发布于 2021-03-13 04:54
  • 阅读 ( 202 )

在linux上保护隐私的10大技巧

... 您可以看到如何容易地开始形成一个强大的密码,可以很容易记住和复杂的同时。 ...

  • 发布于 2021-03-13 08:16
  • 阅读 ( 429 )

如何使用双因素身份验证保护linux-ubuntu

...2FA也超出了文本消息验证的范围。本指南将有助于在Ubuntu服务器和桌面风格上设置增强的安全性,并与googleauthenticator一起实现双因素身份验证。 ...

  • 发布于 2021-03-13 11:11
  • 阅读 ( 178 )

如何为您的网站建立登录保护区

... 今天我将向您展示如何使用您的web服务器对您的网站进行密码保护。 ...

  • 发布于 2021-03-14 14:27
  • 阅读 ( 197 )

4您应该注意的linux安全问题

... 传统的僵尸网络依赖于命令和控制服务器(可以被执法机关关闭),Linux.Rex版本.1被设计为独立存在。这使得它能够在野外生存和繁殖。 ...

  • 发布于 2021-03-15 15:54
  • 阅读 ( 181 )

如何用ssh远程管理linux服务器

服务器管理仍然是一项必要的任务,有时也很麻烦。使用远程服务器或无头服务器尤其困难。谢天谢地,有了安全Shell(SSH)。secureshell是一种网络协议,允许网络服务在不安全的网络上运行。 ...

  • 发布于 2021-03-15 17:05
  • 阅读 ( 496 )

linux真的对病毒和恶意软件免疫吗?事实是这样的

... 有时恶意软件会将信息上传到远程服务器,让某人可以访问您保存的数据或您键入的重要凭据,如密码和信用卡号码。 ...

  • 发布于 2021-03-19 13:49
  • 阅读 ( 200 )