规则组的操作覆盖选项 - AWS WAFAWS Firewall Manager、和 AWS Shield Advanced

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

规则组的操作覆盖选项

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

规则组规则操作优先于规则

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

注意

规则操作可以是终止,也可以是非终止。终止操作会停止对请求的 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 使用 CAPTCHA 谜题和静默挑战来验证请求不是来自机器人,并 AWS WAF 使用代币来跟踪最近成功的客户响应。

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

    注意

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

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

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

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

    有关更多信息,请参阅 CAPTCHA然后Challenge在 AWS WAF

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

将规则操作覆盖为 Count

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

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

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

JSON 列表 – RuleActionOverrides 取代 ExcludedRules

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

当您使用 AWS WAF 控制台编辑现有规则组设置时,控制台会自动将 JSON 中的任何ExcludedRulesRuleActionOverrides设置转换为设置,覆盖操作设置为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

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

规则组将操作重写返回到 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