I. 安装 Fail2Ban
参考 👉 How to install fail2ban packages
1.1 基于 RHEL 的 OS
- 确保系统为最新版本:
1dnf update -y
- 安装并启用 EPEL 源:
1dnf install epel-release -y && dnf config-manager --set-enabled epel && dnf clean all && dnf makecache
- 安装 Fail2Ban:
1dnf install fail2ban
- 启动并启用 Fail2ban:
1systemctl enable fail2ban --now
📢 注意:
如果遇到no directory /var/run/fail2ban to contain the socket file /var/run/fail2ban/fail2ban.sock
的错误,请手动创建该目录:
1mkdir /var/run/fail2ban
1.2 基于 Debian 的 OS
- 确保您的系统是最新的:
1apt update && apt upgrade
- 安装 Fail2Ban:
1apt install fail2ban
服务自动启动。
II. 配置规则
2.1 配置 SSH 防护规则
fail2ban
的配置文件通常位于 /etc/fail2ban/jail.conf
,不过我们推荐修改 jail.local
文件来保留自定义配置(避免在软件更新时覆盖原文件)。
创建默认配置文件的副本:
1cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
2.2 配置 SSH 防护
编辑 jail.local
文件添加或修改 [DEFAULT] 和 [SSH] 部分配置:
1[DEFAULT]
2......
3#ignoreip = 127.0.0.1/8 your_home_IP
4......
5
6[sshd]
7enabled = true
8#port = ssh
9filter = sshd
10#logpath = /var/log/secure
11maxretry = 3
12bantime = 1800 # 30 minutes in seconds
13findtime = 1800 # 30 minutes in seconds
14......
📌 参数说明:
ignoreip = 127.0.0.1/8
:添加 IP 白名单避免自己被封锁(生产环境很重要)。enabled = true
:启用 SSH 防护。port = ssh
:指定 SSH 使用的端口(通常是 22,如果你使用自定义端口,可以修改这里)。filter = sshd
:指定用于匹配 SSH 登录失败的日志过滤器。logpath = /var/log/secure
:指定 SSH 登录日志文件的路径。maxretry = 3
:设定最大登录失败次数为 3 次。bantime = 1800
:设置 IP 地址被禁止的时间为 1800 秒(即 30 分钟)。findtime = 1800
:设置检查的时间窗口为 30 分钟,意味着在这个时间段内超过 3 次失败的登录会触发封禁。
2.3 与 firewalld 协同工作
1cp /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
2.4 重启 fail2ban 服务
保存并退出文件后,重新启动 fail2ban
服务以使配置生效:
1systemctl restart fail2ban
2.5 验证配置是否生效
可以通过以下命令查看 fail2ban
的状态:
1fail2ban-client status sshd
这将显示关于 SSH 防护的当前状态,以及是否有 IP 地址被封禁。
III. 解除限制
3.1 解除 IP 封锁
1fail2ban-client unban 192.168.x.x
IV. 参考文档
GitHub : Fail2Ban