帮助中心
如何在Debian 10上安装和配置Fail2ban



所有可从互联网访问的服务器都有遭受恶意软件攻击的风险。例如,如果你有一个可以从公共网络访问的应用程序,攻击者可以使用暴力尝试来获得对该应用程序的访问。

Fail2ban是一个工具,通过监测服务日志中的恶意活动,帮助保护你的Linux机器免受暴力和其他自动攻击。它使用正则表达式来扫描日志文件。所有与模式相匹配的条目都会被计算,当它们的数量达到某个预定义的阈值时,Fail2ban会使用系统防火墙在特定时间内禁止违规的IP。禁令期满后,该IP地址将从禁令列表中删除。

这篇文章解释了如何在Debian 10上安装和配置Fail2ban。

在Debian上安装Fail2ban


Fail2ban软件包包含在默认的Debian 10软件仓库中。要安装它,请以根用户或具有sudo权限的用户运行以下命令。

$ 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服务器上运行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指令中。在这里,你应该添加你的本地电脑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


电子邮件通知

当一个IP被禁止时,Fail2ban可以发送电子邮件提醒。要接收电子邮件,需要在服务器上安装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@febhost.com

sender = root@febhost.com


Fail2ban Jails


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

Fail2ban为不同的服务提供了一系列的监狱。你也可以创建你自己的监狱配置。默认情况下,只有ssh监狱被启用。

要启用一个监牢,需要在监牢标题后添加 enabled = true。下面的例子显示了如何启用postfix监狱。

/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 文档 。

文章相关标签: Fail2ban安装
购物车