当前位置: 首页 > 工具软件 > Fail2ban > 使用案例 >

服务器安全神器,Linux 上安装 Fail2Ban 保护 SSH

戚令秋
2023-12-01

服务器安全神器,Linux 上安装 Fail2Ban 保护 SSH,这只是其功能的冰山一角

前言

之前使用的 denyhosts 方案已经过时。一些研究表明 hosts.{allow,denied} 文件已过时。可使用其他替代方案。hosts.{allow,denied} 依赖于 libwrap.so,所以先执行 ldd /usr/sbin/sshd | grep libwrap.so 查看是否有输出内容(依赖于 openssh 的版本)。对于 Centos7 应该是有 libwrap.so 的,Centos8 上应该没有。所以对于 Centos8,问题会变得更麻烦。

替代方案

IIRC,DenyHosts 只会监视您的 SSH 服务。如果您还需要它来保护其他服务,Fail2ban 绝对是更好的选择。如果您愿意调整其配置,它几乎可以配置为监视任何服务,但这不是必需的,因为较新版本的 Fail2ban 包含适用于许多流行服务器守护程序的规则集。在简单的 iptables 速率限制上使用 fail2ban 的好处是可以在指定的时间内完全阻止攻击者,而不是简单地降低他攻击你的服务器的速度。我在许多生产服务器上使用过 fail2ban 并取得了很好的效果,并且自从我开始使用它以来从未见过其中一台服务器被暴力攻击破坏。

fail2ban 使用 iptables 而 DenyHosts 使用 hosts.deny,某些服务不查看hosts文件,例如 Apache。

在本文中,我们将解释如何安装和配置 fail2ban 来保护 SSH 并提高 SSH 服务器的安全性,以防止对 CentOS / RHEL 8 的暴力攻击。

Fail2ban 是一个免费的开放源代码且广泛使用的入侵防御工具,它可以扫描日志文件中的 IP 地址,这些 IP 地址显示出恶意迹象,例如密码失败过多等等,并禁止它们(更新防火墙规则以拒绝 IP 地址)。 。 默认情况下,它附带用于各种服务的过滤器,包括 sshd 。

另请参阅 : 使用 CentOS / RHEL 8 进行初始服务器设置

在 CentOS / RHEL 8 上安装 Fail2ban

fail2ban 软件包不在官方存储库中,但在 EPEL 存储库中可用。 登录系统后,访问命令行界面,然后如图所示在系统上启用 EPEL 存储库。

$ dnf install -y epel-release

# 通过运行以下命令来安装 Fail2ban 软件包
$ dnf install -y fail2ban

# 或者
yum install fail2ban -y

配置 Fail2ban 保护 SSH

fail2ban 配置文件位于 /etc/fail2ban/ 目录中,过滤器存储在 /etc/fail2ban/filter.d/ 目录中(sshd 的过滤器文件为 /etc/fail2ban/filter.d/sshd.conf )。 。

fail2ban 服务器的全局配置文件是 /etc/fail2ban/jail.conf ,但是,不建议直接修改此文件,因为将来在升级程序包时可能会覆盖或改进该文件。

或者,建议在 /etc/fail2ban/jail.d/ 目录下的 jail.local 文件或单独的 .conf 文件中创建和添加配置。 请注意,在 jail.local 中设置的配置参数将覆盖 jail.conf 中定义的任何参数。

对于本文,我们将在 /etc/fail2ban/ 目录中创建一个名为 jail.local 的单独文件,如下所示。

echo '
[DEFAULT]
ignoreip = 192.168.56.0/24
bantime  = -1
findtime  = 300
maxretry = 5
banaction = iptables-multiport
backend = systemd

[sshd]
enabled = true
' > /etc/fail2ban/jail.local

Fail2ban 配置

让我们简要解释一下上述配置中的选项:

  • ignoreip :指定不禁止的 IP 地址或主机名列表。
  • bantime :禁止 IP 的持续时间(以秒为单位)。负数为“永久”禁止。
  • maxretry :指定禁止主机之前的故障数。默认为 3
  • findtime :如果在“findtime”秒内未找到匹配,则计数器设置为零。默认 600s
  • banaction:禁止行动。
  • backend :指定用于修改日志文件的后端。

因此,上述配置意味着,如果 IP 在最近 5 分钟内发生 5 次故障,则将其永久禁止,并忽略 IP 地址 192.168.56.0~192.168.56.255。

接下来,立即启动并启用 fail2ban 服务,并使用以下 systemctl 命令检查它是否已启动并正在运行。

#启动 Fail2ban s服务
systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban

使用 fail2ban-client 监视失败和禁止的 IP 地址

将 fail2ban 配置为保护 sshd 后 ,可以使用 fail2ban-client 监视失败和被禁止的 IP 地址。 要查看 fail2ban 服务器的当前状态,请运行以下命令。

# fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

检查 Fail2ban 监视 sshd 状态,请运行fail2ban-client status sshd

# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 86
|  |- Total failed:     213
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 3
   |- Total banned:     3
   `- Banned IP list:   68.183.50.70 64.227.120.10 51.91.151.44

要在 fail2ban 中取消禁止 IP 地址,请运行以下命令。

fail2ban-client unban 192.168.56.1

取消禁止所有 IP:

fail2ban-client unban --all

禁止掉 IP 之后,尝试连接时会报错:

# ssh root@11.113.15.28
ssh: connect to host 11.113.15.28 port 22: Connection refused

有关 fail2ban 的更多信息,请阅读以下手册页。

man jail.conf
man fail2ban-client

参考

https://www.howtoing.com/install-fail2ban-to-protect-ssh-on-centos-rhel

fail2ban 文档

说明

请关注 危 ❤ 工中号【进击云原生】,更有 free 资源供您学习

 类似资料: