由 Cloudflare 安全团队创建,此规则集可为您的所有应用提供快速有效的防护。该规则集会频繁更新,以覆盖新漏洞并减少误报。
Cloudflare 建议您启用标签与您的技术栈对应的规则。例如,若您使用 WordPress,请启用带有 wordpress 标签的规则。
Cloudflare 的 WAF 更新日志 可帮助您持续监控 WAF 托管规则集的变更。
-
在 Cloudflare 仪表板中,转到安全 Settings(设置) 页面。
Go to Settings ↗ -
(可选)按 Web application exploits(Web 应用漏洞利用) 进行筛选。
开启 Cloudflare managed ruleset。
-
审查部署设置。如有必要,编辑范围以将规则集应用于传入请求的子集,或配置任何自定义设置(也称为重写)。
-
选择 Save(保存)。
- 登录到 Cloudflare 仪表板 ↗,然后选择您的账户和域。
- 转到 Security(安全性) > WAF > Managed rules 选项卡。
在 Managed Rulesets 下,选择 Cloudflare Managed Ruleset 旁的 Deploy。
此操作为当前区域部署托管规则集,并创建一个具有 Execute 操作的新规则。
您可以在多个级别配置(或覆盖)Cloudflare 托管规则集,从而覆盖其默认配置:
当您在不同级别创建多个覆盖时,更具体的配置(标签与规则级别)优先于较不具体的配置(规则集级别)。更多信息请参阅 Ruleset Engine 文档中的 覆盖托管规则集。
您可以在 Cloudflare 仪表板中配置(或覆盖)以下 Cloudflare 托管规则集设置:
-
Scope(作用域):当您为作用域定义自定义过滤表达式时,Cloudflare 托管规则集仅应用于部分传入请求。默认情况下,在仪表板中部署的托管规则集会应用于所有传入流量。
Ruleset action(规则集操作):当您为规则集定义操作时,会覆盖为每条规则定义的默认操作。可用操作包括:Block、Log、Non-Interactive Challenge、Managed Challenge 与 Interactive Challenge。 要移除规则集级别的操作覆盖,请将规则集操作设为 Default(默认)。
-
Ruleset status(规则集状态):启用或禁用规则集中的所有规则。
-
载荷日志记录:启用后,会记录触发托管规则集中特定规则的请求信息(载荷)。您必须配置公钥以加密载荷。
在部署 Cloudflare 托管规则集 后,按以下步骤在仪表板中进行配置:
-
在 Cloudflare 仪表板中,前往 Security rules(安全规则) 页面。
Go to Security rules ↗ -
(可选)按 Managed rules 筛选。
搜索 Cloudflare Managed Ruleset。查找带有 Execute 操作的规则。
-
选择规则名称(包含托管规则集的名称)以打开部署配置页面。
(可选)要仅为部分入站请求执行 Cloudflare Managed Ruleset,请选择 Edit scope(编辑作用域) 并 配置表达式,以确定部署该托管规则集的当前规则的作用域。
在规则集配置部分,通过使用下拉列表设置一个或多个字段,为 Cloudflare Managed Ruleset 中的所有规则定义设置。
例如,选择对规则集中所有规则执行的操作。

-
选择 Save(保存)。
-
登录 Cloudflare 仪表板 ↗,并选择您的账户和域名。
-
前往 Security(安全性) > WAF > Managed rules 选项卡。
在部署 Cloudflare Managed Ruleset 的 Execute 规则旁,选择托管规则集名称。
如果尚未部署该托管规则集,请在 Managed Rulesets 下选择 Cloudflare Managed Ruleset。(可选)要仅为部分入站请求执行 Cloudflare Managed Ruleset,请选择 Edit scope(编辑作用域) 并 配置表达式,以确定部署该托管规则集的当前规则的作用域。
在 Ruleset configuration 下,使用下拉列表为 Cloudflare Managed Ruleset 中的所有规则定义设置。
例如,选择对规则集中所有规则执行的操作。

如果尚未部署 Cloudflare Managed Ruleset:
- 选择 Deploy(部署) 以立即部署规则集。
- 选择 Save as Draft(保存为草稿) 以保存部署设置供稍后使用。
如果您正在编辑已部署的托管规则集,请选择 Save(保存)。
您可以在仪表板中,为至少带有所选标签之一的规则配置(或覆盖)以下 Cloudflare 托管规则集设置:
Rule action(规则操作):为所有带有所选标签的规则设置规则操作。可用操作包括:Block、Log、Non-Interactive Challenge、Managed Challenge 与 Interactive Challenge。
-
Rule status(规则状态):为所有带有所选标签的规则设置规则状态。
在部署 Cloudflare 托管规则集 后,按以下步骤在仪表板中配置带有特定标签的规则:
-
在 Cloudflare 仪表板中,前往 Security rules(安全规则) 页面。
Go to Security rules ↗ -
(可选)按 Managed rules 筛选。
搜索 Cloudflare Managed Ruleset。查找动作为 Execute 的规则。
-
选择规则名称(包含托管规则集的名称),然后选择 Browse rules(浏览规则)。

