ssh服务器拒绝了密码 请再试一次_「干货分享」手把手教你如何使用Fail2Ban保护Linux服务器...

导语:解决问题肯定是越简单越好,而Fail2Ban就是解决棘手问题的一种优雅的解决方案,它只需很少的配置,几乎不会给您或您的计算机带来任何操作开销。

使用Fail2Ban,您的Linux计算机会自动阻止连接失败过多的IP地址。这是自我调节的安全性!我们将向您展示如何使用它。

bf59b3ab40f2e61ae06d7741e0db83b3.png

提醒:不熟悉Fail2Ban的朋友请跳到文末,查看本文对Fail2Ban的简介。

安全、安全、安全!重要的事情说三遍

温莎公爵夫人沃利斯·辛普森( Wallis Simpson) 曾说过一句著名的话:“你永远不会太富或太瘦。” 我们已针对现代互联世界更新了此内容:您永远不能太小心或太安全。

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

为此,您需要监视无法进入帐户的连接请求。如果他们在短时间内反复未能通过身份验证,则应禁止他们进行进一步尝试。实际上可以实现的唯一方法是使整个过程自动化。只需进行一些简单的配置,即可为您fail2ban管理监视,禁止和取消禁止。

Fail2Ban与Linux防火墙集成iptables。iptables通过向防火墙添加规则来强制实施对可疑IP地址的禁止。当然,如果您担心安全性,则可能已为防火墙配置了填充良好的规则集。Fail2Ban仅添加和删除其自己的规则-您的常规防火墙功能将保持不变。

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

sudo iptables -L

8bcd66feb8d779f854be4640f420d2ce.png

安装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]。但是请小心找到实际的部分。这些标签也出现在描述它们的部分的顶部附近,但这不是我们想要的。

6d32e2fe30ac796e3221cee80b7febbc.png

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

fdb1e0a9f3391f82aed3b22781e405bc.png

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

1.ignoreip:永远不会被禁止的IP地址白名单。他们拥有永久的“摆脱Jails”卡。该本地主机的IP地址 (127.0.0.1)是在列表中默认情况下,其IPv6相当于沿(::1)。如果您知道永远不应禁止其他IP地址,请将它们添加到此列表中,并在每个IP地址之间留一个空格。

2.bantime:禁止IP地址的持续时间(“ m”代表分钟)。如果键入的值不带“ m”或“ h”(代表小时),则将其视为秒。值-1将永久禁止IP地址。要非常小心,不要将自己永久锁定在自己的面前。

3.findtime:尝试失败的连接次数过多会导致IP地址被禁止的时间。

4.maxretry:“尝试失败次数过多”的值。

如果来自同一IP地址的maxretry连接在该findtime时间段内尝试失败的连接,则在持续时间内将其禁止bantime。唯一的例外是ignoreip列表中的IP地址。

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

您可能已经从[DEFAULT]部分的名称中猜到了,但是我们看到的设置是默认设置。现在,让我们看一下SSH Jails的设置。

配置Jails

Jails可让您将连接类型移入和移出Fail2Ban's监视。如果默认设置不匹配要应用于Jails,您可以设置特定值bantime,findtime和maxretry。

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

59aefb10dbffd683f01811e9422109bf.png

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

enabled=true

我们还输入以下行:

maxretry = 3

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

我们将此Jails添加到Fail2Ban's监视中,并覆盖了默认设置之一。Jails可以结合使用默认设置和特定于Jails的设置。

启用Fail2Ban

到目前为止,我们已经安装Fail2Ban并配置了它。现在,我们必须使它能够作为自动启动服务运行。然后,我们需要对其进行测试以确保其可以正常工作。

要启用Fail2Ban即服务,我们使用以下systemctl命令:

sudo systemctl enable fail2ban

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

sudo systemctl start fail2ban

4c780247589659ba090463647dcb172e.png

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

sudo systemctl status fail2ban.service

3bee046b5493c25bb46ab0e10224584a.png

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

让我们看看Fail2Ban是否同意:

sudo fail2ban-client status

907112a2879137b01548a7092cd52b0c.png

这反映了我们的设置。我们启用了一个名为[sshd]的Jails。如果在前面的命令中包含Jails的名称,我们可以对其进行更深入的研究:

sudo fail2ban-client status sshd

21b260fe81a758f5a87cbaa4a247b30b.png

此列表列出了失败的数量和被禁止的IP地址。当然,目前所有统计信息均为零。

测试Jails

在另一台电脑上,我们会向测试机发出 ssh 连接请求,故意输错密码。每次连接尝试都会有三次尝试获得正确的密码。maxretry 值会在三次连接尝试失败后触发,而不是三次密码尝试失败。

因此,我们必须输入错误的密码三次才能失败连接尝试一次,然后再次尝试连接,再输入错误的密码三次。第三个连接请求的第一次错误密码尝试应该触发Fail2Ban。

bf84339024366f77c5f554e821a77205.png

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

ssh dave@ubuntu20-04.local

b35bdba9a1f8acfacaef3d90f2b3d2f5.png

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

让我们再次查看[sshd]Jails的详细信息:

sudo fail2ban-client status sshd

8beae5c8e50bbef2c942351094a1fb7b.png

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

如前所述,Fail2Ban通过将规则添加到防火墙规则集来实施禁令。让我们再来看一下规则集(以前是空的):

sudo iptables -L

f01f4961ce456a84d4ad50e513332f4b.png

规则已添加到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

29f77e781a936401e39eb3d8ac39a615.png

总结:解决问题肯定是越简单越好,而Fail2Ban就是解决棘手问题的一种优雅的解决方案:它只需很少的配置,几乎不会给您或您的计算机带来任何操作开销。

补充说明:Fail2Ban简介

Fail2Ban是一款入侵防御软件,可以保护服务器免受暴力攻击。它是用Python编程语言编写的,基于auth日志文件工作,默认情况下它会扫描所有auth日志文件,/var/log/auth.log、/var/log/apache/access.log等,并禁止带有恶意标志的IP,比如密码失败太多,寻找漏洞等等标志。通常,Fail2Ban用于更新防火墙规则,用于在指定的时间内拒绝IP地址。它也会发送邮件通知。Fail2Ban为各种服务提供了许多过滤器,如 ssh、apache、nginx、squid、named、mysql、nagios等。Fail2Ban能够降低错误认证尝试的速度,但是它不能消除弱认证带来的风险,因为它只是服务器防止暴力攻击的安全手段之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值