监控和调整您的 AWS WAF 保护
本部分介绍如何监控和调整 AWS WAF 保护。
注意
要遵循本节中的指导,您需要大致了解如何创建和管理 AWS WAF 保护,例如 Web ACL、规则和规则组。本指南前面部分将介绍该信息。
监控 Web 流量和规则匹配以验证 Web ACL 的行为。如果您发现问题,请调整规则以进行更正,然后进行监控以验证调整。
重复以下步骤,直到 Web ACL 根据需要管理您的 Web 流量。
监控和调整
监控流量和规则匹配情况
确保流量畅通,并且您的测试规则正在找到匹配的请求。
请查看以下信息,了解您正在测试的保护:
-
日志 – 访问与 Web 请求匹配的规则的相关信息:
-
您的规则 – Web ACL 中具有 Count 操作的规则列在
nonTerminatingMatchingRules
下。带有 Allow 或 Block 的规则列为terminatingRule
. 根据规则匹配的结果,带有 CAPTCHA 或 Challenge 的规则可以是终止的,也可以是非终止的,因此列在两个类别之一下。 -
规则组 – 在
ruleGroupId
字段中标识规则组,其规则匹配的分类与独立规则的分类相同。 -
标签 –
Labels
字段中列出了规则已应用于请求的标签。
有关更多信息,请参阅 Web ACL 流量的日志字段。
-
-
Amazon CloudWatch 指标 – 您可以访问 Web ACL 请求评估的以下指标:
-
您的规则 - 指标按照规则操作进行分组。例如,如果在 Count 模式下测试规则,则其匹配项列为 Web ACL 的
Count
指标。 -
您的规则组 – 您的规则组指标列在规则组指标下。
-
其他账户拥有的规则组 - 规则组指标通常只有规则组的所有者可见。但是,如果覆盖了某个规则的规则操作,则该规则的指标将列示在 Web ACL 指标下。此外,任何规则组添加的标签都会列示在您的 Web ACL 指标中
此类别中的规则组 使用 AWS WAF 的 AWS 托管规则来防范常见 Web 威胁、AWS Marketplace 托管规则组、识别其他服务提供的规则组 以及其他账户与您共享的规则组。
-
标签 – 评估期间添加到 Web 请求的标签列在 Web ACL 的标签指标中。您可以访问所有标签的指标,无论这些指标是由您的规则和规则组添加的,还是由其他账户拥有的规则添加的。
有关更多信息,请参阅 查看 Web ACL 的指标。
-
-
Web ACL 流量概览控制面板 – 访问 AWS WAF 控制台中的 Web ACL 页面并打开流量概览选项卡,即可访问 Web ACL 评估的 Web 流量摘要。
流量概览控制面板提供了 AWS WAF 在评估您的应用程序 Web 流量时收集 Amazon CloudWatch 指标的近实时摘要。
有关更多信息,请参阅 Web ACL 流量概述控制面板。
-
采样的 Web 请求 – 访问与 Web 请求样本相匹配的规则的信息。示例信息通过 Web ACL 中规则的指标名称来标识匹配的规则。对于规则组,该指标标识规则组参考语句。对于规则组内的规则,该示例在中列出了匹配的规则名称
RuleWithinRuleGroup
。有关更多信息,请参阅 查看 Web 请求示例。
-
-
配置缓解以解决误报
如果您确定某条规则正在生成误报,则通过在不应该出现误报的时候匹配 Web 请求,则以下选项可以帮助您调整 Web ACL 保护以缓解误报。
更正规则检查条件
对于您自己的规则,您通常只需要调整用于检查 Web 请求的设置即可。示例包括更改正则表达式模式集中的规范,调整在检查之前应用于请求组件的文本转换,或者切换到使用转发 IP 地址。有关导致问题的规则类型,请参阅 在 AWS WAF 中使用规则语句 下方的指南。
更正复杂的问题
对于您无法控制的检查条件和某些复杂的规则,您可能需要进行其他更改,例如添加明确允许或阻止请求的规则,或者通过有问题的规则将请求排除在评估范围之外的规则。托管规则组通常需要这种缓解,但其他规则也可以。示例包括基于速率的规则语句和 SQL 注入攻击规则语句。
如何减少误报,因用例而异。以下是常规方法:
-
添加缓解规则 – 添加一条规则,该规则在新规则之前运行,并明确允许导致误报的请求。有关 Web ACL 中规则评估顺序的信息,请参阅 在 Web ACL 中设置规则优先级。
通过这种方法,允许的请求会被发送到受保护的资源,因此它们永远不会达到新的评估规则。如果新规则是付费托管规则组,则此方法还有助于控制使用该规则组的费用。
-
添加带有缓解规则的逻辑规则 – 使用逻辑规则语句将新规则与排除误报的规则相结合。有关信息,请参阅在 AWS WAF 中使用逻辑规则语句。
例如,假设您正在添加一个 SQL 注入攻击匹配语句,该语句会为某类请求生成误报。创建与这些请求相匹配的规则,然后使用逻辑规则语句组合这些规则,这样您就可以只匹配两个请求都不符合误报条件且确实符合 SQL 注入攻击条件的请求。
-
添加范围缩小语句 – 对于基于速率的语句和托管规则组引用语句,通过在主语句中添加范围向下语句,将导致误报的请求排除在评估之外。
与范围缩小语句不匹配的请求永远不会到达规则组或基于速率的评估。有关范围缩小语句的信息,请参阅 在 AWS WAF 中使用范围缩小语句。有关示例,请参阅从机器人管理中排除 IP 范围。
-
添加标签匹配规则 – 对于使用标签的规则组,请确定有问题的规则应用于请求的标签。如果您尚未在计数模式下设置规则组规则,则可能需要先将规则组规则设置为计数模式。添加一个标签匹配规则,该规则位于规则组之后运行,该规则与有问题的规则所添加的标签相匹配。在标签匹配规则中,您可以筛选要允许的请求和要阻止的请求。
如果您使用这种方法,则在完成测试后,请在规则组中将有问题的规则保持在计数模式,并保留您的自定义标签匹配规则。有关标签匹配语句的信息,请参阅 标签匹配规则语句。有关示例,请参阅 允许特定的被阻止机器人 和 ATP 示例:针对缺失和被盗凭证的自定义处理。
-
更改托管规则组的版本 – 对于版本控制的托管规则组,请更改您正在使用的版本。例如,您可以切换回已成功使用的最后一个静态版本。
这通常是临时修复。在测试或暂存环境中继续测试最新版本时,或者在等待提供程序提供更兼容的版本时,您可以更改生产流量的版本。有关托管规则组版本的信息,请参阅 在 AWS WAF 使用托管规则组。
-
如果您对新规则可以根据您的需要匹配请求感到满意,请进入下一阶段的测试并重复此过程。在您的生产环境中执行测试和调整的最后阶段。