如何在 Linux 中使用 Fail2Ban 保护您的服务器

服务器安全是任何企业或组织的首要任务。 Fail2Ban 是系统管理员工具包中最重要的工具之一。 本指南解释了 Fail2Ban 是什么以及如何在 Linux 中使用 Fail2Ban 保护服务器免受攻击。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

什么是 Fail2Ban?

Fail2Ban 是一种入侵防御工具,可监控日志文件并阻止显示恶意活动迹象的 IP 地址。 它通过创建“过滤器”来匹配日志文件中的某些模式并执行操作,例如阻止违规 IP 地址。

为什么在 Linux 中使用 Fail2Ban?

在 Linux 中使用 Fail2Ban 有几个原因。 或许:

  • 它通过自动阻止恶意 IP 地址来节省您的时间。
  • 通过减少攻击成功的机会来帮助保护您的服务器。
  • 它让您高枕无忧,因为您知道您的服务器正在受到监控和保护。

在 Linux 中安装 Fail2Ban

默认情况下,Fail2Ban 在 Ubuntu 存储库中可用。 使用apt安装它。

sudo add-apt-repository universe sudo apt update && sudo apt install fail2ban -y

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

Fail2Ban 会在后台设置它的服务,但 systemd 默认会禁用它。 您可以使用以下命令启动并启用它:

sudo systemctl 启动 fail2ban sudo systemctl 启用 fail2ban

使用以下命令验证 Fail2Ban 是否正在运行:

sudo systemctl状态为fail2ban

您将看到类似于下图的输出。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

在 Linux 中配置 Fail2Ban

“/etc/fail2ban”目录包含 Fail2Ban 的配置文件。 默认情况下,Fail2Ban 附带一个“jail.conf”文件,其中包含将应用于所有服务的设置。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

但是,最好创建一个本地“jail.local”文件并覆盖“jail.conf”中的设置,因为只要软件更新,您对“jail.conf”所做的任何更改都会丢失。

您可以使用以下命令创建“jail.local”文件:

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

打开 jail.local 文件进行编辑:

sudo nano /etc/fail2ban/jail.local

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

好知识:学习 如何在 LINUX 上启用无密码 SSH 登录。

探索 jail.local 文件

您将看到如下所示的类似输出,您可能会被可用选项的数量所淹没。 但别担心,我们会引导您完成最重要的选项。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

你会看到一个图标 “#” 在行首,表示这是一条注释。 Fail2Ban 使用这些来解释特定设置的作用。 您可以通过删除此图标在此处启用某些设置。

部分包含 “[默认]” 适用于所有监狱的选项。 这是 Fail2Ban 的一般配置。 以下屏幕截图显示了一个示例。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

还有其他部分以服务名称开头。 此监狱适用于世界监狱之上的特定服务。

另請閱讀:  什么是 Proton for Steam,它如何影响 Linux 上的游戏?

例如,有一个监狱部分 “sshd”。 本节包含 sshd 服务的选项。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

提示:您还可以在以下位置了解有关服务器强化的更多信息 保护您的 SSH 服务器.

启用自动禁止功能

进入设置 “bantime = 1 小时并删除代码 “#” 在该行的开头启用它。 此行设置 Fail2Ban 禁用 IP 地址所需的时间。 默认单位是 XNUMX 小时。 您还可以使用其他单位,例如分钟 (米) 或天 (四) 甚至数周 (w)。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

您可以根据需要增加或减少此值。 例如,您可以将此值更改为 30 米,以将阻塞持续时间减少到 30 分钟。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

更改登录窗口的默认长度

接下来的设置是“maxretry”和“findtime”。 它们限制了攻击者在 Fail2Ban 阻止其 IP 地址之前可以进行的登录尝试次数。

“maxretry”和“findtime”的默认值是 5 和 10 m。 如果一个 IP 在 2 分钟内失败了 XNUMX 次,FailXNUMXBan 将在 bantime 设置指定的持续时间内阻止它。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

您可以将这些值更改为您想要的任何值。 例如,您可以将“maxretry”设置为 3,将“findtime”设置为 5m:如果某个 IP 地址在 2 分钟内验证失败 XNUMX 次,FailXNUMXBan 将禁用该 IP 地址。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

在 Linux 中启用 Fail2Ban 通知功能

以下设置是 destemail、sendername 和 mta。 Fail2Ban 将使用这些设置来配置电子邮件通知。

  • 电子邮件设置是程序将向其发送通知的电子邮件地址。
  • 发件人姓名将显示在通知电子邮件的“发件人”字段中。
  • mta 是 Fail2Ban 用来发送电子邮件的邮件传输代理。 mta 默认为 sendmail ,但您可以将其更改为其他内容,例如邮件。

如果你想接收邮件通知,你需要取消这些行的注释并输入适当的值,如图所示。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

当禁令发生时,您将收到一封电子邮件通知,其中包含有关禁令的详细信息,如图所示。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

创建自定义大宗订单

下一个设置是“action_=”。 这指定了 Fail2ban 在阻止 IP 地址时采取的操作。 默认是使用 iptables 来阻止 IP,直到“bantime”到期。