-
在搜索输入框下方选择一个或多个标签,以筛选具有这些标签的规则,然后选择表格左上角的复选框,以选择当前页面中显示的所有规则。
如果当前页面未显示所有规则,您可以通过选择 Select all <NUMBER> rules(选择全部 <NUMBER> 条规则),将选择范围扩展到所有页面上具有所选标签的所有规则。
-
使用表格右上角显示的按钮(例如 Set status)更新所选规则的一个或多个设置。
-
选择 Next(下一步)。
-
将弹出一个对话框,询问您是否应使用所选的字段值配置任何具有所选标签的新规则。
- 如果您想将配置应用于具有所选标签的任何新规则,请选择 Include new rules(包含新规则)。
- 选择 Only selected rules(仅所选规则) 以仅将配置应用于所选规则。
-
选择 Save(保存)。
-
登录到 Cloudflare 仪表板 ↗,然后选择您的账户和域。
-
转到 Security(安全性) > WAF > Managed rules 选项卡。
如果您已部署 Cloudflare Managed Ruleset,请在已部署托管规则集列表中选择该规则集名称。或者,在部署 Cloudflare Managed Ruleset 的 Execute 规则旁,选择三个点 > Edit(编辑)。
如果您尚未部署该托管规则集,请在 Managed Rulesets 下选择 Cloudflare Managed Ruleset。
-
选择 Browse rules(浏览规则)。

-
在搜索输入框下方选择一个或多个标签,以筛选具有这些标签的规则,然后选择表格左上角的复选框,以选择当前页面中显示的所有规则。
如果当前页面未显示所有规则,您可以通过选择 Select all <NUMBER> rules(选择全部 <NUMBER> 条规则),将选择范围扩展到所有页面上具有所选标签的所有规则。
-
使用表格右上角显示的按钮(例如 Set status)更新所选规则的一个或多个设置。
-
选择 Next(下一步)。
-
将弹出一个对话框,询问您是否应使用所选的字段值配置任何具有所选标签的新规则。
- 如果您想将配置应用于具有所选标签的任何新规则,请选择 Include new rules(包含新规则)。
- 选择 Only selected rules(仅所选规则) 以仅将配置应用于所选规则。
-
选择 Save(保存)。
您可以在仪表板中,为所选规则配置(或覆盖)以下 Cloudflare 托管规则集设置:
Rule action(规则操作):设置单条规则的操作;若选择多条规则,则为所选规则设置操作。可用操作包括:Block、Log、Non-Interactive Challenge、Managed Challenge 与 Interactive Challenge。 更改规则配置后,您可以选择将配置重置为 Cloudflare 托管规则集中定义的默认配置。
-
Rule status(规则状态):设置单条规则的状态(启用或禁用);若选择多条规则,则为所选规则设置状态。
在部署 Cloudflare 托管规则集 后,按以下步骤在仪表板中配置规则集中的单条规则:
-
在 Cloudflare 仪表板中,前往 Security rules(安全规则) 页面。
Go to Security rules ↗ -
(可选)按 Managed rules 筛选。
搜索 Cloudflare Managed Ruleset。查找动作为 Execute 的规则。
-
选择规则名称(包含托管规则集的名称),然后选择 Browse rules(浏览规则)。

-
使用可用筛选器搜索规则。
-
在结果列表中,使用显示的下拉列表和开关根据需要更改每个规则的值。例如,使用规则旁的 Status(状态) 开关更改规则的状态。
要使用相同的值配置多个规则,请选中您要配置的所有规则的复选框。如果当前页面未显示所有规则,您可以通过选择 Select all <NUMBER> rules(选择全部 <NUMBER> 条规则),将选择范围扩展到所有页面上的所有规则。然后,使用表格右上角显示的按钮(例如 Set status)更新所选规则的一个或多个字段。

-
选择 Next(下一步),然后选择 Save(保存)。
-
登录到 Cloudflare 仪表板 ↗,然后选择您的账户和域。
-
转到 Security(安全性) > WAF > Managed rules 选项卡。
如果您已部署 Cloudflare Managed Ruleset,请在已部署托管规则集列表中选择该规则集名称。或者,在部署 Cloudflare Managed Ruleset 的 Execute 规则旁,选择三个点 > Edit(编辑)。
如果您尚未部署该托管规则集,请在 Managed Rulesets 下选择 Cloudflare Managed Ruleset。
-
选择 Browse rules(浏览规则)。

-
使用可用筛选器搜索规则。
-
在结果列表中,使用显示的下拉列表和开关根据需要更改每个规则的值。例如,使用规则旁的 Status(状态) 开关更改规则的状态。
要使用相同的值配置多个规则,请选中您要配置的所有规则的复选框。如果当前页面未显示所有规则,您可以通过选择 Select all <NUMBER> rules(选择全部 <NUMBER> 条规则),将选择范围扩展到所有页面上的所有规则。然后,使用表格右上角显示的按钮(例如 Set status)更新所选规则的一个或多个字段。

