限制 SSL 握手速率

限制 SSL 握手速率用于控制单个客户端 IP 地址发起 TLS 握手的频率,减少异常握手对网关 CPU 和连接资源的消耗。该功能属于 CC 防护的扩展连接保护能力。

适用场景

  • 同一客户端 IP 地址反复新建 TLS 连接。
  • 异常客户端不复用连接,持续消耗 TLS 握手资源。
  • 需要在 HTTP 页面规则生效前限制连接建立频率。

如果攻击流量已经完成 TLS 握手并持续请求业务接口,还需要结合限制请求速率等请求层防护能力。

工作原理

OpenResty Edge 按客户端 IP 地址统计 SSL 握手速率。低于调节阈值的请求不受影响;速率高于调节阈值但低于拒绝阈值时,请求会被延迟;速率高于拒绝阈值时,系统拒绝请求并直接返回 HTTP 503 状态码。两个阈值设置为相同值时,不保留调节区间,超过该速率的请求将直接被拒绝。

目前该功能只支持以客户端 IP 地址作为统计关键字。

配置方法

  1. 在 Edge Admin 中进入目标应用的 SSL 配置页面。
  2. 找到 SSL 握手速率限制并启用该功能。
  3. 设置调节阈值、拒绝阈值及其单位。
  4. 保存配置并发布应用。

应用 SSL 配置页面

设置 SSL 握手速率阈值

保存 SSL 握手速率配置

参数说明

  • 调节于:握手速率低于该值时不受限制;高于该值但尚未达到拒绝阈值时,请求会被延迟。
  • 拒绝于:握手速率高于该值后,系统拒绝请求并直接返回 HTTP 503 状态码。
  • 单位:可按每秒请求数或每分钟请求数设置阈值。

验证方法

在受控环境中从同一客户端 IP 地址连续发起使用新 TLS 连接的 HTTPS 请求,观察低于调节阈值时的响应、进入调节区间后的延迟,以及高于拒绝阈值后返回的 HTTP 503 状态码。复用现有 TLS 连接不会产生新的握手,不适合用于验证该功能。

注意事项

  • 多个用户通过同一 NAT 或正向代理访问时,会共享同一个客户端 IP 地址。阈值过低可能同时影响这些用户。
  • TLS 连接复用率、正常业务峰值和客户端网络重试都会影响握手速率,应根据监控数据逐步调整阈值。
  • 该功能只控制 TLS 握手,不能替代 HTTP 请求速率限制或业务接口的访问控制。