违规累计封禁
把各子系统的处置按权重累计成「封禁分」,越阈自动封禁 IP:加权防误封、TTL 自愈、可选内核层 ipset 丢包。
单看每个子系统,处置都是「就事论事」:这次请求拦了,下次照来。「违规累计封禁」把检测拦截、限流、UA 黑名单、地理围栏、敏感路径探测、扫描器 404、蜜罐命中这些散落的信号按权重汇总成同一个「每 IP 封禁分」,越过阈值就把这个 IP 直接封掉——后续请求在网关最外层就被拒,连检测都不用跑。
加权是这套机制的灵魂:攻击级信号一次即封,限流这种「正常用户突发也会踩」的信号权重压得很低,挑战下发干脆不计分。防的是误封真人和 NAT 出口。
#打开它
- 1进「防护配置 → 违规累计封禁」这一页自带封禁器,不依赖人机验证的自动拉黑是否开启。
- 2先开「试运行」
shadow模式只记录「本应封禁谁」,不真封。观察一两天,确认没有误伤真人。 - 3核对权重表默认权重已经调过;有特殊业务(如高频轮询接口)可把
rate_limit再调低或置 0。 - 4转正式关掉试运行。封禁自带 TTL,误封也会自愈,不必怕一步做死。
#关键字段
| 字段 / 控件 | 默认 / 示例 | 说明 |
|---|---|---|
enabled | false | 总开关(配置段 access_control.auto_ban)。 |
threshold | 100 | 封禁分阈值。默认 100 意味着「一次检测拦截即封」。 |
window_seconds | 300 | 滚动计分窗口;必须在窗口内累计到阈值才触发,窗口外自然淡出。 |
ttl_seconds | 600 | 封禁基础时长,到期自动解封——误封 NAT 出口会自己恢复。 |
escalate | true | 同一 IP 反复触发时封禁时长指数递增(基础 → ×2 → ×4 …)。 |
max_ttl_seconds | 86400 | 梯度升级的封顶时长。 |
shadow | false | 试运行:只记录会封谁、不真封。 |
mode | app | 强制档位:app 在网关拒绝(跨平台);kernel 下发 Linux ipset 由 iptables 在 L3 丢包。切换需重启数据面。 |
weights | 见下表 | 每种来源贡献的封禁分;留空的用默认值,置 0 = 该来源不累计。 |
#默认权重表(阈值 100)
| 来源 | 权重 | 含义 |
|---|---|---|
detection 检测引擎拦截 | 100 | SQLi / XSS / RCE 等,近乎确定是攻击,单次即封 |
honeypot 蜜罐命中 | 100 | 访问了正常用户永远不会访问的陷阱路径,几乎必是自动化 |
sensitive_path 敏感路径探测 | 40 | .git / .env / *.sql 之类的侦察行为 |
scanner_404 扫描器 404 枚举 | 40 | 目录爆破 / 文件枚举 |
ua_deny UA 黑名单命中 | 40 | 已知扫描器 User-Agent |
geo 地理围栏拦截 | 40 | 违规地域来源 |
rate_limit 限流命中 | 10 | 突发的正常流量也会触发,故权重很低 |
challenge_issued 挑战下发 | 0 | 真人能解开挑战,绝不计分 |
权重的意义在于跨信号累计:两次敏感路径探测(40+40)再加一次 UA 拦截(40)合计 120 就封——三个信号单看都不到阈值,合起来才是一次真实的扫描行为。
#谁不会被累计
- IP 白名单内的客户端全程豁免,永不参与计分。
- 已验证的好爬虫(反向 DNS 校验通过的搜索引擎)豁免。
- 已登录用户豁免——登录态是强身份,不该被行为分误伤。
- 已经在名单里的拒绝(静态黑名单 / 动态 IP 规则 / 威胁情报 / 已封禁)不再计分,避免自我反馈滚雪球。
- 观察类事件(detect / shadow)不计分,只有真实的处置才算数。
计分依赖存储;存储出错时一律放行不计分(fail-open)——计数故障绝不能变成误封。
#内核层封禁(Linux,可选)
mode: kernel 会把封禁 IP 下发到 Linux 内核的 ipset 集合,由 iptables / ip6tables 在三层直接丢包:省掉 TLS 握手、HTTP 解析与协程调度,面对惯犯和 CC 更省资源。自动封禁(带 TTL)与手动黑名单分属两个集合,互不覆盖;机器重启后存量封禁会按剩余 TTL 回灌内核。
内核层的适用边界三个前提缺一不可:仅 Linux、进程需
CAP_NET_ADMIN(root)、墨守必须部署在真正的网络边缘。前面若有 LB / CDN,内核匹配的是数据包源 IP(= LB 的 IP),与墨守从 X-Forwarded-For 还原出的客户端 IP 不是一回事——不会误封 LB(安全),但内核层也拦不住,只能靠应用层兜底。无论哪种档位,应用层网关始终强制这些封禁,内核层只是 L3 加速。所以同步慢一拍或漏掉 CIDR 段都不构成安全缺口。
#在哪里看和解封
「访问控制」页的「自动封禁」选项卡把所有来源的 IP 封禁合并成一张表:静态黑名单、动态 IP 规则、威胁情报、蜜罐 / 扫描器自动拉黑、违规累计封禁,都带来源标签与到期时间,可一键解封。所有 IP 封禁一处管理,不用再去各个模块里找。
