Fail2ban多jail配置核心是为SSH、Nginx等服务分别建立独立防护单元,须置于/etc/fail2ban/jail.d/下、以.conf结尾,每个jail必须设enabled=true、filter、logpath、maxretry、findtime、bantime、port等基础参数,确保职责清晰、日志精准、阈值合理、互不干扰。

配置 Fail2ban 多 jail 规则,核心是为不同服务(如 SSH、Nginx、Apache)分别定义独立的防护单元,避免规则混用、便于排查和调优。关键不在于堆砌数量,而在于每个 jail 职责清晰、参数合理、日志路径准确。
明确 jail 分离原则
一个 jail 对应一个明确的服务场景,不能把 SSH 登录失败和 Nginx 认证失败混在同一个 jail 里。这样做的好处是:
- 封禁逻辑互不影响:SSH 被封不会影响 Web 服务的访问判定
- 日志路径可精准指定:/var/log/auth.log 和 /var/log/nginx/error.log 结构完全不同
- 阈值可差异化设置:SSH 允许 3 次试错,而后台登录页可设为 5 次,避免误伤正常用户
- 便于启用/禁用:只需修改对应 jail 的 enabled = true/false,无需注释大段配置
统一使用 jail.d 目录管理
所有自定义 jail 必须放在 /etc/fail2ban/jail.d/ 下,文件名以 .conf 结尾(如 sshd.conf、nginx-auth.conf)。系统启动时会按字母顺序加载,且自动覆盖 jail.conf 中同名配置。
不要直接改 jail.conf 或依赖 jail.local 堆砌全部规则——那会让配置越来越难维护。
示例操作:
sudo nano /etc/fail2ban/jail.d/sshd.confsudo nano /etc/fail2ban/jail.d/nginx-auth.confsudo nano /etc/fail2ban/jail.d/apache-badbots.conf
每个 jail 必须配齐的基础参数
缺一不可,否则 jail 不会生效:
- enabled = true:必须显式开启,false 则完全忽略该 jail
-
filter = xxx:对应
/etc/fail2ban/filter.d/xxx.conf中定义的正则规则,比如sshd、nginx-botsearch -
logpath = /path/to/log:支持通配符,如
/var/log/nginx/*.log;多个路径用换行或空格分隔(取决于 fail2ban 版本) -
maxretry = N 和 findtime = 秒数:共同决定触发条件,例如 “5 分钟内失败 4 次” 就写
maxretry = 4+findtime = 300 - bantime = 秒数:建议从 3600(1 小时)起步,高风险服务可设为 86400(24 小时)或 -1(永久)
-
port = 端口或服务名:如
ssh、http,https、8080,影响 action 中防火墙规则的协议和端口匹配
实战:并行配置 SSH 与 Nginx 登录防护
以两个典型 jail 为例,展示如何共存且互不干扰:
① SSH 防护(/etc/fail2ban/jail.d/sshd.conf):
[sshd] enabled = true port = ssh logpath = /var/log/auth.log filter = sshd maxretry = 3 findtime = 600 bantime = 86400 ignoreip = 127.0.0.1 192.168.0.0/16
② Nginx 基于 Basic Auth 的后台防护(/etc/fail2ban/jail.d/nginx-auth.conf):
[nginx-auth] enabled = true port = http,https logpath = /var/log/nginx/access.log filter = nginx-auth maxretry = 5 findtime = 600 bantime = 3600 action = %(action_mw)s
注意:nginx-auth 这个 filter 需提前在 /etc/fail2ban/filter.d/nginx-auth.conf 中定义,匹配 401 Unauthorized 日志行并提取 <HOST>。
配置完后执行 sudo fail2ban-client reload 即可生效,用 sudo fail2ban-client status 可分别查看各 jail 的当前状态和封禁数。

















