如何在 Alma Linux 8 上安装和配置 Fail2ban
在此页
- 先决条件
- 验证防火墙安装
- 安装 Fail2Ban
- 配置 Fail2Ban
- 使用 Fail2Ban 保护 SSH
- 结论
Fail2ban 是一个用 Python 编写的免费开源入侵防御系统。它用于保护您的系统免受暴力攻击。它持续监控 SSH(和其他)日志文件以进行身份验证尝试,在指定次数的错误密码尝试后,客户端 IP 地址将被 Fail2Ban 禁止。它可用于保护多种服务,包括 SSH、vsftpd、Apache 和 Webmin。
在本教程中,我将向您展示如何在 Alma Linux 8 上安装 Fail2Ban 防火墙。
先决条件
- 一台运行 Alma Linux 8 的服务器。
- 在服务器上配置了根密码。
验证 Firewalld 安装
默认情况下,Firewalld 软件包预装在 Alma Linux 8 上。首先,您需要检查它是否正在运行。您可以使用以下命令检查它:
systemctl status firewalld
如果 firewalld 未运行,您将获得以下输出:
? firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
现在,使用以下命令启动 firewalld 服务:
systemctl start firewalld
您可以使用以下命令检查 firewalld 的状态:
systemctl status firewalld
您应该看到以下输出:
? firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2022-02-19 08:57:14 UTC; 40s ago
Docs: man:firewalld(1)
Main PID: 7214 (firewalld)
Tasks: 2 (limit: 23696)
Memory: 27.9M
CGroup: /system.slice/firewalld.service
??7214 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
Feb 19 08:57:14 linux systemd[1]: Starting firewalld - dynamic firewall daemon...
Feb 19 08:57:14 linux systemd[1]: Started firewalld - dynamic firewall daemon.
现在,使用以下命令列出 firewalld 配置的所有服务:
firewall-cmd --list-all
您应该看到以下输出:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
安装 Fail2Ban
默认情况下,Alma Linux 默认存储库中不提供 Fail2Ban 包。所以你需要从 EPEL 仓库安装它。您可以使用以下命令安装 EPEL 存储库:
dnf install epel-release -y
安装 EPEL 存储库后,您可以使用以下命令安装 Fail2Ban 防火墙:
dnf install fail2ban fail2ban-firewalld -y
安装完成后,使用以下命令启动并启用 Fail2Ban 服务:
systemctl start fail2ban
systemctl enable 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 Sat 2022-02-19 08:58:34 UTC; 6s ago
Docs: man:fail2ban(1)
Process: 7838 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
Main PID: 7840 (fail2ban-server)
Tasks: 3 (limit: 23696)
Memory: 10.8M
CGroup: /system.slice/fail2ban.service
??7840 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start
Feb 19 08:58:34 linux systemd[1]: Starting Fail2Ban Service...
Feb 19 08:58:34 linux systemd[1]: Started Fail2Ban Service.
Feb 19 08:58:35 linux fail2ban-server[7840]: Server ready
配置 Fail2Ban
Fail2Ban 主要配置文件位于 /etc/fail2ban/jail.conf。创建主配置文件的副本是个好主意。您可以使用以下命令创建它:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
默认情况下,Fail2Ban 使用 Iptables 防火墙。要启用 firewalld 支持,请运行以下命令:
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
接下来,重新启动 Fail2Ban 服务以应用更改:
systemctl restart fail2ban
使用 Fail2Ban 保护 SSH
默认情况下,Fail2Ban 未配置为阻止远程 IP。您需要为每个要保护的服务配置 Fail2Ban 监狱配置文件。
为了保护 SSH 服务,使用以下命令为 SSH 创建一个监狱配置文件:
nano /etc/fail2ban/jail.d/sshd.local
添加以下行:
# This configuration will block the remote host for 2 hours after 3 failed SSH login attempts.
[sshd]
enabled = true
bantime = 2h
maxretry = 3
完成后保存并关闭文件,然后重新启动 SSH 服务以应用更改:
systemctl restart fail2ban
您现在可以使用以下命令验证监狱配置:
fail2ban-client status
您将在以下输出中获得配置的监狱:
Status
|- Number of jail: 1
`- Jail list: sshd
要检查任何被禁止的 IP 的 SSH 监狱,请运行以下命令:
fail2ban-client status sshd
您将在以下输出中获得所有被禁止的 IP 列表:
Status for the jail: sshd
|- Filter
| |- Currently failed: 6
| |- Total failed: 15
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 2
|- Total banned: 2
`- Banned IP list: 96.9.67.48 43.154.142.8
如果要手动解禁 IP 地址,请运行以下命令:
fail2ban-client unban remote-ip-address
结论
在上面的指南中,我们解释了如何在 Alma Linux 8 上安装 Fail2Ban。我们还解释了如何使用 Fail2Ban 来保护 SSH 服务。您现在可以在生产环境中实施 Fail2Ban 以保护您的系统免受暴力攻击。