对我的应用程序的合法请求被 AWS WAF 中的 AWS 托管规则组阻止。我想了解这些规则是如何引起误报的。另外,我想保留托管规则,允许合法流量通过。
解决方法
首先,找出由 AWS 托管规则引起的误报。然后,使用标签或范围缩小语句将这些误报添加到您的允许列表中。
**注意:**以下示例使用的是 IP 集。但是,您可以在自定义规则中使用 AWS WAF 可以检查的任何属性以及标头和 URI 等标签。
检测由托管规则组引起的误报错误
完成以下步骤:
-
在您的 AWS WAF 日志中的 terminatingRuleId 下,找到阻止合法请求的托管规则组。以下是 AWS WAF 日志的示例:
{
"timestamp": 1712236911743,
"formatVersion": 1,
"webaclId": "arn:aws:wafv2:us-west-2:***:regional/webacl/WAFtester/3c372***-***",
"terminatingRuleId": "AWS-AWSManagedRulesCommonRuleSet",
"terminatingRuleType": "MANAGED_RULE_GROUP",
"action": "BLOCK",
"terminatingRuleMatchDetails": [],
"ruleGroupList": [
{
"ruleGroupId": "AWS#AWSManagedRulesCommonRuleSet",
"terminatingRule": {
"ruleId": "SizeRestrictions_BODY",
"action": "BLOCK",
"overriddenAction": "BLOCK",
"ruleMatchDetails": null
},
"nonTerminatingMatchingRules": [],
"excludedRules": null,
"customerConfig": null
}
]
}
-
在 terminatingRule 中,找到 ruleId 以确定阻止合法请求的规则。例如,在上述日志中,阻止合法请求的规则是 SizeRestrictions_Body。
-
确定引起误报的属性或条件。例如,如果某数据库管理员远程运行存储的过程,则他们的请求可能包含大量数据。由于 SizeRestrictions_Body 规则,ManagedRulesCommonRuleSet 规则组会阻止这些请求。
将误报添加到您的允许列表
要允许合法请求通过引起误报的托管规则组,请配置 Web 访问控制列表 (Web ACL)。首先创建 IP 集,然后使用标签或范围缩小语句。
**注意:**最佳做法是使用标签来制定精细的显式规则。范围缩小语句不检查超出规则组中所有规则范围的请求。
标签
使用 AWS 托管规则添加的标签来防止误报。当您创建与具有这些标签的请求匹配的自定义规则时,请更改托管规则组内规则的默认操作。
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 Protection packs (web ACLs)(保护包 (Web ACL))。
- 选择您的保护包,然后选择 Manage rules(管理规则)。
- 选择阻止您的请求的 AWS 托管规则。
**注意:**从日志中识别出阻止您的请求的规则。
- 在 Rule overrides(规则覆盖)下,对于阻止请求的规则,将其操作更改为 Count(计数)。
- 选择 Save rule(保存规则)。
- 在右侧窗格中,选择 Manage rule(管理规则),然后选择 Add rule(添加规则)。
- 选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 对于规则类型,选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 对于 Action(操作),选择 BLOCK(阻止)。
- 输入您的 Rule name(规则名称)。
- 对于 If a request(如果请求),选择 matches all the statements (AND)(匹配所有语句 (AND))。
- 在 Statement 1(语句 1)中,使用以下选项:
对于 Inspect(检查),选择 Has a label(有标签)。
对于 Statement(语句),选择 Label(标签)。
对于 Match key(匹配键),选择阻止您请求的 AWS 托管规则的规则组中对应规则的标签。
- 在 Statement 2(语句 2)中,使用以下选项:
对于 Inspect(检查),选择 Originates from IP address in(源自 IP 地址)。
对于 IP address list(IP 地址列表),选择您的 IP 集。
在 Rule configuration(规则配置)中,选择 Negate statement (NOT)(否定语句 (NOT))。
对于 Source IP address for origin(原始服务器的来源 IP 地址),选择 Source IP address(源 IP 地址)。
- 选择 Add rule(添加规则)。
- 选择 Edit Rule Order(编辑规则顺序),然后将新规则拖到 AWS 托管规则组的下方。
**注意:**规则按其显示的顺序应用,您的新规则必须位于 AWS 托管规则组的下方。
- 选择 Save Rule Order(保存规则顺序)。
范围缩小语句
使用范围缩小语句缩小规则或规则组评估的请求的范围。向规则组中添加范围缩小语句后,就可以检查请求。该语句会跳过语句中包含的合法 IP 地址。
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Protection packs (web ACLs)(保护包 (Web ACL))。
- 选择您的保护包,然后选择 Manage rule(管理规则)。
- 选择阻止您请求的 AWS 托管规则的规则组。
- 在 Inspection(检查)中,选择 Match statement(匹配语句),然后使用以下选项:
对于 If a request(如果请求),选择 doesn't match the statement (NOT)(与语句不匹配 (NOT))。
对于 Inspect(检查),选择 Originates from IP address in(源自 IP 地址)。
对于 IP address list(IP 地址列表),选择您的 IP 集。
在 Rule configuration(规则配置)中,对于 Source IP address for origin(原始服务器的来源 IP 地址),选择 Source IP address(源 IP 地址)作为来源。
- 选择 Save rule(保存规则)。