关于WAF自定义规则
使用WAF自定义规则功能,通过过滤对域名的请求来控制传入流量。 您可以根据您定义的规则对传入请求执行阻止或管理挑战等操作。
与规则集引擎评估的其他规则一样,WAF自定义规则需要以下基本参数:
- 使用规则语言指定流量匹配标准的表达式。
- 当规则匹配时,指定操作的行为。
自定义规则将按照其在自定义规则表中的顺序进行评估,从第一个到最后一个位置。 您可以通过导航到 “安全”>“防火墙规则” 来查看该表格。 某些操作(如 “阻止” )会阻止对其他规则的评估。 有关操作及其行为的更多详情,请参阅 Ruleset Engine 规则操作。
请参阅 迁移到自定义规则,了解防火墙规则和WAF自定义规则之间的区别。
常见用例
以下部分详细介绍了WAF自定义规则常见用例。
仅允许来自指定国家的访问
使用块操作,这个例子根据国家代码通过 ip.src.country
字段阻止请求,只允许来自美国和墨西哥这两个国家的请求:
(not ip.src.country in {"US" "MX"})
根据IP信誉阻止请求
知识产权信誉的评分范围是0(零风险)到100(高风险),用于对访客的知识产权信誉进行分类。
IP信誉是根据“蜜罐项目”、外部公共IP信息以及来自托管规则和 DDoS 的内部威胁情报计算得出的。
使用块操作,此示例根据国家代码(ISO 3166-1 Alpha 2 ↗ 格式)阻止来自IP地址大于0的请求:
(ip.src.country in {"CN" "TW" "US" "GB"} and cf.threat_score gt 0)
配置规则以跳过其他 CIS 功能
跳过操作支持不同的跳过选项,具体取决于您要跳过的安全功能或产品。
本部分包含WAF自定义规则中不同跳过规则场景的示例。 请考虑以下因素:
-
{zone_id}
值是您要添加规则的区域的ID。 -
{ruleset_id}
值是http_request_firewall_custom
阶段入口规则集的ID。 有关获取规则集ID的详细信息,请参阅 列表和查看规则集。 以下 API 示例使用 创建区域规则集规则 操作,向现有规则集添加跳过规则。但是,入口规则集可能还不存在。 在这种情况下,使用 更新入口规则集操作 创建带有跳过规则的入口规则集。
-
虽然每个示例只包含一个动作参数,但您可以通过同时指定规则集、阶段和产品动作参数,在同一规则中使用多个跳过选项。
跳过当前规则集中的剩余规则
本示例使用 “创建区域规则集”规则 操作,向现有 http_request_firewall_custom
阶段入口点规则集(ID为 RULESET_ID
)添加跳过规则。 如果不知道入口点规则集 ID,请参阅 获取 API 的自定义规则入口点。
对于符合规则表达式的请求,规则跳过当前规则集中所有剩余规则:
curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"action": "skip",
"action_parameters": {
"ruleset": "current"
},
"expression": "http.request.uri.path contains \"/skip-current-ruleset/\"",
"description": ""
}'
跳过阶段
本示例使用 “创建区域规则集”向现有 http_request_firewall_custom
阶段入口点规则集添加规则,规则集ID为 RULESET_ID
。 对于符合规则表达式的请求,该规则跳过 http_ratelimit
阶段:
curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"action": "skip",
"action_parameters": {
"phases": [
"http_ratelimit"
]
},
"expression": "http.request.uri.path contains \"/skip-phase/\"",
"description": ""
}'
跳过阶段,不记录匹配请求
本示例使用 “创建区域规则集”规则 操作添加一条规则,该规则跳过 http_ratelimit
阶段并禁用当前规则的事件日志记录:
curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"action": "skip",
"action_parameters": {
"phases": [
"http_ratelimit"
]
},
"logging": {
"enabled": false
},
"expression": "http.request.uri.path contains \"/disable-logging/\"",
"description": ""
}'
跳过安全产品
本示例使用 “创建区域规则集”规则 操作添加一条规则,该规则跳过区域锁定和用户代理阻止产品,用于匹配规则表达式的请求:
curl -X POST "https://api.cis.cloud.ibm.com/v1/$CRN/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \
--header "X-Auth-User-Token: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"action": "skip",
"action_parameters": {
"products": [
"zoneLockdown",
"uaBlock"
]
},
"expression": "http.request.uri.path contains \"/skip-products/\"",
"description": ""
}'