借助托管规则集,您可以快速部署由 Cloudflare 维护的规则,并且您可以使用 Cloudflare Network Firewall(前称 Magic Firewall)来控制启用哪些规则。
要启用或禁用某条规则,您可以指定应该重写 (override) 哪些属性。重写发生在托管阶段 (Managed phase) 的根种类 (root kind) 规则集中。目前,您在根规则集中只能拥有一条规则,但单条规则可以包含多个重写。
您有多种方式来启用规则:
- 选择单个规则并启用它。
- 通过在
magic-transit-phase中按类别启用以启用多个规则。 - 启用整个规则集。
要创建托管规则集,您必须首先构建一个包含以下内容的请求:
managed_ruleset_id:包含您要启用的规则的 Managed 阶段 Managed 种类规则集的 ID。managed_rule_id:您要启用的规则的 ID。
此外,您还需要想要重写的属性。您可以重写的属性包括:
enabled:此值可以设置为true或false。当设置为true时,规则将匹配数据包,并在操作未被重写时应用规则的默认操作。当设置为false时,该规则被禁用,不会匹配任何数据包。action:该值可以设置为log,以便规则仅产生日志,而不应用规则的默认操作。
规则的 enabled 和 action 属性是在 Managed 阶段 Managed 种类规则集中设置的。Managed 阶段中的所有规则目前默认均被禁用。
下面的示例包含对 Managed 阶段 Managed 种类规则集的请求。
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "execute ruleset",
"description": "Ruleset containing execute rules",
"kind": "root",
"phase": "magic_transit_managed",
"rules": [
{
"expression": "true",
"action": "execute",
"description": "Enable one rule ",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"version": "latest",
"overrides": {
"rules": [
{
"id": "<MANAGED_RULE_ID>",
"enabled": true,
"action": "log"
}
]
}
}
}
]
}'为了确保 root 种类规则集仅包含一条规则,请修补 (patch) 该规则以启用新的托管规则。
基于上一步的示例,下面的示例通过启用一个类别来选择多个规则,而不是单个规则。该类别将被设置为 log 模式,这意味着规则可以产生日志,但不会接收或丢弃数据包。
curl --request PATCH \
https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets/{root_kind_ruleset}/rules/{root_kind_rule} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"expression": "true",
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"version": "latest",
"overrides": {
"rules": [
{
"id": "<MANAGED_RULE_ID>",
"enabled": true
}
],
"categories": [
{
"category": "simple",
"enabled": true,
"action": "log"
}
]
}
}
}'要启用整个规则集或启用所有规则,请发送以下请求。
curl --request PATCH \
https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets/{root_kind_ruleset}/rules/{root_kind_rule} \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"expression": "true",
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"version": "latest",
"overrides": {
"enabled": true
}
}
}'要删除规则集,请参阅删除规则集中的规则。
您还可以使用仪表板来启用托管规则集。
- 在 Cloudflare 仪表板中,前往 Firewall Policies (防火墙策略) ↗ 页面。
- 在 Managed rulesets(托管规则集) 选项卡中,选择 Deploy managed ruleset(部署托管规则集)。
- 页面将刷新并向您显示由 Cloudflare 配置的、适用于您账户的规则集。通过 Manage(管理) 选择您想要的规则集。如果未显示您想要的规则集,请联系您的客户经理以获取所有 Network Firewall 托管规则集的列表。
- 在 Ruleset configuration(规则集配置) 下,从下拉菜单中配置 Ruleset action(规则集操作)。Cloudflare 建议您在决定采取何种操作之前,先将此设置更改为 Log(记录),以评估该规则集对您流量的影响。有关更多信息,请参阅重写托管规则集。
- 同样在 Ruleset configuration(规则集配置) 下,为 Ruleset status(规则集状态) 下拉菜单选择 Enabled (已启用)。这将对规则集中所有规则的默认状态应用重写。
- 选择 Save(保存) 以部署不带规则级重写的 Network Firewall 托管规则集。
应用规则级重写允许您自定义托管规则集的行为。如果您实施了 Cloudflare 上述针对规则集配置的建议,规则将被设置为 Log 操作和 Enabled 状态。
另一方面,如果您在上一步中没有应用 Cloudflare 的建议,规则集将在应用其所有默认值的情况下实施。
要在仪表板中添加规则级重写:
- 在 Cloudflare 仪表板中,前往 Firewall Policies (防火墙策略) ↗ 页面。
- 在 Managed rulesets(托管规则集) 选项卡中,找到您要添加规则重写的 Network Firewall 托管规则集,然后选择 Manage(管理)。
- 选择 Browse rules(浏览规则)。
- 在您需要更改的规则中,从下拉菜单中选择一个 Action(操作) 以更改其操作,或使用切换开关来禁用或启用该规则。
- 选择 Next(下一步)。
- 选择 Save(保存)。
Cloudflare 仪表板现在应该向您显示您已设置的规则级重写。
- 在 Cloudflare 仪表板中,前往 Firewall Policies (防火墙策略) ↗ 页面。
- 在 Managed rulesets(托管规则集) 选项卡中,找到您要删除的 Network Firewall 托管规则集,然后选择 Manage(管理)。
- 选择 Delete deployment(删除部署)。
您的 Cloudflare Network Firewall 托管规则集现在已被删除。