本文使用的是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
并显示sshd jail的高级状态。 要查看jail的详细状态,只需将jail添加到上一个命令中即可,这是我的系统已经运行了一段时间的输出,我已经从输出中删除了被禁止的IP: $ sudo fail2ban-client status sshd
可以通过对日志进行“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方法,但该方法不是很可靠。
相关主题 |