我想在 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 规则
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACLs。
- 对于 Region(区域),选择您创建了 Web 访问控制列表 (Web ACL) 的 AWS 区域。
**注意:**如果该 Web ACL 为 Amazon CloudFront 设置,请选择 Global(全球)。
- 选择您的 Web ACL。
- 在 Rules(规则)下,选择 Add Rules(添加规则)。
- 在下拉列表中,选择 Add managed rule groups(添加托管式规则组)。
- 在 Add managed rule groups(添加托管式规则组)下,选择 AWS managed rule groups(AWS 托管式规则组)。
- 在 Free rule groups(免费规则组)下,选择 Core rule set(核心规则集)。
- 打开 Add to web ACL(添加到 Web ACL),然后选择 Edit(编辑)。
- 要检查并阻止超过 8 KB 的 Web 请求正文,请将 SizeRestrictions_BODY 规则设置为 Block(阻止)。
- 选择 Save rule(保存规则)。
要减少误报的发生,请仅使用 SizeRestrictions_Body 规则,并将所有其他规则覆盖为 Count(计数)。
创建允许合法请求的规则
SizeRestrictions_Body 规则可能会阻止超过 8 KB 的合法请求。要允许超出此大小限制的合法请求,请将 SizeRestrictions_BODY 规则设置为 Count(计数)。然后,使用 AWS WAF 添加的标签进行后续规则评估。
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACLs。
- 对于 Region(区域),选择您创建了 Web ACL 的区域。
**注意:**如果为 CloudFront 设置了 Web ACL,请选择 Global(全局)。
- 选择您的 Web ACL。
- 在 Rules(规则)下,选择 AWS-AWSManagedRulesCommonRuleSet。
- 选择 Edit(编辑)。
- 对于 SizeRestrictions_BODY 规则,选择 Override to Count(覆盖为计数)。
- 选择 Save rule(保存规则)。
- 在 Rules(规则)下,选择 Add rules(添加规则),然后选择 Add my own rules and rule groups(添加我自己的规则和规则组)。
- 对于 Name(名称),输入规则名称,然后选择 Regular rule(常规规则)。
- 对于 If a request(如果请求),选择 matches all the statements (AND)(匹配所有语句 (AND))。
- 对于 Statement 1(语句 1),输入以下信息:
对于 Inspect(检查),选择 Has a label(有标签)。
对于 Match scope(匹配范围),选择 Label(标签)。
对于 Match key(匹配键),输入标签 awswaf:managed:aws:core-rule-set:SizeRestrictions_Body。
- 对于 Statement 2(语句 2),输入以下信息:
选择 Negate statement results(否定语句结果)。
对于 Inspect(检查),请选择 URI path(URI 路径)。
对于匹配类型 (Match type),选择完全匹配字符串 (Exactly matches string)。
对于 String to match(要匹配的字符串),输入 /upload。
**注意:**请将 /upload 替换为您发起请求的 URI 路径。
- (可选)对于 text transformation(文本转换),选择文本转换或选择 None(无)。
- 对于 Action(操作),选择 Block(阻止)。
- 选择 Add rule(添加规则)。
- 对于 Set rule priority(设置规则优先级),更新优先级,使规则位于 CRS 托管规则组之后。CRS 中的 SizeRestrictions_Body 规则现在可以添加标签,且 AWS WAF 可以在后续规则中使用该标签。
- 选择 Save rule(保存规则)。
**注意:**最佳做法是将 Action(操作)设置为 Count(计数),然后在非生产环境中测试规则。要评估规则,请结合使用 Amazon CloudWatch 指标与 AWS WAF 采样请求或 AWS WAF 日志。
创建自定义正文检查规则
为该规则设置超大请求处理操作
配置自定义正文检查规则时,可以选择超大请求处理操作。超大请求处理会指示 AWS WAF 在请求正文超出大小限制时如何处理 Web 请求。用于处理超大组件的选项包括 Continue(继续)、Match(匹配)和 No match(不匹配)。在 AWS WAF 控制台上,您必须选择以下选项之一。在控制台之外,默认选项设置为 Continue(继续)。要阻止超大请求,请创建一条使用超大请求处理操作的自定义规则。
创建允许合法请求的规则
要允许超出大小限制的合法请求,请创建一条显式允许来自合法主机的请求的规则。然后,更新该规则的优先级,,使其高于阻止请求的规则的优先级。
相关信息
为什么 AWS WAF 会阻止我的合法上传请求?