Fail2Ban 是一个非常有用的安全工具,它可以帮助你保护服务器免受暴力破解攻击。它通过监控日志文件中的登录失败尝试来检测潜在的攻击,并自动禁止这些 IP 地址。以下是如何安装和使用 Fail2Ban 的指南:

1. 安装 Fail2Ban

首先,在你的 Debian 12 系统上安装 Fail2Ban

sudo apt update
sudo apt install fail2ban

2. 启动并启用 Fail2Ban

安装完成后,启动 Fail2Ban 并设置为开机自动启动:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

3. 配置 Fail2Ban

Fail2Ban 的默认配置通常已经足够好用,但你可以根据需要进行自定义配置。

编辑 jail.local 配置文件

Fail2Ban 的主要配置文件是 /etc/fail2ban/jail.conf,但为了避免在软件更新时覆盖你的自定义配置,建议创建一个 jail.local 文件来覆盖默认设置。

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

在这个文件中,你可以配置全局设置和特定服务的 jail

全局设置

你可以在 jail.local 中定义以下全局设置:

  • ignoreip: 列出你希望 Fail2Ban 永不禁止的 IP 地址(如你的本地网络或管理 IP 地址)。

    ignoreip = 127.0.0.1/8 ::1
  • bantime: 定义 IP 地址被禁止的时间(默认是 10 分钟)。你可以增加这个时间,比如 1 小时(3600 秒):

    bantime = 3600
  • findtime: 定义在多长时间内达到禁止条件(默认是 10 分钟)。

    findtime = 600
  • maxretry: 定义在 findtime 时间段内允许的最大失败次数,超过此次数 IP 地址将被禁止。

    maxretry = 5

启用和配置 SSH 保护

默认情况下,Fail2Ban 已经包含了一个 ssh jail 用于保护 SSH 服务。如果你希望自定义这个 jail,可以在 jail.local 文件中进行配置:

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

确保 enabled 设置为 true 以启用 SSH 保护。

启用和配置其他服务保护

如果你想保护其他服务(如 nginx, apache, ftp),可以在 jail.local 中启用相应的 jail。例如,要保护 Nginx,可以添加以下内容:

[nginx-http-auth]
enabled = true
port    = http,https
logpath = /var/log/nginx/error.log
maxretry = 3

4. 重启 Fail2Ban 服务

每当你修改配置文件后,重新启动 Fail2Ban 以应用新配置:

sudo systemctl restart fail2ban

5. 检查 Fail2Ban 状态

你可以检查 Fail2Ban 的状态,查看哪些 jails 已经启用以及当前被禁止的 IP 地址:

sudo fail2ban-client status

如果你想查看某个特定 jail 的状态,比如 ssh,可以使用:

sudo fail2ban-client status sshd

6. 手动解除禁止

如果你想手动解除某个被禁止的 IP 地址,可以使用以下命令:

sudo fail2ban-client set sshd unbanip <IP地址>

总结

Fail2Ban 是一个强大的工具,可以帮助你自动保护服务器免受暴力破解攻击。安装和基本配置相对简单,你可以根据需要进一步自定义它的行为和保护范围。如果你有更多问题或需要进一步的帮助,随时告诉我!