跳至内容

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

3 分钟阅读
0

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

解决方法

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

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

完成以下步骤:

  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 访问控制列表(ACL),以允许合法请求通过引起误报的托管规则组。要修改托管规则组,请使用标签或使用范围缩小语句

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

标签

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

完成以下步骤:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中,选择 AWS WAF
  3. 选择 Resources & protection packs(资源和保护包)。
  4. Protection packs(保护包)下,选择 Managed sets and groups(托管集和组)下拉列表,然后选择 Manage IP sets(管理 IP 集)。
  5. 在右侧窗格中,选择 Create new IP set(创建新 IP 集)。
  6. 输入 IP set name(IP 集名称)。
    如果您在 CloudFront 中使用此 IP 集,请在 Scope(范围)下选择 CloudFront
    (可选)输入 Description(描述)。
    选择您的 IP 版本。
    输入 IP 地址。
  7. 选择 Save(保存)。
  8. 找到您的保护包,然后选择 Rules(规则)旁边的 View and edit(查看和编辑)。
  9. 在右侧窗格中,选择阻止您请求的 AWS 托管规则。
  10. Rule overrides(规则覆盖)下,将阻止请求的规则的操作更改为 Count(计数)。
  11. 选择 Save rule(保存规则)。
  12. 在右侧窗格中,选择 Add rules(添加规则)。
    选择 Custom rule(自定义规则),然后选择 Next(下一步)。
    再次选择 Custom rule(自定义规则),然后选择 Next(下一步)。
  13. 将规则 Action(操作)设置为 BLOCK(阻止)。
  14. 输入您的 Rule name(规则名称)。
  15. 对于 If a request(如果请求),展开下拉列表并选择 matches all the statements (AND)(匹配所有语句 (AND))。
  16. 对于 Statement 1(语句 1),完成以下步骤:
    对于 Inspect(检查),选择 Has a label(有标签)。
    对于 Statement(语句),选择 Label(标签)。
    对于 Match key(匹配密钥),选择阻止您请求的 AWS 托管规则组规则的标签。
  17. 对于 Statement 2(语句 2),完成以下步骤:
    对于 Inspect(检查),选择 Originates from IP address in(源自 IP 地址)。
    Statement(语句)下,对于 IP address list(IP 地址列表),选择您的 IP 集。
    展开 Rule configuration(规则配置),在 Negate statement (NOT)(否定语句 (NOT))下,选择 Negate statement results(否定语句结果)。
    对于 IP address to use as the originating address(作为来源地址的 IP 地址),选择 Source IP address(源 IP 地址)。
  18. 选择 Create Rule(创建规则)。
  19. 要设置规则优先级,请在右侧窗格中选择 Edit Rule Order(编辑规则顺序),然后将规则拖到 AWS 托管规则组下方。
    **注意:**规则按其出现的顺序应用。
  20. 选择 Save Rule Order(保存规则顺序)。

范围缩小语句

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

完成以下步骤:

  1. 打开 AWS WAF 控制台
  2. 在导航窗格中,选择 AWS WAF
  3. 选择 Resources & protection packs(资源和保护包)。
  4. Protection packs(保护包)下,单击 Managed sets and groups(托管集和组),然后选择 Manage IP sets(管理 IP 集)。
  5. 在右侧窗格中,选择 Create new IP set(创建新 IP 集)。
  6. 输入 IP set name(IP 集名称)。
    如果您在 CloudFront 中使用此 IP 集,请在 Scope(范围)下选择 CloudFront
    (可选)输入 Description(描述)。
    选择您的 IP 版本。
    输入 IP 地址。
  7. 选择 Save(保存)。
  8. 找到您的保护包,然后选择 Rules(规则)旁边的 View and edit(查看和编辑)。
  9. 在右侧窗格中,选择阻止您请求的 AWS 托管规则组。
  10. Inspection(检查)下,选择 Match statement(与语句匹配)。
  11. 对于 If a request(如果请求),选择 doesn't match the statement (NOT)(与语句不匹配 (NOT))。
  12. 对于 Inspect(检查),选择 Originates from IP address in(源自 IP 地址)。
  13. Statement(语句)下,对于 IP address list(IP 地址列表),选择您的 IP 集。
  14. 展开 Rule configuration(规则配置)并选择 Source IP address(源 IP 地址)作为来源。
  15. 选择 Save rule(保存规则)。
AWS 官方已更新 5 个月前