如何在ubuntu上设置fail2ban

Fail2ban是一种工具,通过监视服务日志中的恶意活动,帮助保护Linux服务器免受暴力攻击和其他自动攻击。它使用正则表达式扫描服务器的日志,以防恶意尝试,并在特定时间内使用系统防火墙禁止违规IP。

Jails服务

Fail2ban使用监狱的概念。在分析服务日志中的匹配模式后,如果满足预定义条件,则服务将被监禁。满足条件后,将执行配置文件中定义的相应操作。

默认情况下,仅启用SSH监控。
我们可以添加更多服务。

示例:

# SSH servers
[sshd]
enable  = true
bantime = 10m
findtime = 10min
maxretry = 5
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

完成添加配置设置后,运行以下命令以重新启动Fail2Ban服务。

sudo systemctl restart fail2ban

Fail2Ban还配备了可用于与服务交互的客户端工具。

使用其客户端工具,我们可以检查特定服务的Fail2Ban监禁状态。
例如,要检查SSH监禁状态,请运行以下命令:

sudo fail2ban-client status sshd

要取消绑定特定的IP地址,请运行以下命令:

sudo fail2ban-client set sshd unbanip 192.168.1.1

要手动禁止IP地址,请运行以下命令:

sudo fail2ban-client set sshd banip 192.168.1.1

安装fail2ban

Fail2ban包包含在Ubuntu存储库中。
要安装它,只需运行下面的命令。

sudo apt update
sudo apt install fail2ban

检查服务是否已启动并运行:

sudo systemctl status fail2ban

输出:

● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enab>
     Active: active (running) since Thu 2021-03-11 15:26:00 CST; 23s ago
       Docs: man:fail2ban(1)
   Main PID: 2982 (f2b/server)
      Tasks: 5 (limit: 4654)
     Memory: 13.6M
     CGroup: /system.slice/fail2ban.service
             └─2982 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Mar 11 15:26:00 ubuntu2004 systemd[1]: Starting Fail2Ban Service. 
Mar 11 15:26:00 ubuntu2004 systemd[1]: Started Fail2Ban Service.

配置Fail2Ban

安装Fail2Ban时,它将安装这两个默认配置文件: /etc/fail2ban/jail.conf/etc/fail2ban/jail.d/defaults-debian.conf

要配置fail2ban,我们不应将更改直接转到上面的配置文件,因为软件包更新时可能会被覆盖。

Fail2Ban服务按以下顺序读取配置文件。

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

.local结尾的配置文件将覆盖.conf结尾的文件 。

因此,尽可能地修改.local文件。

大多数用户都应该简单地复制jail.conf来创建jail.local文件,然后修改.local文件以实现其更改。
我们可能不需要从jail.conf文件中复制所有设置,只需要修改需要的设置即可。

为简单起见,我们将复制jail.conf文件来创建jail.local文件。

sudo cp /etc/fail2ban/jail.{conf,local}

然后开始编辑刚刚创建的配置文件:

sudo nano /etc/fail2ban/jail.local

第一个设置应该是白名单的IP地址。
忽略这些IP (即允许访问服务器的IP):

ignoreip = 127.0.0.1/8 ::1 10.16.34.67 172.16.1.0/24

默认的Bantime值是10分钟。设置禁止的时间。

#"bantime" is the number of seconds that a host is banned.
 bantime  = 10m

findtime是禁止设置前的故障数之间的持续时间。

#A host is banned if it has generated "maxretry" during the last "findtime"
#seconds.
 findtime  = 10m

MaxRetry是IP被禁止之前的尝试数。
默认值为5

#"maxretry" is the number of failures before a host get banned.
 maxretry = 5
日期:2020-07-07 20:55:10 来源:oir作者:oir