在 AWS WAF 中覆盖规则组操作 - AWS WAF、AWS Firewall Manager、AWS Shield Advanced 和 AWS Shield 网络安全分析器

介绍 AWS WAF 的全新控制台体验

现在,您可以使用更新后的体验访问控制台中任意位置的 AWS WAF 功能。有关更多详细信息,请参阅 使用更新的控制台体验

在 AWS WAF 中覆盖规则组操作

本节介绍了如何覆盖规则组操作。

将规则组添加到保护包(web ACL)时,您可以覆盖它对匹配的 web 请求所执行的操作。覆盖保护包(web ACL)配置中规则组的操作不会改变规则组本身。该操作仅更改 AWS WAF 在保护包(web ACL)上下文中使用规则组的方式。

规则组规则操作的覆盖

您可以将规则组内规则的操作覆盖为任何有效的规则操作。执行此操作时,将完全按照配置规则的操作为覆盖设置处理匹配的请求。

注意

规则操作可以是终止,也可以是非终止。终止操作会停止对请求的保护包(web ACL)评估,要么允许请求继续访问受保护的应用程序,要么将其阻止。

以下是规则操作选项:

  • Allow:AWS WAF 允许将请求转发到受保护的 AWS 资源以进行处理和响应。这是终止操作。在您定义的规则中,您可以在请求中插入自定义标头,然后再将其转发到受保护的资源。

  • Block:AWS WAF 阻止请求。这是终止操作。默认情况下,您的受保护 AWS 资源以 HTTP 403 (Forbidden) 状态代码进行响应。在您定义的规则中,您可以自定义响应。当 AWS WAF 阻止请求时,Block 操作设置将决定受保护资源发送回客户端的响应。

  • Count:AWS WAF 对请求进行计数,但不确定是允许还是阻止请求。这是一个非终止操作。AWS WAF 继续处理保护包(web ACL)中的其余规则。在您定义的规则中,您可以将自定义标头插入请求中,也可以添加其他规则可以匹配的标签。

  • CAPTCHA 和 Challenge:AWS WAF 使用验证码拼图和静默质询来验证请求并非来自机器人,并且 AWS WAF 使用令牌来跟踪最近成功的客户端响应。

    只有当浏览器访问 HTTPS 端点时,才能运行验证码拼图和静默质询。浏览器客户端必须在安全环境中运行才能获取令牌。

    注意

    当您在其中一个规则中使用 CAPTCHA 或 Challenge 规则操作或在规则组中将其作为规则操作覆盖时,您需要支付额外费用。有关更多信息,请参阅 AWS WAF 定价

    这些规则操作可以是终止操作,也可以是非终止操作,具体取决于请求中令牌的状态:

    • 对于有效的未过期令牌的非终止操作:如果根据配置的验证码或质询免疫时间,令牌有效且未过期,则 AWS WAF 处理与 Count 操作类似的请求。AWS WAF 继续基于保护包(web ACL)中的其余规则检查 web 请求。与 Count 配置类似,在您定义的规则中,您可以选择使用自定义标头配置这些操作以插入到请求中,也可以添加其他规则可以匹配的标签。

    • 对于无效或过期令牌的终止操作,请求被阻止:如果令牌无效或指定的时间戳已过期,则 AWS WAF 终止对 web 请求的检查并阻止请求,与 Block 操作类似。AWS WAF 然后使用自定义响应代码响应客户端。对于 CAPTCHA,如果请求内容表明客户端浏览器可以处理它,则 AWS WAF 会在 JavaScript 插页式广告中发送验证码拼图,以区分人类用户和机器人。在 Challenge 操作中,AWS WAF 发送带有静默质询的 JavaScript 插页式广告,以区分普通浏览器与机器人运行的会话。

    有关更多信息,请参阅 AWS WAF 中的 CAPTCHA 和 Challenge

有关如何使用此选项的信息,请参阅 覆盖规则组的规则操作

将规则操作覆盖为 Count

规则操作覆盖的最常见使用案例是将部分或全部规则操作覆盖到 Count,以测试和监控规则组的行为,然后再将其投入生产。

您也可以使用它对生成误报的规则组进行故障排除。当规则组阻止了您不希望阻止的流量时,就会出现误报。如果您在规则组中发现某条规则将阻止您希望允许通过的请求,则您可以保留该规则的计数操作覆盖,使其无法对您的请求采取行动。

有关在测试中使用规则操作覆盖的更多信息,请参阅 测试和调整您的 AWS WAF 保护

JSON 列表:RuleActionOverrides 取代 ExcludedRules

如果在 2022 年 10 月 27 日之前,您在保护包(web ACL)配置中将规则组规则操作设置为 Count,AWS WAF 在保护包(web ACL)JSON 中将覆盖内容保存为 ExcludedRules。现在,用于将规则替换为 Count 的 JSON 设置位于 RuleActionOverrides 设置中。

我们建议您将您的 JSON 列表中的所有 ExcludedRules 设置更新为 RuleActionOverrides 设置,并将操作设置为 Count。API 接受任一设置,但如果您只使用新 RuleActionOverrides 设置,则您的控制台工作和 API 工作之间的 JSON 列表都将保持一致。

注意

在 AWS WAF 控制台中,保护包(web ACL)采样请求选项卡不显示使用旧设置的规则示例。有关更多信息,请参阅 查看 web 请求示例

当您使用 AWS WAF 控制台编辑现有规则组设置时,控制台会自动将 JSON 中的任何 ExcludedRules 设置转换为 RuleActionOverrides 设置,其中覆盖操作设置为 Count。

  • 当前设置示例:

    "ManagedRuleGroupStatement": { "VendorName": "AWS", "Name": "AWSManagedRulesAdminProtectionRuleSet", "RuleActionOverrides": [ { "Name": "AdminProtection_URIPATH", "ActionToUse": { "Count": {} } } ]
  • 旧设置示例:

    OLD SETTING "ManagedRuleGroupStatement": { "VendorName": "AWS", "Name": "AWSManagedRulesAdminProtectionRuleSet", "ExcludedRules": [ { "Name": "AdminProtection_URIPATH" } ] OLD SETTING

规则组返回操作覆盖为 Count

您可以覆盖规则组返回的操作,将其设置为 Count。

注意

要测试规则组中的规则,这并非好的方法,因为这不会改变规则组本身的 AWS WAF 评估方式。该操作仅影响 AWS WAF 如何处理规则组评估返回到保护包(web ACL)的结果。如果要测试规则组中的规则,请使用上一节中描述的方式 规则组规则操作的覆盖

当您将规则组操作覆盖为 Count 时,AWS WAF 将正常处理规则组评估。

如果规则组中没有匹配的规则,或者所有匹配的规则都有 Count 操作,则此覆盖对规则组或保护包(web ACL)的处理没有影响。

规则组中第一个与 web 请求匹配且具有终止规则操作的规则会导致 AWS WAF 停止对该规则组的评估,并将终止操作结果返回到保护包(web ACL)评估级别。此时,此覆盖将在保护包(web ACL)评估中生效。AWS WAF 覆盖终止操作,因此规则组评估的结果只是一个 Count 操作。然后 AWS WAF 继续处理保护包(web ACL)中的其余规则。

有关如何使用此选项的信息,请参阅 将规则组的评估结果覆盖为 Count