怎样在 Ubuntu 20.04 上安装和配置 Fail2ban

Linux 管理员部署不同的解决方案来保护他们的系统不被入侵。 一些解决方案包括隐匿性安全、IDS(入侵检测系统)和密码策略。 然而,仅靠这些解决方案并不能保护他们的系统免受危害。 最好使用入侵防御系统来防止攻击并在攻击者实际闯入您的系统之前将其阻止。

Fail2ban 是一种易于快速部署的入侵防御工具,可密切监视您的日志文件并根据预定义的登录尝试失败次数禁止可疑 IP 地址。 但是,Fail2ban 有一个限制,即它仅保护需要身份验证的服务。 Fail2ban 不能禁止不需要身份验证的服务。

在今天的帖子中,我们将介绍怎样在 Ubuntu 20.04 LTS 上安装和配置 Fail2ban。

安装 Fail2ban

Fail2ban 包在 Ubuntu 默认存储库中可用。 因此,我们可以简单地使用 apt 安装它。

首先,使用以下命令更新包索引:

$ sudo apt-get update

Enter sudo 提示时输入密码。

然后使用以下命令安装Fail2ban:

$ sudo apt-get install fail2ban

如果提示确认。 在此之后,Fail2ban 应该安装在您的系统上。

配置 Fail2ban

Fail2ban 的配置文件位于 /etc/fail2ban/jail.conf. 但是,建议不要直接编辑此文件。 相反,要编辑配置文件,请复制 监狱配置文件 归档到 监狱.local 文件。 使用以下命令执行此操作:

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

现在要做配置,编辑 监狱.local 文件如下:

$ sudo nano /etc/fail2ban/jail.local

要配置Fail2ban,您需要做的第一步是添加您永远不想禁止的IP 地址。 默认情况下,它设置为不阻止来自本地系统的任何流量。

要将更多系统添加到白名单(不应被阻止的 IP),请搜索以下条目:

ignoreip = 127.0.0.1/8

然后添加由空格分隔的其他 IP 地址,如下面的屏幕截图所示。

然后保存
监狱.local
文件并退出。

使用 Fail2ban 保护 SSH

Fail2ban 带有许多为不同服务预先配置的监狱。 在默认部分下,每个服务都有单独的部分。 这些单独的部分可用于覆盖默认设置。 每个服务都由部分标题标识,例如 [squid]. 我们还可以为每个服务创建单独的本地监狱 /etc/fail2ban/jail.d 目录。

在这里,我们将通过为失败的登录尝试配置监狱来保护 SSH。

使用以下命令为 SSH 创建监狱:

$ sudo nano /etc/fail2ban/jail.d/sshd.local

在 sshd.local 文件中添加以下几行:

[sshd]

enabled = true

port=ssh

maxretry = 2

bantime = 1m

然后保存文件并退出。
的描述 班时间最大重试次数 上述行中使用的参数如下:

班泰姆

当客户端无法成功进行身份验证时,bantime 选项指定他们将被禁止多长时间。

最大重试

在尝试连接的主机 IP 被阻止之前的最大身份验证尝试次数。

现在您需要使用以下命令重新启动 Fail2ban 服务:

$ sudo systemctl restart fail2ban

测试

现在为了验证 Fail2ban 是否正常工作,我们将进行 2 次错误的身份验证尝试(通过输入错误的密码)。 2 次尝试后,SSH 连接将挂起。 到 close 当前 SSH 连接,按 Ctrl+c。 现在,如果我们尝试重新连接到 SSH 服务器,它将无法连接,因为 Fail2ban 已阻止它。

我们还可以通过检查日志中的日志来验证这一点 /var/log/fail2ban.log 文件。

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

下面是我们日志的屏幕截图,您可以看到 Fail2ban 已禁止尝试两次错误身份验证尝试的 IP 地址。 如果你注意到时间,它也会在 1 分钟后解禁 IP 地址。

您还可以使用以下命令手动取消禁止 IP 地址:

$ sudo fail2ban-client set sshd unbanip IP_ADDRESS

这就是全部! 在这篇文章中,我们介绍了怎样安装 Fail2ban 并保护 SSH 免受非法尝试。 它是一种免费且易于设置的工具,用于保护需要身份验证的服务。 但是,请记住,fail2ban 只是一个解决方案。 它不应该是您系统上运行的唯一安全工具。

相关阅读:

Posted in: LinuxTags: