跳至内容

如何在 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 官方已更新 8 个月前