Rocky Linux 8 使用 Firewalld 安装 Fail2ban

Fail2ban 是一个免费的开源入侵防御软件解决方案,可保护服务器免受暴力登录攻击。 它监控 SSH 和其他 Web 应用程序的各种日志文件,每当检测到任何失败的身份验证并达到最大数量时,Fail2Ban 将使用 Firewalld 的 iptables 自动阻止 IP 地址。 Fail2Ban 简单、方便、易于配置且灵活。

在本指南中,我们将向我们展示 Rocky Linux 8 上使用 firewalld 安装 Fail2Ban。

先决条件

  • 在 云平台上运行 Rocky Linux 8 的服务器
  • 在我们的服务器上配置的 root 密码

第 1 步 – 创建 云服务器

首先,登录到我们的 云服务器。 创建一个新服务器,选择 Rocky Linux 8 作为至少 2GB RAM 的操作系统。 通过 SSH 连接到我们的云服务器并使用页面顶部突出显示的凭据登录。

登录到服务器后,运行以下命令以使用最新的可用软件包更新基本系统。

dnf update -y

第 2 步 – 配置 Firewalld

在 Rocky Linux 8 中默认预装了 Firewalld。我们可以使用以下命令检查是否已安装:

dnf info firewalld

如果已安装,我们将获得以下输出:

Last metadata expiration check: 0:34:46 ago on Wednesday 17 November 2021 09:52:51 AM UTC.
Installed Packages
Name         : firewalld
Version      : 0.8.2
Release      : 7.el8_4
Architecture : noarch
Size         : 1.9 M
Source       : firewalld-0.8.2-7.el8_4.src.rpm
Repository   : @System
From repo    : baseos
Summary      : A firewall daemon with D-Bus interface providing a dynamic firewall
URL          : http://www.firewalld.org
License      : GPLv2+
Description  : firewalld is a firewall service daemon that provides a dynamic customizable
             : firewall with a D-Bus interface.

Available Packages
Name         : firewalld
Version      : 0.9.3
Release      : 7.el8
Architecture : noarch
Size         : 501 k
Source       : firewalld-0.9.3-7.el8.src.rpm
Repository   : baseos
Summary      : A firewall daemon with D-Bus interface providing a dynamic firewall
URL          : http://www.firewalld.org
License      : GPLv2+
Description  : firewalld is a firewall service daemon that provides a dynamic customizable
             : firewall with a D-Bus interface.

接下来,验证 Firewalld 是否正在运行。

systemctl status firewalld

我们应该看到 Firewalld 服务被屏蔽:

● firewalld.service
   Loaded: masked (Reason: Unit firewalld.service is masked.)
   Active: inactive (dead)

因此,我们需要取消屏蔽 Firewalld 服务。 我们可以使用以下命令取消屏蔽它:

systemctl unmask firewalld

接下来,启动 Firewalld 服务并使其在系统重新启动时启动:

systemctl start firewalld
systemctl enable firewalld

此时,Firewalld 已在我们的系统中安装并运行。 我们现在可以继续下一步。

第 3 步 – 安装 Fail2Ban

默认情况下,Fail2Ban 包不包含在 Rocky Linux 8 默认存储库中,因此我们需要将 EPEL 存储库添加到我们的系统。 运行以下命令来安装 EPEL 存储库:

dnf install epel-release -y

接下来,使用以下命令安装 Fail2Ban 包:

dnf install fail2ban fail2ban-firewalld -y

安装 Fail2Ban 后,使用以下命令启动并启用 Fail2Ban 服务:

systemctl start fail2ban
systemctl enable fail2ban

我们可以使用以下命令验证 Fail2Ban 版本:

fail2ban-client --version

样本输出:

Fail2Ban v0.11.2

第 4 步 – 配置 Fail2Ban

默认情况下,Fail2Ban 配置为使用 iptables 防火墙,因此我们需要配置 Fail2Ban 以使用 Firewalld。

首先,使用以下命令重命名 Fail2Ban 的 Firewalld 配置文件:

mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local

接下来,复制 Fail2Ban 默认配置文件:

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

接下来,编辑 jail.local 文件:

nano /etc/fail2ban/jail.local

找到以下几行:

banaction = iptables-multiport
banaction_allports = iptables-allports

并将它们替换为以下行:

banaction = firewallcmd-rich-rules[actiontype=]
banaction_allports = firewallcmd-rich-rules[actiontype=]

保存并关闭文件,然后重新启动 Fail2Ban 以应用更改:

systemctl restart fail2ban

此时,Fail2Ban 已配置为与 Firewalld 一起使用。

第 5 步 – 使用 Fail2Ban 保护 SSH 服务

默认情况下,Fail2Ban 未配置为阻止任何 IP 地址。 我们需要为要保护的每项服务启用特定的监狱。

要保护 SSHD 服务,请编辑 jail.local 文件:

nano /etc/fail2ban/jail.local

找出 [sshd] 部分并通过添加以下行来启用它:

[sshd]

enabled = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
bantime = 10m
findtime = 10m
maxretry = 5

保存并关闭文件,然后重新启动 Fail2Ban 以应用更改:

systemctl restart fail2ban

我们现在可以使用以下命令验证 Fail2Ban 的状态:

systemctl status fail2ban

我们将获得以下输出:

● fail2ban.service - Fail2Ban Service
   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-11-17 10:34:49 UTC; 2s ago
     Docs: man:fail2ban(1)
  Process: 21154 ExecStop=/usr/bin/fail2ban-client stop (code=exited, status=0/SUCCESS)
  Process: 21185 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
 Main PID: 21186 (fail2ban-server)
    Tasks: 5 (limit: 11411)
   Memory: 14.6M
   CGroup: /system.slice/fail2ban.service
           └─21186 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start

Nov 17 10:34:49 rockylinux systemd[1]: Starting Fail2Ban Service...
Nov 17 10:34:49 rockylinux systemd[1]: Started Fail2Ban Service.
Nov 17 10:34:49 rockylinux fail2ban-server[21186]: Server ready

第 6 步 – 验证 Fail2Ban 防火墙

此时,Fail2Ban 被配置为保护 SSH 服务。 现在,是时候检查 Fail2Ban 是否正常工作了。

首先,使用以下命令验证 jail 配置:

fail2ban-client status

我们应该看到以下输出:

Status
|- Number of jail:	1
`- Jail list:	sshd

现在,转到远程机器并尝试使用错误的密码连接到 SSH 服务器。 达到最大重试次数(5 次)后,我们的 IP 地址将被 Fail2Ban 阻止。

现在,使用以下命令检查被 Fail2Ban 阻止的 IP 地址:

fail2ban-client status sshd

我们应该得到以下输出:

Status for the jail: sshd
|- Filter
|  |- Currently failed:	1
|  |- Total failed:	6
|  `- Journal matches:	_SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned:	1
   |- Total banned:	1
   `- Banned IP list:	27.61.171.115

我们可以使用以下命令检查 Firewalld 添加的规则:

firewall-cmd --list-rich-rules

我们将获得以下输出:

rule family="ipv4" source address="27.61.171.115" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"

我们还可以查看 Fail2Ban 日志以获取更多信息:

tail -f /var/log/fail2ban.log

样本输出:

2021-11-17 10:37:21,837 fail2ban.filter         [21186]: INFO    [sshd] Found 27.61.171.115 - 2021-11-17 10:37:21
2021-11-17 10:37:21,859 fail2ban.actions        [21186]: NOTICE  [sshd] Ban 27.61.171.115
2021-11-17 10:37:27,220 fail2ban.filter         [21186]: INFO    [sshd] Found 27.61.171.115 - 2021-11-17 10:37:27

恭喜! 我们已成功安装 Fail2Ban 和 Firewalld。 我们现在可以在我们的服务器上实施 Fail2Ban 以保护它免受暴力登录攻击。 在 的 VPS 托管帐户上试用!

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论