Fail2ban安装配置详细步骤

Fail2ban 是一个用来防止暴力破解和其他类型的攻击的安全工具。它通过监视日志文件,并根据配置文件中的规则对可疑的 IP 地址进行封禁。以下是 Fail2ban 的详细安装和配置步骤。

一、安装 Fail2ban

在 Ubuntu/Debian 系统上

  1. 更新包索引并安装 Fail2ban:

    1
    2
    sudo apt update
    sudo apt install fail2ban -y

在 CentOS/RHEL 系统上

  1. 启用 EPEL 仓库并安装 Fail2ban:

    1
    2
    sudo yum install epel-release -y
    sudo yum install fail2ban -y

二、配置 Fail2ban

Fail2ban 的默认配置文件位于 /etc/fail2ban/jail.conf,但是不建议直接修改此文件。相反,我们可以创建一个自定义的配置文件 /etc/fail2ban/jail.local 来覆盖默认设置。

  1. 创建 jail.local 文件:

    1
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  2. 编辑 jail.local 文件:

    1
    sudo nano /etc/fail2ban/jail.local
  3. 配置基本设置([DEFAULT] 部分):

    1
    2
    3
    4
    5
    [DEFAULT]
    ignoreip = 127.0.0.1/8 ::1
    bantime = 10m
    findtime = 10m
    maxretry = 5
    • ignoreip:指定不会被封禁的 IP 地址(通常是你自己的 IP 地址)。
    • bantime:指定封禁的时间长度(默认 10 分钟)。
    • findtime:在这个时间段内如果达到最大失败尝试次数则会被封禁。
    • maxretry:指定最大失败尝试次数。
  4. 启用特定的服务监控(如 SSH、Nginx 等):
    在 jail.local 文件中找到相应的 [sshd] 部分,启用它并进行配置:

    1
    2
    3
    4
    5
    [sshd]
    enabled = true
    port = ssh
    logpath = %(sshd_log)s
    backend = %(sshd_backend)s

    如果你需要监控其他服务,比如 Nginx,可以添加或编辑对应的部分:

    1
    2
    3
    4
    5
    6
    [nginx-http-auth]
    enabled = true
    port = http,https
    filter = nginx-http-auth
    logpath = /var/log/nginx/error.log
    maxretry = 6

三、启动并启用 Fail2ban 服务

  1. 启动 Fail2ban 服务:

    1
    sudo systemctl start fail2ban
  2. 设置开机自启动:

    1
    sudo systemctl enable fail2ban

四、检查 Fail2ban 状态和日志

  1. 查看 Fail2ban 状态:

    1
    sudo fail2ban-client status
  2. 查看具体 jail 的状态,例如 sshd:

    1
    sudo fail2ban-client status sshd
  3. 查看 Fail2ban 日志:

    1
    sudo tail -f /var/log/fail2ban.log

五、管理 Fail2ban

手动封禁和解封 IP 地址

  1. 手动封禁 IP:

    1
    sudo fail2ban-client set sshd banip 192.168.1.100
  2. 手动解封 IP:

    1
    sudo fail2ban-client set sshd unbanip 192.168.1.100

六、创建自定义过滤器

如果默认的过滤器不能满足你的需求,你可以创建自定义的过滤器。以下是创建自定义过滤器的步骤:

  1. 创建过滤器文件:

    1
    sudo nano /etc/fail2ban/filter.d/custom.conf
  2. 在文件中添加过滤规则:

    1
    2
    3
    [Definition]
    failregex = ^<HOST> -.*"GET /wp-login.php HTTP/1.1" 200
    ignoreregex =

    上面的规则示例会捕捉尝试访问 wp-login.php 的 IP。

  3. 在 jail.local 文件中添加对该过滤器的监控:

    1
    2
    3
    4
    5
    6
    [custom]
    enabled = true
    filter = custom
    action = iptables[name=custom, port=http, protocol=tcp]
    logpath = /var/log/nginx/access.log
    maxretry = 3

七、重启 Fail2ban

每次修改配置文件后,重启 Fail2ban 以使更改生效:

1
sudo systemctl restart fail2ban

通过以上步骤,你可以成功安装、配置和管理 Fail2ban,从而增强服务器的安全性。