跳至内容

如何检测由 AWS 托管规则引起的误报?

2 分钟阅读
0

对我的应用程序的合法请求被 AWS WAF 中的 AWS 托管规则组阻止。我想了解这些规则是如何引起误报的。另外,我想保留托管规则,允许合法流量通过。

解决方法

首先,找出由 AWS 托管规则引起的误报。然后,使用标签或范围缩小语句将这些误报添加到您的允许列表中。

**注意:**以下示例使用的是 IP 集。但是,您可以在自定义规则中使用 AWS WAF 可以检查的任何属性以及标头和 URI 等标签。

检测由托管规则组引起的误报错误

完成以下步骤:

  1. 在您的 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
        }
      ]
    }
  2. terminatingRule 中,找到 ruleId 以确定阻止合法请求的规则。例如,在上述日志中,阻止合法请求的规则是 SizeRestrictions_Body

  3. 确定引起误报的属性或条件。例如,如果某数据库管理员远程运行存储的过程,则他们的请求可能包含大量数据。由于 SizeRestrictions_Body 规则,ManagedRulesCommonRuleSet 规则组会阻止这些请求。

将误报添加到您的允许列表

要允许合法请求通过引起误报的托管规则组,请配置 Web 访问控制列表 (Web ACL)。首先创建 IP 集,然后使用标签或范围缩小语句。

**注意:**最佳做法是使用标签来制定精细的显式规则。范围缩小语句不检查超出规则组中所有规则范围的请求。

标签

使用 AWS 托管规则添加的标签来防止误报。当您创建与具有这些标签的请求匹配的自定义规则时,请更改托管规则组内规则的默认操作。

完成以下步骤:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中,选择 Protection packs (web ACLs)(保护包 (Web ACL))。
  3. 选择您的保护包,然后选择 Manage rules(管理规则)。
  4. 选择阻止您的请求的 AWS 托管规则。
    **注意:**从日志中识别出阻止您的请求的规则。
  5. Rule overrides(规则覆盖)下,对于阻止请求的规则,将其操作更改为 Count(计数)。
  6. 选择 Save rule(保存规则)。
  7. 在右侧窗格中,选择 Manage rule(管理规则),然后选择 Add rule(添加规则)。
  8. 选择 Custom rule(自定义规则),然后选择 Next(下一步)。
  9. 对于规则类型,选择 Custom rule(自定义规则),然后选择 Next(下一步)。
  10. 对于 Action(操作),选择 BLOCK(阻止)。
  11. 输入您的 Rule name(规则名称)。
  12. 对于 If a request(如果请求),选择 matches all the statements (AND)(匹配所有语句 (AND))。
  13. Statement 1(语句 1)中,使用以下选项:
    对于 Inspect(检查),选择 Has a label(有标签)。
    对于 Statement(语句),选择 Label(标签)。
    对于 Match key(匹配键),选择阻止您请求的 AWS 托管规则的规则组中对应规则的标签。
  14. 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 地址)。
  15. 选择 Add rule(添加规则)。
  16. 选择 Edit Rule Order(编辑规则顺序),然后将新规则拖到 AWS 托管规则组的下方。
    **注意:**规则按其显示的顺序应用,您的新规则必须位于 AWS 托管规则组的下方。
  17. 选择 Save Rule Order(保存规则顺序)。

范围缩小语句

使用范围缩小语句缩小规则或规则组评估的请求的范围。向规则组中添加范围缩小语句后,就可以检查请求。该语句会跳过语句中包含的合法 IP 地址。

完成以下步骤:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中的 AWS WAF 下,选择 Protection packs (web ACLs)(保护包 (Web ACL))。
  3. 选择您的保护包,然后选择 Manage rule(管理规则)。
  4. 选择阻止您请求的 AWS 托管规则的规则组。
  5. 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 地址)作为来源。
  6. 选择 Save rule(保存规则)。
AWS 官方已更新 6 个月前