-
选择 Next(下一步),然后选择 Save(保存)。
要通过 API 为给定 zone 部署 Cloudflare 托管规则集,请在 http_request_firewall_managed 阶段的入口点规则集 中创建一条 execute 操作的规则。
以下示例通过创建一个执行托管规则集的规则,将 Cloudflare Managed Ruleset 部署到给定区域($ZONE_ID)的 http_request_firewall_managed 阶段。
调用获取区域入口点规则集操作,以获取
http_request_firewall_managed阶段的入口点规则集定义。您需要有区域 ID才能完成此任务。Get a zone entry point rulesetbash curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "description": "Zone-level phase entry point", "id": "<RULESET_ID>", "kind": "zone", "last_updated": "2024-03-16T15:40:08.202335Z", "name": "zone", "phase": "http_request_firewall_managed", "rules": [ // ... ], "source": "firewall_managed", "version": "10" }, "success": true, "errors": [], "messages": [] }如果入口点规则集已存在(即,如果您收到
200 OK状态代码和规则集定义),请记下响应中的规则集 ID。然后,调用创建区域规则集规则操作,向现有规则集中添加一条execute规则,以部署 Cloudflare Managed Ruleset(ID 为efb7b8c949ac4650a09736fc376e9aee)。默认情况下,该规则将添加到规则集中已有规则列表的末尾。Create a zone ruleset rulebash curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee" }, "expression": "true", "description": "Execute the Cloudflare Managed Ruleset" }'{ "result": { "id": "<RULESET_ID>", "name": "Zone-level phase entry point", "description": "", "kind": "zone", "version": "11", "rules": [ // ... any existing rules { "id": "<RULE_ID>", "version": "1", "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee", "version": "latest" }, "expression": "true", "description": "Execute the Cloudflare Managed Ruleset", "last_updated": "2024-03-18T18:08:14.003361Z", "ref": "<RULE_REF>", "enabled": true } ], "last_updated": "2024-03-18T18:08:14.003361Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": [] }如果入口点规则集不存在(也就是说,如果您在步骤 1 中收到了
404 Not Found状态码),请使用 创建区域规则集 操作来创建它。在rules数组中包含单个规则,该规则针对 区域中的所有传入请求 执行 Cloudflare Managed Ruleset(ID 为efb7b8c949ac4650a09736fc376e9aee)。Create a zone rulesetbash curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "My ruleset", "description": "Entry point ruleset for WAF managed rulesets", "kind": "zone", "phase": "http_request_firewall_managed", "rules": [ { "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee" }, "expression": "true", "description": "Execute the Cloudflare Managed Ruleset" } ] }'
要通过 API 配置 Cloudflare Managed Ruleset,请使用 Rulesets API 创建 overrides。你可以执行以下配置:
- 通过创建 ruleset override,为规则集中的所有规则指定要执行的操作。
通过创建 rule override,禁用
或自定义单个规则的操作。
有关使用 API 创建 overrides 的示例,请参阅 Override a managed ruleset。
有关通过 API 使用托管规则集的更多信息,请参阅规则集引擎文档中的 使用托管规则集。
以下示例为 zone 部署 Cloudflare 托管规则集,并覆盖特定规则的操作与状态。
配置 cloudflare_ruleset ↗ 资源:
# Configure a ruleset at the zone level for the "http_request_firewall_managed" phase
resource "cloudflare_ruleset" "zone_level_managed_waf" {
zone_id = var.cloudflare_zone_id
name = "Managed WAF entry point ruleset"
description = "Zone-level WAF Managed Rules config"
kind = "zone"
phase = "http_request_firewall_managed"
# Execute Cloudflare Managed Ruleset
rules = [{
ref = "execute_cloudflare_managed_ruleset"
description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"
expression = "true"
action = "execute"
action_parameters = {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides = {
rules = [{
id = "5de7edfa648c4d6891dc3e7f84534ffa"
action = "log"
enabled = true
}]
}
}
}]
}# Configure a ruleset at the zone level for the "http_request_firewall_managed" phase
resource "cloudflare_ruleset" "zone_level_managed_waf" {
zone_id = var.cloudflare_zone_id
name = "Managed WAF entry point ruleset"
description = "Zone-level WAF Managed Rules config"
kind = "zone"
phase = "http_request_firewall_managed"
# Execute Cloudflare Managed Ruleset
rules {
ref = "execute_cloudflare_managed_ruleset"
description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"
expression = "true"
action = "execute"
action_parameters {
id = "efb7b8c949ac4650a09736fc376e9aee"
overrides {
rules {
id = "5de7edfa648c4d6891dc3e7f84534ffa"
action = "log"
enabled = true
}
}
}
}
}