所有暴露在互联网上的服务器都面临着恶意软件攻击的风险。例如,如果您有一个连接到公共网络的软件,攻击者可以使用暴力尝试来获取对该应用程序的访问权限。
Fail2ban 是一款开源工具,可通过监控服务日志中的恶意活动来帮助保护您的 Linux 计算机免受暴力破解和其他自动攻击。它使用正则表达式来扫描日志文件。所有与模式匹配的条目都会被计数,当它们的数量达到某个预定义阈值时,Fail2ban 会在特定的时间内禁止违规 IP。默认系统firewall用作禁止操作。禁止期限届满后,该 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
and /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
Each .local
文件覆盖设置.conf
file.
配置 Fail2ban 最简单的方法是复制jail.conf
to jail.local
并修改.local
文件。更高级的用户可以构建.local
从头开始的配置文件。这.local
文件不必包含相应的所有设置.conf
文件,仅那些您想要覆盖的文件。
创建一个.local
默认的配置文件jail.conf
file:
sudo cp /etc/fail2ban/jail.{conf,local}
要开始配置 Fail2ban 服务器,请打开jail.local
与您的文件文本编辑器
:
sudo nano /etc/fail2ban/jail.local
该文件包含描述每个配置选项的作用的注释。在此示例中,我们将更改基本设置。
白名单IP地址#
可以将要从禁止中排除的 IP 地址、IP 范围或主机添加到ignoreip
指示。您应该在此处添加您的本地 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
, and maxretry
选项定义禁止时间和禁止条件。
bantime
是IP被禁止的持续时间。如果未指定后缀,则默认为秒。默认情况下,bantime
值设置为 10 分钟。一般来说,大多数用户会希望设置更长的禁止时间。根据您的喜好更改值:
/etc/fail2ban/jail.local
要永久禁止该 IP,请使用负数。
findtime
是设置禁令之前失败次数之间的持续时间。例如,如果 Fail2ban 设置为在五次失败后禁止 IP(maxretry
,见下文),这些故障必须发生在findtime
期间。
/etc/fail2ban/jail.local
maxretry
是 IP 被禁止之前的失败次数。默认值设置为 5,这对于大多数用户来说应该没问题。
/etc/fail2ban/jail.local
电子邮件通知#
当 IP 被禁止时,Fail2ban 可以发送电子邮件警报。要接收电子邮件,您需要在服务器上安装 SMTP 并更改默认操作,即仅禁止 IP%(action_mw)s
, 如下所示:
/etc/fail2ban/jail.local
%(action_mw)s
将禁止违规 IP 并发送包含 whois 报告的电子邮件。如果您想在电子邮件中包含相关日志,请将操作设置为%(action_mwl)s
.
您还可以调整发送和接收电子邮件地址:
/etc/fail2ban/jail.local
destemail = admin@linuxize.com
sender = root@linuxize.com
禁止失败监狱#
Fail2ban 使用监狱的概念。监狱描述了一项服务,包括过滤器和操作。对与搜索模式匹配的日志条目进行计数,当满足预定义条件时,执行相应的操作。
Fail2ban 附带了许多针对不同服务的监狱。您还可以创建自己的监狱配置。
默认情况下,在 CentOS 8 上,不启用监狱。要启用监狱,您需要添加enabled = true
监狱称号之后。以下示例展示了如何启用sshd
jail:
/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
命令,用以下命令调用 it-h
option:
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 的更多信息,请访问官方文档
.
如果您有疑问,请随时在下面发表评论。