跳至内容

如何在 AWS WAF 中处理超大 HTTP 请求?

2 分钟阅读
0

我想在 AWS WAF 中检查 Web 请求正文时管理大小限制。

简短描述

当 Web 请求正文超出正文检查大小限制时,底层主机服务仅会将限制范围内的内容转发给 AWS WAF。对于超出限制的 Web 请求正文部分,AWS WAF 不会检测跨站脚本攻击 (XSS) 或 SQL 注入模式。

**注意:**AWS WAF 不会记录 Web 请求正文的内容,无论其是否在正文检查大小限制范围内发现攻击模式。

要防止攻击模式出现在超大请求的正文检查大小限制范围之外,请配置一条阻止所有超大请求的规则。然后,创建一条显式允许合法超大请求的规则。您可以创建自定义规则,也可以使用核心规则集 (CRS) 托管规则组。

解决方法

使用 CRS 托管规则

要使用 CRS 托管规则组,请启用 SizeRestrictions_Body 规则,以阻止超过 8 KB(8,192 字节)的请求。然后,创建一条允许超出此大小限制的合法请求的规则。

启用 SizeRestrictions_Body 规则

完成以下步骤:

  1. 打开 AWS WAF 控制台。
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACLs。
  3. 对于 Region(区域),选择您创建了 Web 访问控制列表 (Web ACL) 的 AWS 区域。
    **注意:**如果该 Web ACL 为 Amazon CloudFront 设置,请选择 Global(全球)。
  4. 选择您的 Web ACL。
  5. 在 Rules(规则)下,选择 Add Rules(添加规则)。
  6. 在下拉列表中,选择 Add managed rule groups(添加托管式规则组)。
  7. 在 Add managed rule groups(添加托管式规则组)下,选择 AWS managed rule groups(AWS 托管式规则组)。
  8. 在 Free rule groups(免费规则组)下,选择 Core rule set(核心规则集)。
  9. 打开 Add to web ACL(添加到 Web ACL),然后选择 Edit(编辑)。
  10. 要检查并阻止超过 8 KB 的 Web 请求正文,请将 SizeRestrictions_BODY 规则设置为 Block(阻止)。
  11. 选择 Save rule(保存规则)。

要减少误报的发生,请仅使用 SizeRestrictions_Body 规则,并将所有其他规则覆盖为 Count(计数)。

创建允许合法请求的规则

SizeRestrictions_Body 规则可能会阻止超过 8 KB 的合法请求。要允许超出此大小限制的合法请求,请将 SizeRestrictions_BODY 规则设置为 Count(计数)。然后,使用 AWS WAF 添加的标签进行后续规则评估。

完成以下步骤:

  1. 打开 AWS WAF 控制台。
  2. 在导航窗格中的 AWS WAF 下,选择 Web ACLs。
  3. 对于 Region(区域),选择您创建了 Web ACL 的区域。
    **注意:**如果为 CloudFront 设置了 Web ACL,请选择 Global(全局)。
  4. 选择您的 Web ACL。
  5. 在 Rules(规则)下,选择 AWS-AWSManagedRulesCommonRuleSet。
  6. 选择 Edit(编辑)。
  7. 对于 SizeRestrictions_BODY 规则,选择 Override to Count(覆盖为计数)。
  8. 选择 Save rule(保存规则)。
  9. 在 Rules(规则)下,选择 Add rules(添加规则),然后选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
  10. 对于 Name(名称),输入规则名称,然后选择 Regular rule(常规规则)。
  11. 对于 If a request(如果请求),选择 matches all the statements (AND)(匹配所有语句 (AND))。
  12. 对于 Statement 1(语句 1),输入以下信息:
    对于 Inspect(检查),选择 Has a label(有标签)。
    对于 Match scope(匹配范围),选择 Label(标签)。
    对于 Match key(匹配键),输入标签 awswaf:managed:aws:core-rule-set:SizeRestrictions_Body。
  13. 对于 Statement 2(语句 2),输入以下信息:
    选择 Negate statement results(否定语句结果)。
    对于 Inspect(检查),请选择 URI path(URI 路径)。
    对于匹配类型 (Match type),选择完全匹配字符串 (Exactly matches string)。
    对于 String to match(要匹配的字符串),输入 /upload。
    **注意:**请将 /upload 替换为您发起请求的 URI 路径。
  14. (可选)对于 text transformation(文本转换),选择文本转换或选择 None(无)。
  15. 对于 Action(操作),选择 Block(阻止)。
  16. 选择 Add rule(添加规则)。
  17. 对于 Set rule priority(设置规则优先级),更新优先级,使规则位于 CRS 托管规则组之后。CRS 中的 SizeRestrictions_Body 规则现在可以添加标签,且 AWS WAF 可以在后续规则中使用该标签。
  18. 选择 Save rule(保存规则)。

**注意:**最佳做法是将 Action(操作)设置为 Count(计数),然后在非生产环境中测试规则。要评估规则,请结合使用 Amazon CloudWatch 指标与 AWS WAF 采样请求或 AWS WAF 日志。

创建自定义正文检查规则

为该规则设置超大请求处理操作

配置自定义正文检查规则时,可以选择超大请求处理操作。超大请求处理会指示 AWS WAF 在请求正文超出大小限制时如何处理 Web 请求。用于处理超大组件的选项包括 Continue(继续)、Match(匹配)和 No match(不匹配)。在 AWS WAF 控制台上,您必须选择以下选项之一。在控制台之外,默认选项设置为 Continue(继续)。要阻止超大请求,请创建一条使用超大请求处理操作的自定义规则。

创建允许合法请求的规则

要允许超出大小限制的合法请求,请创建一条显式允许来自合法主机的请求的规则。然后,更新该规则的优先级,,使其高于阻止请求的规则的优先级。

相关信息

为什么 AWS WAF 会阻止我的合法上传请求?

AWS 官方已更新 1 年前