阻断策略
Fail2ban 根据日志是否匹配过滤规则来封禁 IP,但不同 jail 的判定方式并不一样。
SSH 和邮件等服务通常统计一段时间内的匹配次数,某些 HTTP 扫描特征则只要匹配一次就会永久封禁。阅读 API 数据时,必须区分这两种情况。
当前配置
以下是 2026 年 11 月 1 日核实的采集源配置,并非所有服务器都应直接采用的推荐设置。采集源标识为 freebsd 与 oci。两者各自使用 15 个 jail:6 个用于传统服务,9 个用于扫描器缓解。
两种评估方式
| 方式 | 适用范围 | 阻断判据 |
|---|---|---|
| 重复检测 | SSH、邮件认证、HTTP、重复违规者 | 在配置的检测窗口内命中的次数 |
| 单次检测 | 配置的 HTTP 扫描器特征 | 单次命中即永久封禁 |
此处的“命中”指某条日志行匹配了 jail 的过滤规则。由于聚合与排除设置,命中数可能与简单的请求次数不同。
扫描器共用设置
maxretry = 1
findtime = 10m
bantime = -1
bantime.increment = false配置的九个 jail 在单次命中后即永久封禁。bantime = -1 表示不会自动到期。10 分钟的检测窗口并不代表封禁持续时间。
阻断范围覆盖 80 与 443 端口上基于 TCP 和 UDP 的 HTTP/HTTPS。freebsd 通过 PF 实施,oci 通过 nftables 实施。检测与防火墙执行均在各自采集源的 Fail2ban 中运行;本公开 API 不发布阻断指令。
为什么不能直接照搬这些规则
在合法使用管理界面、WebDAV、WordPress、PHP 或扩展 HTTP 方法的服务上,同样的请求可能是正常的。此处列出的条件是各采集源的运行标准,并非可以原样套用到任何站点的推荐设置。
管理用排除网络、端点、凭据以及内部日志内容均不公开。公开说明与各服务器上管理的完整配置是分别维护的。