Linux如何使用Fail2ban防止暴力破解

Fail2ban 是一款开源入侵防御软件,有助于保护 Linux 服务器免受未经授权的访问尝试。它旨在扫描日志文件(例如系统日志或应用程序日志),并识别可疑或恶意活动,特别是重复失败的登录尝试或其他指定模式。当检测到此类活动时,Fail2ban 会通过动态更新防火墙规则来采取行动,阻止与可疑活动相关的 IP 地址,从而有效防止进一步的未经授权的访问。它适用于大多数远程连接服务,例如 SSH、FTP、SMTP 和 HTTP。

Fail2ban适用的情景

防御 SSH 暴力破解: Fail2ban 可有效缓解针对 SSH、FTP 或任何其他生成日志的服务等协议的 SSH 暴力破解。它可以检测来自特定 IP 地址的重复失败登录尝试,并动态阻止这些地址,从而防止进一步的未经授权的登录尝试。

减少密码破解: Fail2ban 有助于抵御密码猜测攻击,其中自动化工具会系统地尝试不同的用户名和密码组合来获取访问权限。通过识别和阻止与此类活动相关的 IP 地址,Fail2ban 减少了未经授权访问成功的机会。

增强服务器安全性: 通过持续监控日志和执行动态防火墙规则,Fail2ban 增强了服务器安全性并防范各种类型的恶意活动。它提供了额外的防御层,补充了服务器上实施的其他安全措施。

防止帐户锁定: Fail2ban 可以防止合法用户帐户因密码输入错误或意外登录失败而被锁定。它实施临时禁令,允许用户在特定时间后重试,而不会永久阻止他们。

自动响应安全威胁: Fail2ban 可自动执行检测和响应安全威胁的过程。它扫描日志,识别可疑模式,并通过动态更新防火墙规则来采取行动。这种自动化可以节省时间并减少管理员的工作量。

监控日志和审查: Fail2ban 生成有关检测到的安全事件的日志和报告,为监控和审计目的提供有价值的信息。管理员可以查看日志以深入了解潜在的安全风险并采取必要的纠正措施。

灵活制定安全策略: Fail2ban 允许管理员根据特定的安全策略和要求定义自定义规则和过滤器。这种灵活性使组织能够根据其独特的环境定制保护并解决他们可能面临的特定威胁。

借助 Fail2ban,您可以主动保护 Linux 服务器或 PC 的安全,从而降低安全漏洞的风险。

如何在 Linux 服务器上安装 Fail2ban

在本教程中,我们将使用 Ubuntu 作为示例。

1. 安装Fail2ban

登录Linux服务器后,使用以下命令切换到root帐户,并根据提示输入密码。

sudo -i
Install screen on Linux servers.

然后,使用以下命令安装 Fail2ban 并输入 y 继续安装软件包。

apt install fail2ban
Install screen on Linux servers.

2. 启动 Fail2ban 服务

通过启用该服务,该进程将在系统启动时在后台运行。

systemctl enable fail2ban.service
Enable fail2ban service
然后,使用以下命令启动服务。
systemctl start fail2ban
Start fail2ban service
接下来,通过这个命令检查 Fail2ban 服务的状态。从输出中,您可以看到服务正在运行。最后同时按下“Ctrl”和“C”即可退出状态检查。
systemctl status fail2ban
Check the status of fail2ban service

3. 配置Fail2ban

Fail2ban 的配置文件存储在/etc/fail2ban/jail.conf 文件中。通过以下命令,您可以获得jail.conf文件的前20行。内容主要是提示您不要直接修改此文件,而是在jail.d/目录中创建单独的文件或在jail.local文件中进行自定义配置。 jail.conf 文件将与 Fail2ban 本身一起定期更新,在您未进行任何自定义修改的情况下,可作为默认设置的参考。

cd /etc/fail2ban
head -20 jail.conf
Enable fail2ban service

在本教程中,我们将创建一个jail.local 文件并在该文件中进行自定义配置。我们先通过以下命令复制jail.conf来创建jail.local。

cd /etc/fail2ban && cp jail.conf jail.local
Start fail2ban service

从输出中,您可以看到ijail.local文件已被复制。
接下来,我们可以开始使用您喜欢的任何文本编辑器对jail.local文件进行自定义。在本教程中,我们使用 nano 编辑器。运行以下命令打开文件。

nano jail.local
Use text editor to open the jail.local file

该文件由许多部分组成,这些部分定义了特定服务的设置。 DEFAULT 下的设置将应用于 Fail2ban 支持的所有服务。其他部分(例如 sshd)的设置包含特定于服务的设置,这些设置将覆盖默认值。在设置参数的具体值时,可以阅读每个参数上方以#开头的注释,以供参考。

例如,在DEFAULT部分下,bantime设置用户认证失败后将被禁止的时间长度。
maxretry参数定义用户在被禁止之前在一定时间内可以经历的最大身份验证失败次数。
为了测试,我们将值分别设置为 20分钟 和 2次。

Customize jail settings

向下滚动文件,您可以更改您想要自定义的设置。例如,您可以通过将“enabled = true”添加到 sshd 部分来启用 sshd 监狱。

Enable SSHD jail

自定义完成后,按“Ctrl”和“X”,然后输入“y”,然后按回车键保存更改。最后,通过运行以下命令重新启动 Fail2ban 服务,以使更改生效。

systemctl restart fail2ban
Restart fail2ban service

4. 测试 Fail2ban 配置

现在您可以测试 maxretry 配置是否有效。尝试通过 SSH 登录到您配置的服务器。当提示输入登录凭据时,输入错误的密码。根据配置,Fail2ban 将阻止此IP 20 分钟。

Authentication failures

您可以检查 Fail2ban 服务的日志以获取更多详细信息。

cat /var/log/fail2ban.log
Check logs

该 IP 因两次身份验证失败被禁,并按照配置在 20 分钟后解封。

Log details

Fail2ban 是一个功能强大的工具,可以通过防止 SSH 暴力攻击来显着增强 Linux 系统的安全性。通过分析日志文件并自动禁止恶意 IP 地址,Fail2ban 可以充当可靠的守护者,防止未经授权的访问尝试。在本博客中,我们展示了安装过程和配置选项。您可以开始安装 Fail2ban 并根据需要对其进行配置,以构建更安全的 Linux 服务器环境。请记住,在当今的数字环境中,积极主动地保护您的系统至关重要,而 Fail2ban 是一个很有效的工具。因此,请采取必要的步骤来保护您的 Linux 系统并阻止潜在的攻击者。

尽管Fail2ban 是增强 Linux 服务器安全性的很好的工具,但它并不是全面安全性的唯一解决方案。除了实施 Fail2ban 之外,您还应该考虑其他措施来增强 Linux 系统的安全性,例如使用强密码和配置防火墙。