如何在 CentOS/RHEL 8 上安装 Fail2Ban 来保护 SSH
Fail2ban 是一款免费、开源且广泛使用的入侵防御工具,它扫描日志文件中是否存在显示恶意迹象(例如密码失败次数过多等)的 IP 地址,并禁止它们(更新防火墙拒绝 IP 地址的规则)。默认情况下,它附带了各种服务的过滤器,包括sshd。
另请阅读:使用 CentOS/RHEL 8 进行初始服务器设置
在本文中,我们将介绍如何安装和配置 fail2ban 来保护 SSH 并提高 SSH 服务器安全性,防止 上的暴力攻击CentOS/RHEL 8。
在 CentOS/RHEL 8 上安装 Fail2ban
fail2ban 软件包不在官方存储库中,但可以在 EPEL 存储库中找到。登录系统后,访问命令行界面,然后在系统上启用 EPEL 存储库,如图所示。
dnf install epel-release
OR
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
然后,通过运行以下命令安装 Fail2ban 软件包。
dnf install fail2ban
配置 Fail2ban 保护 SSH
fail2ban 配置文件位于 /etc/fail2ban/ 目录中,过滤器存储在 /etc/fail2ban/filter.d/ 中目录(sshd 的过滤器文件为 /etc/fail2ban/filter.d/sshd.conf)。
fail2ban服务器的全局配置文件是/etc/fail2ban/jail.conf,但是不建议直接修改该文件,因为打包的情况下可能会被覆盖或者改进未来升级。
作为替代方案,建议在 jail.local 文件或 /etc/fail2ban/jail 下的单独 .conf
文件中创建和添加配置。 d/ 目录。请注意,jail.local 中设置的配置参数将覆盖 jail.conf 中定义的任何内容。
对于本文,我们将在 /etc/fail2ban/ 目录中创建一个名为 jail.local 的单独文件,如图所示。
vi /etc/fail2ban/jail.local
文件打开后,将以下配置复制并粘贴到其中。 [DEFAULT]
该部分包含全局选项,[sshd]
包含 sshd Jail 的参数。
[DEFAULT]
ignoreip = 192.168.56.2/24
bantime = 21600
findtime = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd
[sshd]
enabled = true
我们简单解释一下上面配置中的选项:
- ignoreip:指定不禁止的 IP 地址或主机名列表。
- bantime:指定主机被禁止的秒数(即有效禁止持续时间)。
- maxretry:指定主机被禁止之前的失败次数。
- findtime:如果主机在最后“findtime”秒内生成了“maxretry”,fail2ban 将禁止该主机。
- banaction:禁止行动。
- backend:指定用于获取日志文件修改的后端。
因此,上述配置意味着如果某个 IP 在过去 5 分钟内失败 3 次,则将其禁止 6 小时,并忽略该 IP IP 地址192.168.56.2。
接下来,暂时启动并启用 fail2ban 服务,并使用以下 systemctl 命令检查它是否已启动并正在运行。
systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban
使用fail2ban-client监控失败和禁止的IP地址
配置fail2ban以保护sshd后,您可以使用fail2ban-client监控失败和禁止的IP地址。要查看fail2ban服务器的当前状态,请运行以下命令。
fail2ban-client status
要监视 sshd 监狱,请运行。
fail2ban-client status sshd
要在fail2ban(在所有监狱和数据库中)中取消禁止IP地址,请运行以下命令。
fail2ban-client unban 192.168.56.1
有关fail2ban 的更多信息,请阅读以下手册页。
man jail.conf
man fail2ban-client
这就是本指南的总结!如果您对此主题有任何疑问或想法想要分享,请随时通过下面的反馈表与我们联系。