使用fail2ban,你的Linux电脑会自动屏蔽连接错误过多的IP地址。这是一种安全的方式。以下文章将向您展示如何使用它们。
安全
如果您的计算机接受新的连接请求,例如 Secure Shell 连接或运行网站或电子邮件浏览器,您需要保护它免受外部攻击。
为此,您需要控制对您帐户的错误连接请求。如果短时间内未通过身份验证,他们将被禁止采取进一步行动。
最简单的方法是自动化整个过程。通过简单的配置,fail2ban 将为您控制、禁止或取消阻止所有连接。
fail2ban 与 Linux 防火墙的 iptable 集成。它将通过向防火墙添加规则来强制禁止可疑的 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 上,我们使用:
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]。这是一个内容丰富且评论丰富的部分。
两个部分 [DEFAULT] 和 [sshd]向下滚动到第90个左右,你会看到4个设置应该知道:
- ignoreip :这是一个有免费针的 IP 地址列表,从未被禁止。它们是默认列出的 IP 地址 (127.0.0.1) 以及等效的 IPv6 (:: 1)。如果您还知道其他 IP 地址不能被禁止,请通过在每个地址之间留一个空行来添加到此列表。
- bantime :每个IP地址被禁止的时间段(字母“m”代表分钟/分钟)。如果您输入的值不带“m”或“h”(小时/小时),系统将自动以秒为单位计数。如果值为-1,则IP地址将被永久禁止。小心这个。
- findtime :连接失败过多后禁止的 IP 时间量。
- maxretry :该值表示“连接失败太多次”。
如果来自同一个IP地址的连接在一定的findtime内遇到maxretry失败的连接,会被阻塞一段时间。唯一的例外是此 IP 存在于 ignoreip 列表中。
fail2ban 只将IP地址入狱一段时间t我。 fail2ban 支持许多不同类型的监狱,每一种都代表应用于特定类型连接的设置。这允许您对连接类型进行各种调整。或者fail2ban只是用来控制一组不同的连接类型。
您将不得不猜测[DEFAULT]部分中的单词,但我们看到的设置是默认设置。现在进行 SSH 监狱的设置。
创建监狱档案
Jail 允许与fail2ban 的仪表板进行连接。如果默认设置与您想要越狱的不匹配,您可以设置单独的值,如 bantime、findtime 和 maxretry。
大约到第 280 行,您将看到 [sshd] 部分。
在 [sshd] 部分这里可以设置SSH连接的越狱值。要在您的仪表板和禁令中包含此越狱,请输入以下内容:
enabled=true
输入下一个:
maxretry=3
默认设置为 5,但对 SSH 连接要格外小心。减少到 3,然后保存并关闭文件。
越狱可以使用默认和特定越狱设置。
激活fail2ban
fail2ban 已安装,现在必须激活自动启动服务。
要启用fail2ban,使用systemctl命令:
sudo systemctl enable fail2ban
它们也用于启动服务:
sudo systemctl start fail2ban
我们也可以使用systemctl查看服务状态:
sudo systemctl status fail2ban.service
当绿灯亮起时,一切都处于完美状态。
蓝线已开启现在让我们看看fail2ban是如何工作的:
sudo fail2ban-client status
错误的fail2ban操作
这反映了上面安装的内容。激活一个名为 [sshd] 的监狱。如果我们在前面的命令中包含监狱的名称,我们可以看到:
sudo fail2ban-client status sshd
断开的 IP 连接列表
将出现断开连接和禁止IP地址的列表。当然现在所有的指标都等于0了。
监狱测试。
在另一台电脑上,向被测设备发送SSH连接请求,故意输入错误密码。您将有 3 次时间为每个连接重新输入密码。
连接失败3次后立即弹出maxretry值,不是3次错误密码。这意味着 3 次错误的密码尝试与一次失败的连接。
尝试其他连接并输入错误密码 3 次。第三次连接后第一次,fail2ban会开启。
fail2ban 将被启用下一次之后,我们将没有收到服务器的响应,没有解释,不再另行通知。
您必须按 Ctrl + C 才能返回命令提示符。如果你再试一次,会弹出另一个响应:
ssh dave@ubuntu20-04.local
拒绝连接通知
之前,错误消息是“权限被拒绝”。这一次,连接被拒绝。
再来看看[sshd] jail的细节:
sudo fail2ban-client status sshd
三个连接失败,一个IP地址(192.168.4.25)被封禁
如上所述,fail2ban 通过向防火墙的规则集中添加新规则来禁止 IP。现在让我们看一下那组规则(第一个是空白的):
sudo iptables-L
新规则被添加到防火墙
INPUT 策略中添加了一条规则,将 SSH 流量发送到 f2b-ssh 字符串。 f2b-sshd 字符串中的规则拒绝来自地址 192.168.4.25 的 SSH 连接。默认的bantime设置没有被替换,所以10分钟后,这些IP地址将被解锁,可能需要从头恢复。
如果您设置了较长的bantime(比如几个小时),但突然想尽快重新访问该IP地址,您可以调整时间。
输入以下内容:
sudo fail2ban-client set sshd unbanip 192.168.5.25
在服务器上,如果您需要另一个SSH连接并输入正确的密码,我们将连接:
ssh dave@ubuntu20-04.local
允许连接时
简单有效
简单总是有效的,fail2ban 是解决问题的快速方法。安装只需要一点时间,然后在电脑上的所有操作都是自动的。
评论