CentOS、Rocky Linux、AlmaLinux 8/9如何使用Firewalld配置Fail2ban防护SSH扫描攻击
Fail2ban 是一个系统守护进程,用于保护服务器免受恶意登录和暴力攻击。 Fail2ban 是一个用 Python 编写的开源入侵防御软件框架,并且具有极强的可配置性。 它作为守护程序服务运行,将监视 SystemD 日志和日志文件,然后查找任何失败的身份验证尝试。当验证失败达到最大数时,fail2ban将使用防火墙软件自动阻止IP地址。
如果你是 VPS(虚拟专用服务器)或专用服务器所有者,您应该考虑在所有服务器上安装fail2ban。 它将帮助您保护一些基本服务(例如 SSH 和 FTP)免受恶意暴力攻击。 此外,fail2ban 非常方便、易于配置且灵活。
下面文章我将介绍如何在AlmaLinux 9中安装fail2ban、使用firewalld 配置fail2ban 以及保护SSH 服务免受暴力攻击。CentOS,Rocky Linux 8或者9基本都是一样的步骤,他们都是基于RedHat系统。这里使用firewalld是因为iptables从7开始就已经慢慢被抛弃,AlmaLinux 9上已经基本没用了。
如果需要CentOS 7的配置,参考这篇文章:《CentOS 7 Fail2ban SSH攻击防护》
第一步:检查Firewalld并启动
默认firewalld已经安装,设置自动启动,启动firewalld,查看状态。
systemctl start firewalld systemctl enable firewalld systemctl status firewalld
看到这个说明启动成功
第二步: 安装Fail2ban
dnf install epel-release dnf install fail2ban fail2ban-firewalld
也可以用yum,AlmaLinux也保留了7上面的yum包管理命令。
启动
systemctl start fail2ban systemctl enable fail2ban systemctl status fail2ban
第三步:配置Fail2ban
现在将配置fail2ban并启用fail2ban以与firewalld一起使用。
3.1 复制”jail.conf” 到 “jail.local”
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
3.2 编辑jail.local配置文件
在default块下面,检查设置默认几个参数,下面是我的设置。查找一小时内失败5次的请求后禁止一个小时访问。
bantime = 1h findtime = 1h maxretry = 5
3.3 启用firewalld
默认的fail2ban配置使用iptables进行阻止。 要使fail2ban能够使用firewalld进行阻止,请使用以下命令将配置“00-firewalld.conf”复制到“00-firewalld.local”。
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
3.4 重启fail2ban
systemctl restart fail2ban
第四步:启用SSH防护
默认情况下,fail2ban 不会阻止任何 IP 地址,直到您为要保护的每个服务启用防护配置。 此外,防护配置将覆盖“jail.local”上的默认配置,每个服务的防护配置都可以放在“/etc/fail2ban/jail.d”目录中。
4.1 创建sshd.local
vim /etc/fail2ban/jail.d/sshd.local
复制以下内容到文件
[sshd] enabled = true bantime = 1d maxretry = 3
该配置默认覆盖jail.local中有关“sshd”的“bantime”和“maxretry”默认选项。
4.2 重启fail2ban
systemctl restart fail2ban
查看是否生效
fail2ban-client status
检查配置和防护策略动作
就像上图所示,防护动作就是配置的 “firewallcmd-rich-rules” 。
第五步: 测试
到这里sshd服务器的攻击防护就已经设置好了,下面可以多次登录失败测试。禁止ip输入一下命令查看:
firewall-cmd --list-rich-rules
最后这样你已在 AlmaLinux 9 上成功安装了fail2ban框架。下一步你可以研究其他另一个来配置保护其他服务,例如 Nginx、FTP、Postfix、WordPress 等。