Web Application Firewall (WAF) 允许您通过 Cloudflare 创建额外的安全措施。作为 SaaS 提供商,您可以将自定义规则、速率限制规则和托管规则关联到自定义主机名。这可让您更好地控制,保护域名免受恶意流量影响。
作为 SaaS 提供商,您可能希望对不同的自定义主机名应用不同的安全措施。借助 SaaS 的 WAF,您可以创建多套 WAF 配置,并将其应用到不同的自定义主机名集合。这种额外的灵活性和安全性有助于为终端客户的域名提供更优保护。
使用 SaaS 的 WAF 之前,您需要创建自定义主机名。如果尚未完成,请参阅 Cloudflare for SaaS 快速入门。
您也可以通过 API 创建自定义主机名:
Required API token permissions
At least one of the following token permissions is required:SSL and Certificates Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"hostname": "<CUSTOM_HOSTNAME>",
"ssl": {
"wildcard": false
}
}'要对自定义主机名应用 WAF,需要在客户域名与希望附加的 WAF 配置之间建立关联。Cloudflare 的 自定义元数据 产品允许您通过 API 完成此操作。
-
查找您的 zone ID,可在 Cloudflare 仪表板中获取。
-
在 API Tokens(API 令牌) ↗ 页面的 Global API Key(全局 API 密钥) 下查找您的身份验证密钥。
-
通过 API 发起
GET调用以查找自定义主机名 ID:
Required API token permissions
At least one of the following token permissions is required:SSL and Certificates WriteSSL and Certificates Read
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"- 规划您的 自定义元数据。该字段完全可自定义。在下面的示例中,我们选择了标签
"security_level",并预期为其分配三个值(low、medium 和 high)。
- 使用您的 Cloudflare 邮箱和上面收集的 ID,按以下格式发起 API 调用:
Required API token permissions
At least one of the following token permissions is required:SSL and Certificates Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/custom_hostnames/$CUSTOM_HOSTNAME_ID" \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"custom_metadata": {
"customer_id": "12345",
"security_level": "low"
}
}'这会将自定义元数据分配给您的自定义主机名,使其 ID 关联安全标签。
-
在 WAF 运行的 Ruleset Engine 中定位自定义元数据字段。可用于触发不同产品配置,例如 WAF 自定义规则、速率限制规则 和 Transform Rules。
-
通过 仪表板 或 API 构建规则。以下 API 调用展示了与
"security_level"为 low 对应的速率限制规则示例。
Required API token permissions
At least one of the following token permissions is required:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_ratelimit/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"action": "block",
"ratelimit": {
"characteristics": [
"cf.colo.id",
"ip.src"
],
"period": 10,
"requests_per_period": 2,
"mitigation_timeout": 60
},
"expression": "lookup_json_string(cf.hostname.metadata, \"security_level\") eq \"low\" and http.request.uri contains \"login\""
}
]
}'要通过仪表板构建规则:
-
在 Cloudflare 仪表板中,前往 WAF 页面。
Go to WAF ↗ -
根据您的安全目标,按照仪表板上针对自定义规则、速率限制规则或托管规则的说明操作。
-
规则生效后,您应能在相应选项卡(自定义规则、速率限制或托管规则)下看到它。