Cloudflare 会对每个进入请求应用多项安全功能。每个功能在固定阶段执行,执行顺序决定先后作用。理解该顺序有助于避免冲突并降低误报。
由 规则集引擎(Ruleset Engine) 驱动的 Cloudflare 安全功能按固定阶段序列执行。请求到达时,会依次经过每个阶段。如果某条规则触发了终止动作(terminating action),例如 拦截(Block) 或 受管质询(Managed Challenge),请求会提前停止,不会进入后续阶段。
安全相关请求阶段按执行顺序如下:
| 阶段名称 | 产品 |
|---|---|
ddos_l7 |
HTTP DDoS 攻击防护(HTTP DDoS Attack Protection) |
http_request_firewall_custom |
自定义规则 |
http_ratelimit |
速率限制规则 |
http_request_firewall_managed |
托管规则 |
http_request_sbfm |
Super Bot Fight Mode |
在每个阶段内,账号级规则集先于域级规则集执行。
规则集引擎(Ruleset Engine)不仅驱动安全产品,也支持其他 Cloudflare 产品。完整的请求与响应阶段列表请参见 阶段列表(Phases)。
以下安全功能不由 Ruleset Engine 提供,且会独立执行:
- IP 访问规则(IP Access Rules)
- 区域锁定(Zone Lockdown)
- 用户代理拦截(User Agent Blocking)
- 浏览器完整性检查(Browser Integrity Check)
- 防盗链保护(Hotlink Protection)
- 安全级别(Security Level)
由于这些功能独立执行,它们不会遵循上述阶段顺序。
DDoS 防护 对所有 Cloudflare 计划默认开启。L7 HTTP DDoS 攻击防护用于检测并缓解应用层 DDoS 攻击;L3/4 网络层 DDoS 攻击防护处理网络层攻击。DDoS 防护无需您手动开启或配置。
自定义规则是您自定义的规则,运行于 http_request_firewall_custom 阶段,支持 拦截(Block)、受管质询(Managed Challenge)、跳过(Skip)、记录(Log) 等动作。您可以在表达式中引用 bot score 字段、WAF 攻击评分 字段以及全部标准请求字段。
速率限制规则 用于限制或阻断超过定义请求速率的流量,运行于 http_ratelimit 阶段,自定义规则之后。
托管规则 是 Cloudflare 维护的预配置规则集,包含 Cloudflare 托管规则集 和 OWASP Core Ruleset,运行于 http_request_firewall_managed 阶段。
Bot Fight Mode 在 Free 方案可用。它是一个简化的开关式功能,用于质询匹配已知 bot 模式的流量。该功能无法自定义,也不能用自定义规则跳过。
Super Bot Fight Mode(SBFM)适用于 Pro、Business 与 Enterprise 计划(不含 Bot Management 附加组件),运行于 http_request_sbfm 阶段,权限更高于 Bot Fight Mode。您可为 Definitely automated(确定自动化)、Likely automated(可能自动化) 和 Verified bots(已验证 bot) 流量分别配置不同动作。您还可以在自定义规则中使用 跳过(Skip) 动作 跳过特定请求的 SBFM。
Bot Management 是 Enterprise 附加组件,为每个请求生成 1 到 99 的 bot score。分值越低代表自动化程度更高。您可以使用 cf.bot_management.score 在自定义规则中按分值执行动作。更多信息请参见 Bot Management 变量。
这些规则决定安全功能之间的交互方式:
- 终止类动作会中断请求评估流程。 如果某条规则阻断或质询请求,Cloudflare 不会继续评估后续阶段。
- 自定义规则先于 SBFM 执行。 自定义规则中的终止动作会阻止 Super Bot Fight Mode 对该请求继续评估。
- 跳过(Skip)动作可跳过后续阶段。 您可以在自定义规则中使用 跳过(Skip) 动作 跳过速率限制规则(
http_ratelimit)、Super Bot Fight Mode(http_request_sbfm)和托管规则(http_request_firewall_managed)。 - Bot Fight Mode 无法跳过。 Bot Fight Mode 不属于规则集引擎(Ruleset Engine),自定义规则不能跳过该功能。若需豁免 bot 防护,可升级至 Super Bot Fight Mode 或 Bot Management。
- Bot Management 分值可用于自定义规则。 Enterprise 客户可在自定义规则表达式中使用
cf.bot_management.score,按路径、用户代理(User Agent)或任意其他请求属性定义自定义阈值。
Free 计划包含 DDoS 防护和 Bot Fight Mode。
- DDoS 防护对每个请求自动生效。
- 在 Security(安全) > Settings(设置) 下开启 Bot Fight Mode,以质询已知 bot 模式。
- 开启 Block AI Bots(阻止 AI Bot) 可防止 AI 爬虫抓取内容。
由于 Bot Fight Mode 无法跳过或自定义,您不能为特定 bot 创建例外。如果 Bot Fight Mode 对合法自动化流量(例如监控服务或支付服务)产生误报,可考虑升级到包含 Super Bot Fight Mode 的 Pro 或 Business 计划。
Pro 或 Business 计划额外提供 Super Bot Fight Mode、自定义规则和托管规则。
- DDoS 防护自动生效。
- 打开 Super Bot Fight Mode,阻断自动化和高概率自动化流量。
- 部署 托管规则 保护网站,覆盖 SQL 注入、跨站脚本等常见漏洞。
- 使用自定义规则中的 跳过(Skip) 动作允许合法自动化流量通过,同时让 SBFM 阻断其他恶意 bot。可使用如下规则:
- 将规则表达式设为与您的支付处理方 IP 或用户代理(User Agent)匹配。
- 将动作设置为 跳过(Skip),并选择 Super Bot Fight Mode。
开启 Bot Management 附加组件的 Enterprise 计划提供最高灵活度。
- DDoS 防护自动运行。
- Bot Management 为每个请求生成 bot score。
- 使用引用
cf.bot_management.score的自定义规则定义您的阈值,例如将网站路径中 bot score 低于20的请求拦截,而对经过合作方认证的 API 路径放开全部分值。 - 使用速率限制规则限制滥用流量模式。
- 部署托管规则防护已知漏洞。
当安全功能影响到合法流量时,可按以下步骤定位并处理。
使用 安全事件(Security Events) 查找触发拦截的功能:
-
在 Cloudflare 仪表板中,前往 Analytics(分析) 页面。
Go to Analytics ↗ -
选择 Events(事件) 选项卡。
-
在日志中找到被拦截请求。
-
检查 Service(服务) 字段以确认是哪项产品触发了动作,由此判断要调整的功能。
- 登录 Cloudflare 仪表板 ↗,并选择账号与域名。
- 转到 Security(安全) > Events(事件)。
- 在日志中找到被拦截请求。
- 检查 Service(服务) 字段以确定是哪个产品执行了该动作。
Bot Fight Mode 不支持例外规则。可选方案:
- 在 Security(安全) > Settings(设置) 下关闭 Bot Fight Mode。
- 升级到支持跳过规则的 Super Bot Fight Mode 计划。
更多信息请参阅 处理 Bot Fight Mode 或 Super Bot Fight Mode 的误报。
为受影响流量创建一条带 跳过(Skip) 动作的自定义规则,跳过 SBFM:
-
在 Cloudflare 仪表板中,前往 Security(安全) > Security rules(安全规则) 页面。
Go to Security rules ↗ -
选择 Create rule(创建规则) > Custom rules(自定义规则)。
-
定义可匹配合法流量的表达式(例如特定 IP 段或用户代理(User Agent))。
-
将动作设置为 跳过(Skip),并选择 Super Bot Fight Mode。
- 登录 Cloudflare 仪表板 ↗,并选择账号与域名。
- 转到 Security(安全) > WAF > Custom rules(自定义规则)。
- 选择 Create rule(创建规则)。
- 定义可匹配合法流量的表达式(例如特定 IP 段或用户代理(User Agent))。
- 将动作设置为 跳过(Skip),并选择 Super Bot Fight Mode。
更多信息请参阅 处理 Bot Fight Mode 或 Super Bot Fight Mode 的误报。
若托管规则拦截了合法流量:
- 创建 WAF 例外(WAF exception),对匹配请求跳过某些规则或规则集。
- 如果某些规则不适用于您的应用,可在托管规则集中禁用单条规则。
更多处理建议请参见 托管规则排查。