云网牛站
所在位置:首页 > Linux安全 > 在Fedora 31及RHEL/CentOS 8上安装和配置Fail2Ban

在Fedora 31及RHEL/CentOS 8上安装和配置Fail2Ban

2020-06-23 11:06:58作者:刘若鑫稿源:云网牛站

本文使用的是Fedora(31及更高版本)或RHEL/CentOS 8的当前版本,在CentOS上,必须使用sudo dnf install epel-release命令启用Fedora EPEL repo。fail2ban:守护程序,禁止导致多个身份验证错误的主机,fail2ban将监视SystemD日志以查找启用了任何jail的身份验证尝试失败,在指定失败尝试次数之后,它将添加防火墙规则以在指定的时间内阻止该特定IP地址。

 

启用sshd服务

默认情况下未启用sshd服务本身,要手动启动:

$ sudo systemctl start sshd

或在启动时启动并启用:

$ sudo systemctl enable --now sshd

 

安装、配置和启用Fail2Ban

可以从命令行完成安装:

$ sudo dnf install fail2ban

其它Linux系统请参考在服务器Ubuntu Server 18.04版本下安装fail2ban的方法

安装完成后,下一步就是配置jail(您要以设置的任何阈值监视和禁止的服务),默认情况下,IP被禁止使用1小时(时间不够长),最佳做法是使用*.local文件覆盖系统默认值,而不是直接修改*.config文件,如果我们查看我的jail.local,我们会看到:

# cat /etc/fail2ban/jail.local

[DEFAULT]

# "bantime" is the number of seconds that a host is banned.

bantime  = 1d

# A host is banned if it has generated "maxretry" during the last "findtime"

findtime  = 1h

# "maxretry" is the number of failures before a host get banned.

maxretry = 5

将其转换为简单的语言,在最后一小时内尝试5次后,该IP将被阻止1天,还可以选择增加被多次禁止的IP的禁止时间。

下一步是配置jail,在本教程中,显示​​了sshd,但其他服务的步骤大致相同。在/etc/fail2ban/jail.d中创建一个配置文件,这是我的:

# cat /etc/fail2ban/jail.d/sshd.local

[sshd]

enabled = true

就这么简单,为Fedora构建的软件包已经处理了许多配置,接下来启用并启动fail2ban服务:

$ sudo systemctl enable --now fail2ban

希望没有立即发生的错误,如果没有,请使用以下命令检查fail2ban的状态:

$ sudo systemctl status fail2ban

如果开始时没有错误,则应如下所示:

$ systemctl status fail2ban

fail2ban.service - Fail2Ban Service

Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled)

Active: active (running) since Mon 2020-06-22 07:57:40 GTM+8; 5s ago

Docs: man:fail2ban(1)

Process: 11230 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)

Main PID: 11235 (f2b/server)

Tasks: 5 (limit: 4630)

Memory: 12.7M

CPU: 109ms

CGroup: /system.slice/fail2ban.service

└─11235 /usr/bin/python3 -s /usr/bin/fail2ban-server -xf start

Jun 22 07:57:40 localhost.localdomain systemd[1]: Starting Fail2Ban Service…

Jun 22 07:57:40 localhost.localdomain systemd[1]: Started Fail2Ban Service.

Jun 22 07:57:41 localhost.localdomain fail2ban-server[11235]: Server ready

如果是最近启动的,fail2ban不太可能显示任何其他的,但要检查一下fail2ban的状态并确保启用了jail功能,请输入:

$ sudo fail2ban-client status

在Fedora 31及RHEL/CentOS 8上安装和配置Fail2Ban

并显示sshd jail的高级状态。

要查看jail的详细状态,只需将jail添加到上一个命令中即可,这是我的系统已经运行了一段时间的输出,我已经从输出中删除了被禁止的IP:

$ sudo fail2ban-client status sshd

在Fedora 31及RHEL/CentOS 8上安装和配置Fail2Ban

可以通过对日志进行“tailing”来监视fail2ban日志文件中的入侵尝试:

$ sudo tail -f /var/log/fail2ban.log

Tail是一个不错的小命令行实用程序,默认情况下显示文件的最后10行,添加“-f”表示要跟随文件,这是观看仍在写入文件的好方法。

由于输出中包含真实IP,因此将不会提供示例,但该示例非常易于阅读。INFO行通常是尝试登录,如果从特定IP地址进行了足够的尝试,您将看到一条NOTICE行,显示IP地址被禁止,达到禁令时间后,您将看到一条NOTICE禁令行。

注意几条警告线,通常,添加禁止后会发生这种情况,而fail2ban会在其禁止数据库中找到IP地址,这意味着禁止可能无法正常工作。如果最近安装了fail2ban软件包,则应该为FirewallD丰富的规则进行设置,从fail2ban-0.11.1-6开始,该软件包仅从“ipset”切换为“rich rules”,因此,如果您安装的是fail2ban较旧的版本,则可能仍在尝试使用利用旧iptables的ipset方法,但该方法不是很可靠。

 

相关主题

在Ubuntu中用Fail2Ban保护SSH

精选文章
热门文章