通过使用 Rulesets API 定义重写 (overrides) 来配置 HTTP DDoS 攻击防护托管规则集。
每个区域默认已启用了 HTTP DDoS 攻击防护托管规则集。这意味着您不需要显式地将托管规则集部署到 ddos_l7 阶段规则集中。只有在您需要配置重写时,才必须在阶段规则集中创建一条规则来部署托管规则集。
如果您使用的是 Terraform,请参阅使用 Terraform 配置 DDoS 托管规则集。
使用重写来配置 HTTP DDoS 攻击防护托管规则集。重写允许您定义与默认值不同的操作或敏感度级别。有关可用操作和敏感度级别值的更多信息,请参阅规则集参数。
重写可以具有规则集 (ruleset)、标记 (tag) 或规则 (rule) 范围。标记和规则配置的优先级高于规则集配置。
您可以在区域 (zone) 级别和账户 (account) 级别创建重写。账户级重写允许您通过一条规则将相同的重写应用到您账户中的多个区域。例如,您可以使用账户级重写来降低特定托管规则集规则的敏感度,或为多个区域排除某个 IP 列表。然而,如果给定区域针对 HTTP DDoS 攻击防护托管规则集配置了区域级重写,则对于该区域,将不会评估账户级重写。
在 ddos_l7 phase entry point ruleset 中创建多条规则,为不同传入请求集定义不同 override。根据要自定义 HTTP DDoS 防护的流量设置每条规则表达式。
在创建 override 的 phase entry point ruleset 中,规则按顺序评估,直到规则表达式和 sensitivity level 匹配,Cloudflare 将应用与请求匹配的第一条规则。因此,entry point ruleset 中的规则顺序非常重要。
以下 PUT 示例为区域级别的 ddos_l7 阶段创建了一个新的阶段规则集(或更新现有规则集)。该请求包含几个重写,以调整 HTTP DDoS 攻击防护托管规则集的默认行为。这些重写如下:
- 托管规则集的所有规则都将使用
managed_challenge操作,并且敏感度级别为medium。 - 所有标记为
<TAG_NAME>的规则将使用low敏感度级别。 - ID 为
<MANAGED_RULESET_RULE_ID>的规则将使用block操作。
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/ddos_l7/entrypoint \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"description": "Execute HTTP DDoS Attack Protection managed ruleset in the zone-level phase entry point ruleset",
"rules": [
{
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"overrides": {
"sensitivity_level": "medium",
"action": "managed_challenge",
"categories": [
{
"category": "<TAG_NAME>",
"sensitivity_level": "low"
}
],
"rules": [
{
"id": "<MANAGED_RULESET_RULE_ID>",
"action": "block"
}
]
}
},
"expression": "true"
}
]
}'响应将返回创建(或更新)的阶段入口点规则集。
响应
{
"result": {
"id": "<PHASE_ENTRY_POINT_RULESET_ID>",
"name": "default",
"description": "Execute HTTP DDoS Attack Protection managed ruleset in the zone-level phase entry point ruleset",
"kind": "zone",
"version": "1",
"rules": [
{
"id": "<RULE_ID>",
"version": "1",
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"version": "latest",
"overrides": {
"action": "managed_challenge",
"categories": [
{
"category": "<TAG_NAME>",
"sensitivity_level": "low"
}
],
"rules": [
{
"id": "<MANAGED_RULESET_RULE_ID>",
"action": "block"
}
],
"sensitivity_level": "medium"
}
},
"expression": "true",
"last_updated": "2021-06-16T04:14:47.977741Z",
"ref": "<RULE_REF>",
"enabled": true
}
],
"last_updated": "2021-06-16T04:14:47.977741Z",
"phase": "ddos_l7"
}
}有关使用 Rulesets API 为托管规则集定义重写的更多信息,请参阅 Ruleset Engine 文档中的重写托管规则集。
以下 PUT 示例为账户级别的 ddos_l7 阶段创建了一个新的阶段规则集(或更新现有规则集)。该示例针对来自 allowlisted_ips IP 列表的 IP 地址的请求定义了单个规则重写,配置如下:
- ID 为
<MANAGED_RULESET_RULE_ID>且属于 HTTP DDoS 攻击防护托管规则集(ID 为<MANAGED_RULESET_ID>)的规则将具有eoff(Essentially Off,基本关闭)敏感度级别,并且它将执行log操作。
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets/phases/ddos_l7/entrypoint \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"description": "Disable a managed ruleset rule for allowlisted IP addresses",
"rules": [
{
"expression": "ip.src in $allowlisted_ips",
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"overrides": {
"rules": [
{
"id": "<MANAGED_RULESET_RULE_ID>",
"action": "log",
"sensitivity_level": "eoff"
}
]
}
}
}
]
}'响应将返回创建(或更新)的阶段入口点规则集。
响应
{
"result": {
"id": "<PHASE_ENTRY_POINT_RULESET_ID>",
"name": "default",
"description": "Disable a managed ruleset rule for allowlisted IP addresses",
"kind": "root",
"version": "1",
"rules": [
{
"id": "<RULE_ID>",
"version": "1",
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"version": "latest",
"overrides": {
"rules": [
{
"id": "<MANAGED_RULESET_RULE_ID>",
"action": "log",
"sensitivity_level": "eoff"
}
]
}
},
"expression": "ip.src in $allowlisted_ips",
"last_updated": "2022-10-16T04:14:47.977741Z",
"ref": "<RULE_REF>",
"enabled": true
}
],
"last_updated": "2022-10-16T04:14:47.977741Z",
"phase": "ddos_l7"
}
}有关使用 Rulesets API 为托管规则集定义重写的更多信息,请参阅 Ruleset Engine 文档中的重写托管规则集。