在这篇文章中,我会一步一步教你如何在 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 表示一整天。
配置值并不是你应该盲目遵循的行业标准。根据你的需求或要求随意修改。编辑完配置文件后,它应该看起来像这样:
保存并关闭文件,这里我是用的是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 地址。如果你有任何疑问,请随时在评论区留言。