从互联网访问的所有服务器都存在恶意软件攻击的风险。 例如,如果您有可从公共网络访问的应用程序,则攻击者可以使用Brute-Force尝试访问应用程序。

Fail2Ban是一种工具,它可以通过监控用于恶意活动的服务日志来保护您的Linux机器免受Brute-Force和其他自动攻击。 它使用正则表达式来扫描日志文件。 匹配模式的所有条目都被计算,并且当它们的数字达到某个预定义的阈值时,Fail2Ban使用系统防火墙禁止违规IP进行特定的时间。 禁止期到期时,IP地址将从禁止列表中删除。

本文介绍了如何在Debian 10上安装和配置Fail2Ban.

在debian上安装fail2ban

默认Debian 10存储库中包含Fail2Ban包。 要安装它,请用sudo权限作为root或用户运行以下命令

sudo apt update
sudo apt install fail2ban

完成后,Fail2Ban服务将自动启动。 您可以通过检查服务状态来验证:

sudo systemctl status fail2ban

输出将如下所示:

● fail2ban.service - Fail2Ban Service
   Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2021-03-10 18:57:32 UTC; 47s ago
...

就是这样。 此时,您在Debian Server上运行Fail2Ban。

fail2ban配置

默认Fail2Ban安装配有两个配置文件/etc/fail2ban/jail.conf/etc/fail2ban/jail.d/defaults-debian.conf。 您不应修改这些文件,因为程序包更新时可能会被覆盖。

fail2ban按以下顺序读取配置文件。 每个.local文件覆盖.conf文件中的设置:

/etc/fail2ban/jail.conf/etc/fail2ban/jail.d/*.conf/etc/fail2ban/jail.local/etc/fail2ban/jail.d/*.local

配置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地址

您要排除禁止的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

禁止设置

bantimefindtimemaxretry选项设置禁止时间和禁令条件。

bantime是禁止IP的持续时间。 没有指定后缀时,它默认为秒。 默认情况下,bantime值设置为10分钟。 大多数用户更喜欢设置更长的禁止时间。 将值更改为您的喜好:

/etc/fail2ban/jail.local

bantime  = 1d

要永久禁止IP,请使用负数。

findtime是设置禁止之前的故障次数之间的持续时间。 例如,如果Fail2Ban被设置为在五次故障后禁止IP(maxretry,请参见下文),则必须在findtime持续时间内发生这些故障。

/etc/fail2ban/jail.local

findtime  = 10m

maxretry是禁止IP之前的故障次数。 默认值设置为五个,对于大多数用户来说应该没问题。

/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 Jails

Fail2Ban使用Jails的概念。 监狱描述了一个服务,包括过滤器和动作。 匹配搜索模式的日志条目被计算,并且当满足预定义条件时,执行相应的操作。

Fail2Ban为不同服务提供了许多监狱。 您还可以创建自己的监控配置。 默认情况下,只有SSH监狱已启用。

要启用监狱,您需要在监狱标题后添加enabled = true。 以下示例显示了如何启用Postfix Jail:

/etc/fail2ban/jail.local

[postfix]
enabled  = true
port     = smtp,ssmtp
filter   = postfix
logpath  = /var/log/mail.log

我们在上一节中讨论的设置,可以每次监控设置。 以下是一个例子:

/etc/fail2ban/jail.local

[sshd]
enabled   = true
maxretry  = 3
findtime  = 1d
bantime   = 4w
ignoreip  = 127.0.0.1/8 11.22.33.44

过滤器位于/etc/fail2ban/filter.d目录中,存储在具有与监控相同名称的文件中。 如果您有定制设置和具有正则表达式的体验,则可以进行微调过滤器。

每次修改配置文件时,必须重新启动Fail2Ban服务以进行更改以生效:

sudo systemctl restart fail2ban

fail2ban客户端

Fail2Ban使用命令行工具命名为fail2ban-client,您可以使用它来与Fail2Ban服务进行交互。

要查看所有可用选项,请使用-h选项调用命令:

fail2ban-client -h

此工具可用于禁止/扰乱IP地址,更改设置,重新启动服务等。 以下是一些例子:

获取服务器的当前状态:

sudo fail2ban-client status

检查监禁状态:

sudo fail2ban-client status sshd

解释IP:

sudo fail2ban-client set sshd unbanip 11.22.33.44

禁止IP:

sudo fail2ban-client set sshd banip 11.22.33.44

结论

我们向您展示了如何在Debian 10上安装和配置Fail2Ban。

有关此主题的更多信息,请访问 fail2ban文档

如果您有疑问,请随时留下评论。