【Ubuntu】如何在Ubuntu 24.04上使用Fail2Ban阻止暴力攻击

Fail2Ban 是一个基于 Python 的工具,需要手动安装在系统上。它帮助保护系统免受网络相关的攻击,比如暴力破解。 当这种攻击发生时,Fail2Ban 会等待配置文件中声明的特定规则触发,然后采取必要的行动,比如封锁目标 IP 地址并记录事件。 根据配置文件中指定的规则,目标 IP 地址的封锁会被解除,这些配置文件以 "_conf_" 格式存储在 "_/etc/fail2ban/_" 路径下。

· 6 min read
【Ubuntu】如何在Ubuntu 24.04上使用Fail2Ban阻止暴力攻击
ubuntu install fail2ban

在这篇文章中,我会一步一步教你如何在 Ubuntu 24.04 上清晰简洁地设置 Fail2Ban,这样就可以自动阻止通过 SSH 对系统进行的暴力破解攻击。

什么是 Fail2Ban?

Fail2Ban 是一个基于 Python 的工具,需要手动安装在系统上。它帮助保护系统免受网络相关的攻击,比如暴力破解。

当这种攻击发生时,Fail2Ban 会等待配置文件中声明的特定规则触发,然后采取必要的行动,比如封锁目标 IP 地址并记录事件。

根据配置文件中指定的规则,目标 IP 地址的封锁会被解除,这些配置文件以 "conf" 格式存储在 "/etc/fail2ban/" 路径下。

今天,就让我们来看看如何在 Ubuntu 24.04 上安装和配置 Fail2Ban,并设置它来防止暴力破解攻击。

第一步:安装 Fail2Ban

首先,我们应该确保包列表和包数据库是最新的。

$ sudo apt update && sudo apt upgrade -y

接下来,我们可以使用 APT 包管理器来安装 Fail2Ban。

$ sudo apt install fail2ban

安装完成后,你可以通过检查其版本来验证安装是否成功,也可以通过命令查看fail2ban-server是否成功启动。

$ fail2ban-server --version

第二步:配置 Fail2Ban

Fail2Ban 的配置文件存储在 "/etc/fail2ban" 目录下,其中一些配置文件被分组在 "action.d", "fail2ban.d", "filter.d", 和 "jail.d" 目录中,而重要的配置文件如 "fail2ban.conf", "jail.conf", 和 "jail.local" 则位于父目录中。

我们将主要关注修改 "jail.conf" 文件,以配置 Fail2Ban 来防止暴力破解。那么,这个文件包含什么呢?它包含了各种服务的默认 jail 配置,比如 SSH。

我们通常不会直接在这个文件中进行修改。相反,我们会在同一目录下创建一个名为 "jail.local" 的副本,并在那里进行更改。所以,让我们快速使用以下命令创建副本:

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

接下来,我们将根据我们的需求使用我们选择的文本编辑器(我更喜欢 Nano)来修改这个配置文件。

$ sudo vim /etc/fail2ban/jail.local

文件打开后,找到 [SSH] 指令,它通常用 # 前缀注释掉,所以确保删除它,然后在下面粘贴以下内容。

[ssh]
enabled = true
port = ssh
filter = sshd
maxretry = 3
findtime = 5m
bantime = 24h

在这里,确保它是 [SSH] 指令而不是 [SSHD]。否则,你需要将其重命名为 [SSH]。接下来,让我们来看看各个字段的含义吧。

  • enabled = true 表示配置已激活。
  • port = ssh 和 filter = sshd 定义了服务名称。
  • maxrety = 3 定义了在封禁 IP 地址之前允许的最大失败登录尝试次数(例如,3 表示三次尝试)。
  • findtime = 5m 指定了条件必须满足的时间范围(例如,5m 表示用户必须在五分钟内三次登录失败才会触发操作)。
  • bantime = 24h 定义了 IP 地址被封禁(或列入黑名单)的时间长度,其中 24h 表示一整天。

配置值并不是你应该盲目遵循的行业标准。根据你的需求或要求随意修改。编辑完配置文件后,它应该看起来像这样:

配置 fail2ban 配置文件

保存并关闭文件,这里我是用的是vim编辑器,使用 :wq就可以退出保存配置了。如果你使用的是 nano,按 Ctrl+X,然后 Y,然后 Enter 保存并退出。

第三步:重启服务

更改后,我们应该确保 SSH 服务正在运行并启用,这将允许它在系统启动时自动启动。为此,执行以下两个命令:

$ sudo systemctl restart ssh
$ sudo systemctl enable ssh

接下来,我们需要使用以下命令重启并启用 Fail2Ban 服务:

$ sudo systemctl restart fail2ban
$ sudo systemctl enable fail2ban

我们现在准备好测试通过 SSH 进行的暴力破解尝试是否会被阻止。

第四步:测试通过 SSH 进行暴力破解

要测试多次 SSH 尝试(或暴力破解攻击)是否被阻止,请使用你的本地 IP 地址(通过 ip addr show 命令找到),并从你的本地网络(或同一系统,这完全没问题)多次尝试登录到配置了 Fail2Ban 的系统,直到达到限制。

在失败的登录尝试期间或之后,你可以监控 Fail2Ban 日志,看看 IP 地址是否被封禁。

$ sudo tail -f /var/log/fail2ban.log

一旦 IP 地址被封禁,用户在尝试通过 SSH 登录系统时会看到以下消息。

要从 Fail2Ban 中解封用户的 IP 地址,请使用以下命令指定他们的 IP 地址:

$ sudo fail2ban-client set sshd unbanip 192.168.249.1

总结

在这篇文章中,你学会了如何安装和配置 Fail2Ban 来阻止通过 SSH 暴力破解系统的 IP 地址。如果你有任何疑问,请随时在评论区留言。