您还可以使用其他过程,如下所述。 为简单起见,本教程坚持使用默认设置。

  • action_mw: 当 IP 地址被阻止时发送电子邮件通知以及相关的 WHOIS 信息。
  • action_mwl: 当 IP 地址被阻止时发送电子邮件通知,以及导致阻止的相关 WHOIS 信息和日志文件条目。
  • action_xarf: 当 IP 地址被阻止时发送 X-ARF 电子邮件通知以及触发阻止的日志文件条目。
另請閱讀:  20 年 2021 个最佳轻量级 Linux 发行版

还有许多其他过程可用,但不可能在本教程中涵盖所有这些过程。 您可以 阅读所有可用的程序 在 Fail2ban 文档中。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

为服务启用配置

除了配置 Fail2ban 的默认行为外,还可以为一些流行的 Internet 服务使用预制的过滤器文件。 这些是由开发人员编写的小文件,用于搜索特定服务器的特定日志输出。

例如,“apache-shellshock.conf”文件包含所有必要的设置,允许 Fail2ban 检查是否有任何恶意尝试生成 shellshock 错误。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

您可以通过列出目录“/etc/fail2ban/filter.d”来找到适用于您系统的所有可用过滤器文件:

ls /etc/fail2ban/filter.d

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

知道要使用的过滤器后,通过打开“jail.local”文件告诉 Fail2ban 在启动期间加载它们:

sudo nano /etc/fail2ban/jail.local

在“jail.local”中创建一个空间,您可以在其中激活新过滤器。 我在评论标题和 [INCLUDES] 块之间创建了自己的。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

添加要激活的过滤器。 例如,以下是我在配置中使用的片段:

# Comments: 使用 '#' 作为注释行和 ';' (在空格之后)用于内联注释 [sshd] enabled = true [nginx-bad-request] enabled = true [bitwarden] enabled = true [INCLUDES]

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

完成后,保存并关闭文件。 重新启动 fail2ban 以应用更改。

sudo systemctl 重新启动 fail2ban

测试您的配置

现在您已经在 Linux 中配置了 Fail2Ban,是时候对其进行测试了。

测试您的配置的最简单方法是快速连续多次尝试使用不正确的密码登录。 您可以使用 SSH 连接来执行此操作。

在处置机器上,尝试使用“admin”用户名通过 SSH 连接到您的 Fail2ban 服务器。 将“your_server_ip_address”替换为您的 Fail2ban 服务器的实际 IP 地址。

ssh admin@your_server_ip_address

出现提示时输入随机密码并重复几次。 尝试几次后,您将看到一条消息,表明服务器拒绝了您的连接尝试。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

除了使用 ssh,您还可以通过运行 Fail Status 来测试 Fail2ban 中的其他过滤器文件。 在我的例子中,我使用“nginx-bad-request”过滤器来检测主机是否正在向服务器发送无效请求。

另請閱讀:  如何让 Ubuntu 看起来像 macOS Big Sur

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

知道这一点后,您可以通过使用 curl 有意向您的 Web 服务器发送空请求来测试此功能:

curl -H “用户代理:” -H “主机:” https://yourwebsite.com -v

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

在 Linux 中检查 Fail2Ban 例程

最后,在 Fail2ban 服务器上运行以下命令以验证 fail2ban 是否已将必要的规则添加到 iptables。

grep 命令过滤 iptables 命令的输出。 -S 选项告诉 iptables 以易于解析的格式打印规则。

须藤 iptables -S | grep f2b

您将看到类似于下图的输出。 “–reject-with icmp-port-unreachable”参数告诉 iptables 在尝试连接时向客户端发送 ICMP 端口不可达消息。 您还可以查看服务器已阻止的设备的 IP 地址。

如何在 Linux 中使用 Fail2Ban 保护您的服务器 - %categories

提示:您还应该使用 SELinux 来保护您的 Linux 服务器。

经常问的问题

Q1:当 Fail2ban 阻止 IP 地址时,为什么我会收到空​​白电子邮件通知?
الجواب: 如果您收到一封空的电子邮件通知,很可能是您没有正确配置您的邮件服务器。 检查您的邮件服务器配置并确保它可以发送电子邮件。

Q2:如何解锁IP地址?
الجواب: 首先找到当前被封IP的jail:sudo fail2ban-client status ,然后通过运行以下命令取消阻止 IP 地址:sudo fail2ban-client set 未清理.

Q3:如何查看fail2ban日志文件?
الجواب: 您可能需要查看 fail2ban 日志文件以解决问题或找出 IP 地址被阻止的原因。 文件“/var/log/fail2ban.log”包含 fail2ban 生成的所有日志。 使用cat命令查看fail2ban日志文件:cat /var/log/fail2ban.log。

Q4:我启用了多个过滤文件。 为什么他们都不工作?
الجواب: 发生此问题的最有可能是因为筛选器覆盖了它之前的另一个文件。 解决此问题的一种方法是通过将多个过滤器组合在一起来创建您自己的过滤器文件。

Q5:Fail2ban 会保护我的服务器免受 DoS 攻击吗?
الجواب: 是和不是。 在大多数情况下,Fail2ban 将能够阻止任何向您的服务器发送无效请求的 IP。 但是,该程序的最大限制之一是它无法对不产生日志条目的事件采取行动。 因此,针对这些形式的攻击,使用其他工具保护您的 Linux 服务器仍然很重要。

你可能也会喜欢