根规则集(root ruleset)是保存您所有防火墙策略的顶级容器。您可以通过仪表板或 账户规则集 API 来检查现有的根规则集。如果您是 Magic Transit 的新客户,您的账户可能尚未创建根规则集。要查看根规则集的示例,请查阅 Cloudflare Network Firewall Terraform 文档 ↗。
默认情况下,您最多可以创建 200 条策略。如果需要更高的限制,请联系您的账户团队。我们建议您创建 IP 地址列表以在策略中引用,以简化策略管理。
- 登录 Cloudflare 仪表板 ↗,转到 Networking(网络) > Firewall policies(防火墙策略)。
- 选择 Add a policy(添加策略)。
- 填写新策略的信息。所有现有策略仅适用于 IPv4 流量。在填写 Value(值) 时,您可以使用 托管 IP 列表。
- 完成后,选择 Add new policy(添加新策略)。
当您添加新策略时,策略默认处于 **Enabled(启用)**状态。
要创建处于 **Disabled(禁用)**状态的策略,请遵循上面添加策略中的步骤,并将 Enabled(已启用) 切换为 off(关闭)。当策略处于禁用状态时,策略将不会执行任何操作,直到将其设置为 Enabled(已启用)。
要禁用现有策略,请从 Custom policies(自定义策略) 选项卡中,将 Enabled(已启用) 切换键设置为 off。
- 登录 Cloudflare 仪表板 ↗,转到 Networking(网络) > Firewall policies(防火墙策略)。
- 找到您要编辑的策略,选择三个点 > Edit(编辑)。
- 使用您的更改更新策略,然后选择 Save(保存)。
- 在列表中找到您要删除的策略。
- 在行尾,选择 Delete(删除)。
- 再次选择 Delete(删除) 以确认删除。
下面,您可以找到如何使用 API 执行某些操作的示例。
skip 操作告诉防火墙停止评估当前规则集中匹配的流量,从而有效地允许其通过。规则集中的规则按从上到下的顺序进行评估。在下面的示例中,skip 规则必须出现在 block 规则之前,以便匹配的流量(端口 8080)在应用全部阻断(catch-all block)之前被允许通过。
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "Example ruleset",
"kind": "root",
"phase": "magic_transit",
"description": "Example ruleset description",
"rules": [
{
"action": "skip",
"action_parameters": { "ruleset": "current" },
"expression": "tcp.dstport in { 8080 } ",
"description": "Allow port 8080"
},
{
"action": "block",
"expression": "tcp.dstport in { 1..65535 }",
"description": "Block all TCP ports"
}
]
}'下面的示例通过在 ISO 3166-1 Alpha 2 ↗ 格式中使用其 2 字母国家代码,阻止来自巴西的源或目的 IP 地址的所有数据包。
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "Example ruleset",
"kind": "root",
"phase": "magic_transit",
"description": "Example ruleset description",
"rules": [
{
"action": "block",
"expression": "ip.src.country == \"BR\"",
"description": "Block traffic from Brazil"
}
]
}'Cloudflare Network Firewall 支持在 ip.src 和 ip.dst 字段的表达式中使用列表。支持的列表为:
$cf.anonymizer—— 匿名化代理$cf.botnetcc—— 僵尸网络命令与控制通道$cf.malware—— 恶意软件来源$<IP_LIST_NAME>—— 账户级别 IP 列表的名称
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"name": "Example ruleset",
"kind": "root",
"phase": "magic_transit",
"description": "Example ruleset description",
"rules": [
{
"action": "block",
"expression": "ip.src in $cf.anonymizer",
"description": "Block traffic from anonymizer proxies"
}
]
}'有关如何编写规则表达式的更多信息,请参阅构建表达式。