
所有暴露在互联网上的服务器都有遭受恶意软件攻击的风险。例如,如果你有一个连接到公共网络的软件,攻击者可以使用暴力尝试来获得对应用程序的访问。
Fail2ban是一个开源工具,通过监测服务日志中的恶意活动,帮助保护你的Linux机器免受暴力攻击和其他自动攻击。它使用正则表达式来扫描日志文件。所有与模式相匹配的条目都被计算在内,当它们的数量达到某个预定的阈值时,Fail2ban会在特定的时间内禁止违规的IP。默认的系统防火墙被用作禁止动作。禁令期满后,该IP地址将从禁令列表中移除。
本文介绍了如何在CentOS 8上安装和配置Fail2ban。
在CentOS上安装Fail2ban
Fail2ban软件包已包含在默认的CentOS 8软件仓库中。要安装它,请以root身份或具有sudo权限的用户输入以下命令。
sudo dnf install fail2ban
安装完成后,启用并启动Fail2ban服务。
sudo systemctl enable --now fail2ban
要检查Fail2ban服务器是否正在运行,请输入。
sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-09-10 12:53:45 UTC; 8s ago
...
就可以了。至此,您的CentOS服务器上已运行Fail2Ban。
Fail2ban配置
默认的Fail2ban安装包含两个配置文件:/etc/fail2ban/jail.conf和/etc/fail2ban/jail.d/00-firewalld.conf。这些文件不应该被修改,因为当软件包被更新时,它们可能被覆盖。
Fail2ban按照以下顺序读取配置文件。
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
每个.local文件都会覆盖.conf文件中的设置。
配置 Fail2ban 的最简单方法是将 jail.conf 复制到 jail.local,然后修改 .local 文件。更高级的用户可以从头开始建立一个 .local 配置文件。.local 文件不需要包含对应的 .conf 文件中的所有设置,只需要包含那些你想覆盖的设置。
从默认的 jail.conf 文件创建 .local 配置文件。
sudo cp /etc/fail2ban/jail.{conf,local}
要开始配置Fail2ban服务器,请用文本编辑器打开 jail.local 文件。
sudo nano /etc/fail2ban/jail.local
该文件包括注释,描述了每个配置选项的作用。在这个例子中,我们将改变基本设置。
白名单IP地址
可以在ignoreip指令中加入你想排除在禁止范围之外的IP地址、IP范围或主机。在这里你应该添加你的本地PC的IP地址和所有其他你想列入白名单的机器。
取消对以ignoreip开头的行的注释,添加你的IP地址,用空格隔开。/etc/fail2ban/jail.local
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24
禁令设置
bantime、findtime和maxretry选项的值定义了禁止时间和禁止条件。
bantime是指该IP被禁止的时间。当没有指定后缀时,它默认为秒。默认情况下,bantime值被设置为10分钟。一般来说,大多数用户会希望设置一个较长的禁止时间。根据你的喜好改变这个值。/etc/fail2ban/jail.local
bantime = 1d
要永久禁止该IP,使用一个负数。
findtime是设置禁言前失败次数的间隔时间。例如,如果Fail2ban被设置为在5次失败后禁止一个IP(maxretry,见下文),这些失败必须发生在findtime的时间内。/etc/fail2ban/jail.local
findtime = 10m
maxretry是指一个IP被禁止前的失败次数。默认值被设置为5,这对大多数用户来说应该是不错的。/etc/fail2ban/jail.local
maxretry = 5
电子邮件通知
Fail2ban可以在一个IP被禁止时发送电子邮件提醒。要接收电子邮件,你需要在服务器上安装SMTP,并修改默认动作,即只禁止IP到%(action_mw)s,如下所示。/etc/fail2ban/jail.local
action = %(action_mw)s
%(action_mw)s将禁止违规的IP并发送一封带有whois报告的电子邮件。如果你想在邮件中包括相关的日志,将动作设置为%(action_mwl)s。
你也可以调整发送和接收电子邮件的地址。/etc/fail2ban/jail.local
destemail = admin@linuxize.com
sender = root@linuxize.com
Fail2ban监牢
Fail2ban使用一个监狱的概念。一个监狱描述一个服务,包括过滤器和行动。匹配搜索模式的日志条目被计算在内,当满足预定义的条件时,相应的行动被执行。
Fail2ban为不同的服务提供了一系列的监狱。你也可以创建你自己的监狱配置。
默认情况下,在CentOS 8上,没有启用监狱。要启用一个监牢,需要在监牢标题后添加 enabled = true。下面的例子显示了如何启用 sshd 监狱。/etc/fail2ban/jail.local
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
我们在上一节中讨论的设置,可以在每个监狱中设置。下面是一个例子。/etc/fail2ban/jail.local
过滤器位于/etc/fail2ban/filter.d目录下,存储在与监狱同名的文件中。如果你有自定义设置和正则表达式的经验,你可以对过滤器进行微调。
每次修改配置文件时,必须重启Fail2ban服务以使修改生效。
sudo systemctl restart fail2ban
Fail2ban客户端
Fail2ban提供了一个名为fail2ban-client的命令行工具,您可以用它与Fail2ban服务交互。
要查看 fail2ban-client 命令的所有可用选项,请使用 -h 选项调用该命令。
fail2ban-client -h
这个工具可以用来禁止/解禁IP地址,改变设置,重启服务,等等。下面是几个例子。
- 检查一个监狱的状态。
sudo fail2ban-client status sshd
解除一个IP的禁令。
sudo fail2ban-client set sshd unbanip 23.34.45.56
禁用一个IP。
sudo fail2ban-client set sshd banip 23.34.45.56
结语
我们已经向您展示了如何在CentOS 8上安装和配置Fail2ban。更多关于配置Fail2ban的信息,请访问官方文档。