在当代网络环境中,无论是个人部落格、企业官方网站还是 SaaS 云端平台,几乎每天都在承受来自全球自动化僵尸网络(Botnet)与爬虫程序的威胁。黑客常透过脚本反复尝试帐号密码进行「暴力破解(Brute Force)」、频繁调用高负载查询界面消耗主机资源,或是针对 API 端点大量发送恶意请求发动「七层应用层 DDoS 攻击」。

作为全球领先的云端安全与内容传递网络(CDN)巨头,Cloudflare 在其「Web 应用程序防火墙(WAF)」中提供了强大而灵活的「限速规则(Rate Limiting Rules)」功能。透过精准的请求频率控制,站长能在毫秒之间识别并拦截异常突发流量,确保后端原服务器(Origin Server)的稳定运行。

本文将带你一步步了解限速规则的建置流程、关键参数设定技巧与经典防御情境。


建立 Cloudflare WAF 限速规则的逐步操作

只要登入 Cloudflare 管理后台,就能透过直觉的可视化界面或复合表达式完成部署:

  1. 登入 Cloudflare 仪表板
    前往 Cloudflare Dashboard 并登入您的帐户。
  2. 选定目标网域
    在站点清单中,点选您准备配置安全防御的目标网站域名(Zone)。
  3. 导航至 WAF 安全设置页面
    在左侧功能导航栏中,依序点击「安全性(Security)」 > 「WAF」。
  4. 进入限速规则分页
    在 WAF 顶部标签页中,切换至「限速规则(Rate limiting rules)」,并点击右侧的「建立规则(Create rule)」按钮。

核心配置参数详解与实战设定

在限速规则编辑页面中,系统提供了高度自订的条件过滤器与动作定义:

参数设定项目功能说明与配置建议实战设定范例
规则名称(Rule Name)为此条防护规则建立清楚明确的描述名称,方便日后维护检视。Protect WordPress Login POST
匹配条件(Incoming Request)定义哪些请求会被纳入计数监控。可依 URI 路径、HTTP 方法、查询参数、标头等设定。(http.request.uri.path eq "/wp-login.php" and http.request.method eq "POST")
计数特征(Characteristics)决定以何种维度作为独立计数的依据。默认通常为「访客 IP(IP Address)」。进阶版亦可选择特定标头或 Cookie。IP
请求阈值(Requests)设定在指定的时间窗口内,允许单一特征来源发送的最大请求次数。5 requests
时间窗口(Period)评估请求频率的滑动时间区间(例如 10 秒、1 分钟等)。1 minute
响应动作(Action)当请求频率超过阈值时,Cloudflare 边缘节点采取的处置动作。Managed Challenge(受控验证) 或 Block(直接阻断)
缓解持续时间(Duration)触发超额处置后,该来源在多长时间内将持续受到限制(可设 10 秒至数小时)。1 minute

常见的三大防御实战情境

情境 1:保护 WordPress 登入入口,阻断暴力破解

WordPress 默认的 /wp-login.php 与 /xmlrpc.php 是黑客脚本最常发动暴力撞库的目标。透过限制 POST 请求频率,能彻底瓦解字典档攻击:

  • 匹配表达式:
    (http.request.uri.path eq "/wp-login.php" and http.request.method eq "POST")
  • 阈值设定:1 分钟内超过 5 次请求。
  • 动作:Block(回传 HTTP 429 状态码)或 Managed Challenge。
  • 缓解时间:限制 5 分钟。

情境 2:保护机敏 API 端点与简讯/邮件验证码界面

许多 Web 服务提供「发送验证码」或「重设密码」API,常被有心人士拿来当作简讯轰炸(SMS Bombing)工具,导致网站主承担巨额第三方简讯费用:

  • 匹配表达式:
    (http.request.uri.path starts_with "/api/v1/auth/send-code" and http.request.method eq "POST")
  • 阈值设定:1 分钟内超过 2 次请求。
  • 动作:Block。
  • 缓解时间:限制 1 小时。

情境 3:排除内部管理员与已知办公室 IP 白名单

如果内部团队或爬虫(如 Googlebot)需要频繁存取某些资源,务必在匹配条件中加入例外排除,避免自身业务受到误伤:

  • 匹配表达式:
    (http.request.uri.path starts_with "/api/" and not ip.src in {203.0.113.1 198.51.100.5})

最佳实践与防误杀注意事项

  1. 上线初期善用「Log(仅记录)」模式
    新建限速规则时,建议先将动作设为「Log」,并持续观察 24 至 48 小时的触发记录。确认没有误伤正常用户的操作节奏后,再将动作切换为正式的「Block」或「Managed Challenge」。
  2. 谨防 NAT 共用 IP 误杀合法用户
    大学校园、大众运输 WiFi、大型企业办公室或公发行动网络往往采用 NAT 架构,成百上千位用户共用同一个公网对外 IP。如果阈值设定得过于极端(例如 1 秒超过 3 次即封锁),极容易造成大批合法访客无法浏览。在多数情境下,优先采用「Managed Challenge(受控验证)」会比直接暴力封锁更加友善且安全。
  3. 留意 Cloudflare 方案配额限制
    Cloudflare 免费方案(Free Tier)通常提供有限的限速规则条数与基本计费额度;而 Pro、Business 与 Enterprise 企业级方案则支持更精细的标头比对、自订 429 错误回应页面与更高的并发处理能力。在规模扩充时应定期检视用量报表。
✦ 独立报道 · 读者支持 ✦

以实际行动支持独立观点,与我们一同走得更远

每一篇条理清晰的分析、每一次不随波逐流的观察,背后都是对真实与品质的坚持。我们拒绝内容农场与算法流量绑架,坚持自由独立的客观发声。

维持高品质的原创写作与独立运营,需要持续的实质力量。您可以选择一次性赞助或每月定期支持,通过 Google 安全结账,与我们一同守护这份深刻与清醒。

由 Google 安全处理付款 · 可随时在 Google 账户管理或取消