<!-- AI_TASK_START: AI标题翻译 -->
[解决方案] 如何使用 AWS WAF Bot Control 处理目标机器人信号并通过自适应用户体验缓解逃避性机器人
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 产品功能分析
## 新功能/新产品概述
AWS WAF Bot Control for Targeted Bots 是 **AWS WAF** 的一个规则组,旨在检测和管理从常见到协调性强的机器人威胁。该功能的核心是通过 **标签** 和信号传递,帮助用户平衡安全与用户体验,避免假阳性影响合法用户。背景在于,传统方法如封禁或 **CAPTCHA** 可能干扰用户体验,而此功能允许将机器人活动信号转发到应用中,适应性调整响应。目标用户群包括需要保护网络应用免受机器人攻击的组织,如电商或内容交付平台,市场定位聚焦于高级机器人威胁防护,强调灵活性和用户友好性。
## 关键客户价值
- **提升用户体验和安全平衡**:通过转发信号(如 **x-amzn-waf-bot-confidence** 头),应用可根据机器人置信度(低、中、高)调整策略,避免假阳性导致的访问中断,实现更平滑的用户互动,与传统直接封禁相比,显著减少了合法用户被误伤的风险。
- 在高并发场景中,此机制允许应用针对低置信度威胁仅隐藏关键数据,维持用户参与度。
- **降低机器人操作成本**:策略如强制认证或分流业务流程,增加了机器人发起者的身份管理负担,从而有效抑制协调性机器人攻击。例如,使用 **Amazon Cognito** 的威胁保护可进一步增强认证安全。
- 与竞品差异在于,**AWS WAF** 提供可自定义的缓解策略,允许用户根据自身容忍度(如对假阳性的权衡)灵活配置,而非一刀切的方法。
- **优化应用开发和运维**:通过 **SDK** 集成,减少智能威胁检测成本,并支持动态调整,如结合 **CloudWatch** 监控,实现高效资源利用。但需注意,过度依赖自定义规则可能增加开发工作量,适合有一定技术能力的团队。
## 关键技术洞察
- **技术独特性**:基于 **机器学习** (如 **TGT_ML_CoordinatedActivityLow** 规则) 和 **标签机制**,**AWS WAF** 可以检测分布式机器人活动,并通过 **Challenge** 动作(非终止性)将信号传递到应用,而非直接封禁。该原理涉及在规则组后添加自定义规则,匹配标签后插入自定义头(如 **x-amzn-waf-bot-confidence=high**),实现事件驱动架构。
- 创新点包括多级置信度模型(低、中、高),通过 **OR 规则语句** 组合多个标签,简化管理并适应新威胁,而 **Rate-based rules** 进一步聚合基于会话的请求,增强对高频机器人的实时响应。
- 对性能影响:提高了检测准确性和可用性,但在大规模组网时,标签匹配和自定义规则可能增加延迟和管理复杂度;优势在于灵活性强,能结合 **Fraud Control** 规则组优化安全链路。挑战包括需要客户端支持 **SDK**,否则规则有效性降低;解决方式是通过 **Count** 动作作为备选,但这会削弱机器学习检测的效能。
## 其他信息
原文结尾强调了保持更新的重要性,如关注 **AWS WAF Security Blog**,并提供反馈渠道。该功能适用于动态网络环境,但用户需根据自身应用评估假阳性容忍度,以最大化效益。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# 如何使用 AWS WAF Bot Control 处理目标机器人信号并通过自适应用户体验缓解逃避性机器人
**原始链接:** [https://aws.amazon.com/blogs/networking-and-content-delivery/how-to-use-aws-waf-bot-control-for-targeted-bots-signals-and-mitigate-evasive-bots-with-adaptive-user-experience/](https://aws.amazon.com/blogs/networking-and-content-delivery/how-to-use-aws-waf-bot-control-for-targeted-bots-signals-and-mitigate-evasive-bots-with-adaptive-user-experience/)
**发布时间:** 2025-03-07
**厂商:** AWS
**类型:** BLOG
---
## 引言
[AWS WAF](https://aws.amazon.com/waf/) [Bot Control](https://aws.amazon.com/waf/features/bot-control/) 规则组包含用于检测和管理机器人威胁的规则。这些威胁从易于识别的常见机器人到协调的目标机器人,后者通过跨多个主机操作来逃避检测。像其他安全控件一样,Amazon Web Services (AWS) WAF Bot Control for Targeted Bots 规则也可能引入“[假阳性 (false positives)](https://aws.amazon.com/developer/application-security-performance/articles/managing-waf-false-positives-in-aws-waf/)”,从而无意中阻止合法用户访问应用程序。
AWS WAF Bot Control for Targeted Bots 规则基于机器人活动指标,使用[Block、CAPTCHA 和 Challenge](https://aws.amazon.com/blogs/networking-and-content-delivery/protect-against-bots-with-aws-waf-challenge-and-captcha-actions/) 作为规则动作来缓解机器人威胁。在保护 Web 应用程序免受机器人威胁时,传统方法如阻塞或 CAPTCHA 往往会破坏用户体验。默认情况下,置信度信号为“高 (high)”的机器人活动会被 AWS WAF 阻塞,而当不确定请求是否来自机器人时,则使用 CAPTCHA。
本帖分为三个全面部分。
1. 首先,我们探讨如何使用 AWS WAF [labels (标签)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-labels.html) 将信号传递给您的应用程序。
2. 其次,我们探索结合这些标签来指示各种机器人置信度水平的方法。
3. 最后,我们讨论不同的缓解策略,使用转发的信号作为标头来适应用户体验。这样可以平衡合法用户的可用性,同时阻塞逃避性机器人。
## 1\. 使用 AWS WAF labels 将机器人活动信号传递给您的应用程序
图 1 中的序列图概述了使用 AWS WAF 规则在 AWS WAF Bot Control for Targeted Bots 规则检测到机器人活动信号时,将标头插入请求中的过程。您可以使用此标头驱动应用程序逻辑,以适应用户体验作为缓解机器人威胁的方式,而不是使用 AWS WAF Block 或 CAPTCHA 动作。

图 1: 序列图展示 AWS WAF 为机器人缓解插入标头到应用程序
Challenge 动作对于带有有效令牌的请求是[非终止的 (non-terminating)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-captcha-and-challenge-actions.html),这意味着 AWS WAF 在 AWS WAF Bot Control 规则组之后继续按优先顺序评估规则。该规则组添加标签,这些标签指示机器人活动信号,您可以[匹配这些标签](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-label-match.html) 在后续自定义规则中。
首先,我们将所有 AWS WAF Bot Control for Targeted Bots 规则组规则的动作覆盖为 Challenge,而不是 Block 或 CAPTCHA,如图 2 所示。图 3 显示了根据匹配标准可能添加到请求的标签子集。完整标签列表可在[AWS WAF Bot Control 规则组列表](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-bot.html) 文档中找到。有关配置 AWS WAF Bot Control 规则组的逐步说明,请参阅我们的 AWS Security [帖子](https://aws.amazon.com/blogs/security/detect-and-block-advanced-bot-traffic/)。

图 2: 将 AWS WAF Bot Control Targeted 规则组规则覆盖为使用 Challenge 动作

图 3: 在被 AWS WAF Bot Control 规则组评估后添加到请求的一些标签
配置 Challenge 动作后,我们建议使用[应用程序集成 SDKs (application integration SDKs)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-application-integration.html),因为这能提供对客户端环境的洞察,这些洞察被 AWS WAF 用于识别机器人活动,并[降低智能威胁检测成本](https://aws.amazon.com/blogs/networking-and-content-delivery/cost-effective-ways-for-securing-your-web-applications-using-aws-waf/)。如果您的客户端不支持客户端交互,您仍然可以使用 Count 动作(例如)。然而,AWS WAF Bot Control 规则的效力会降低。
下一步是配置后续规则来匹配标签。图 4 显示了一个后续自定义规则,该规则匹配标签 `awswaf:managed:aws:bot-control:TGT_VolumetricSession` 并使用 Count 动作。在自定义请求[添加自定义标头](https://docs.aws.amazon.com/waf/latest/developerguide/customizing-the-incoming-request.html) `bot-rule=volumetric`,该标头被转发到您的应用程序作为 `x-amzn-waf-bot-rule=volumetric`。

图 4: 自定义 AWS WAF 规则,用于在匹配 AWS WAF Bot Control 标签时插入标头
## 2\. 结合 labels 以指示机器人置信度水平
AWS WAF Bot Control 规则组 for Target Bots 包括[多个规则](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-bot.html#aws-managed-rule-groups-bot-rules)。为每个规则创建单独标头会在[AWS WAF web ACL (Web 访问控制列表)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) 和您的应用程序中管理起来过于繁琐。相反,您可以使用三个自定义规则来插入一个单一标头,以指示置信度水平:低 (low)、中 (medium) 或高 (high),当请求匹配多个标签时。在 web ACL 中定义置信度水平,这样您的应用程序就不需要在新规则可用或您决定更改每个级别的匹配标签时进行修改。
我们有一个[示例 web ACL](https://github.com/aws-samples/custom-header-label-forwarding-samples-for-aws-waf/blob/main/samples/webacl-sample.json) ,它通过使用 OR 规则语句来匹配标签(使用 Count 动作),并插入标头 `x-amzn-waf-bot-confidence={low|medium|high}`,如图 5 所示。

图 5: AWS WAF Bot Control 规则组之后的自定义标签匹配规则
我们将 AWS WAF Bot Control 标签与以下三个规则结合:
1. [低置信度机器人信号规则 (Low confidence bot signals rule)](https://github.com/aws-samples/custom-header-label-forwarding-samples-for-aws-waf/blob/main/samples/low-confidence-bot-signals-sample-rule.json): 匹配对应的标签,这些标签对应规则: `TGT_ML_CoordinatedActivityLow`(这使用机器学习 (ML) 来确定分布式协调机器人活动的低置信度可能性)、`TGT_VolumetricSession`(表示请求超过正常阈值,针对单个客户端在前五分钟内)、`TGT_TokenReuseIpLow`、`TGT_TokenReuseCountryLow` 和 `TGT_TokenReuseAsnLow`(这些规则表示[AWS WAF token (令牌)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-tokens.html) 在前五分钟内跨多个 IP 地址、国家或自治系统编号 (ASN) 被重复使用)。此规则插入标头 `x-amzn-waf-bot-confidence=low`,然后转发到您的应用程序。
2. [中置信度机器人信号规则 (Medium confidence bot signals rule)](https://github.com/aws-samples/custom-header-label-forwarding-samples-for-aws-waf/blob/main/samples/medium-confidence-bot-signals-sample-rule.json): 匹配先前协调活动和令牌重复使用规则的中等等效标签。我们还包括对应规则的标签:`TGT_SignalAutomatedBrowser`、`TGT_SignalBrowserAutomationExtension`、`TGT_SignalBrowserInconsistency`(这些规则识别指示机器人流量的浏览器不一致)、以及 `TGT_VolumetricSession`(表示在前五分钟内来自单个客户端的请求数量异常高)。此规则插入标头 `x-amzn-waf-bot-confidence=medium`,然后转发到您的应用程序。
3. [高置信度机器人信号规则 (High confidence bot signals rule)](https://github.com/aws-samples/custom-header-label-forwarding-samples-for-aws-waf/blob/main/samples/high-confidence-bot-signals-sample-rule.json): 匹配先前协调活动和令牌重复使用规则的高等等效标签。我们还包括规则 `TGT_VolumetricSessionMaximum`(表示针对单个客户端在前五分钟内请求数量异常高的最大置信度)。此规则插入标头 `x-amzn-waf-bot-confidence=high`,然后转发到您的应用程序。
您还必须将上述 AWS WAF Bot Control for Targeted Bots 规则的默认动作从 CAPTCHA 或 Block 更改为 Challenge,如图 2 中所示。`TGT_TokenAbsent` 规则使用 Challenge 而不是 Count,因此所有请求都需要令牌。这提高了 AWS WAF Bot Control 的效力,但需要小心管理客户端中的令牌。阅读[使用 AWS WAF JavaScript 集成优化 Web 应用程序用户体验](https://aws.amazon.com/blogs/networking-and-content-delivery/optimizing-web-application-user-experiences-with-aws-waf-javascript-integrations/) 以获取更多指导。如图 6 所示,您可以将 Block 作为 Common Bot 规则的默认动作,假设没有合法用户被错误地视为自标识机器人。因此,阻塞这些请求不会影响用户体验。

图 6: AWS WAF Bot Control Common 规则组,默认动作为 Block
## 3\. 使用机器人活动信号适应用户体验的缓解策略
本节提供了使用置信度水平驱动应用程序中自适应用户体验的不同缓解策略。您使用的策略组合,以及应用于每个策略的置信度水平(低、中、高),取决于 1/ 您对机器人影响的容忍度、2/ 对合法用户的用户体验影响,以及 3/ 您希望在应用程序中实施这些策略所需的开发工作量。例如,您可能决定继续使用 AWS WAF 阻塞高置信度机器人威胁,而不是在应用程序中处理缓解。
以下各节中定义的每个策略都使用身份验证作为缓解机器人威胁的方法。身份验证会增加机器人操作者的成本,因为他们必须管理一组身份。另一个好处是,您可以使用进一步的启发式方法来确定是否由机器人控制的认证用户。例如,AWS WAF [Fraud Control (欺诈控制)](https://aws.amazon.com/waf/features/fraud-control/) 规则组可以帮助在请求到达您的应用程序之前阻止机器人驱动的登录或注册请求。如果您使用第三方身份提供者,如 Amazon Cognito,那么它可能有自己的安全机制。[Cognito’s Threat Protection (Cognito 威胁保护)](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-settings-threat-protection.html) 可以根据可疑行为调整身份验证。
### 策略 1: 通过为未认证用户隐藏宝贵数据来缓解低置信度机器人威胁
许多组织更喜欢新合法用户在不因 CAPTCHA、身份验证或其他障碍而受阻的情况下访问应用程序。如果 AWS WAF 识别出低可能性机器人流量,那么一种权衡风险的方法是为未认证用户隐藏宝贵数据。例如,如果刮取器正在收集宝贵的定价数据或图像,那么您可以调整应用程序逻辑来隐藏定价或使用占位符图像。然后,您的应用程序引导用户进行身份验证以“解锁”相应数据。
合法用户登录您的站点时可以正常互动,但刮取器和其他机器人威胁无法收集宝贵数据,除非登录。图 7 中的序列图显示了当标头为 `x-amzn-waf-bot-confidence=low` 时,用户与您的应用程序的互动模式。这会增加机器人操作者的成本(从而提高缓解效力),因为他们现在必须为您的应用程序创建身份。

图 7: 序列图展示当 AWS WAF 检测到低可能性机器人活动时,应用程序隐藏宝贵数据
### 策略 2: 通过要求用户身份验证来缓解中置信度机器人威胁
AWS WAF Bot Control 规则在识别某些机器人活动信号时使用 CAPTCHA 动作。CAPTCHA 可能因其对用户参与的影响或移动应用程序的要求而不可接受。在本策略中,我们强制用户在进一步与您的应用程序互动之前进行身份验证,作为 CAPTCHA 完成的替代。对于已认证的用户,您可以使用[“step up” 身份验证](https://aws.amazon.com/blogs/security/implement-step-up-authentication-with-amazon-cognito-part-1-solution-overview/) 来需要进一步身份验证,如多因素身份验证 (MFA),然后允许他们继续。
图 8 中的序列图显示了当您的应用程序收到标头 `x-amzn-waf-bot-confidence=medium` 时,这种互动模式。这会强制用户为您的应用程序创建帐户,并在认证后提供对用户活动的洞察,这些洞察可用于进一步缓解机器人。

图 8: 序列图展示当 AWS WAF 检测到中可能性机器人活动时,应用程序要求用户身份验证
### 策略 3: 通过触发不同业务流程来缓解高置信度机器人威胁
阻塞高置信度机器人威胁是 AWS WAF Bot Control 规则的默认策略。这可能因您的组织无法容忍错过合法用户而不可接受。您可以通过为业务流程采用不同路径来平衡缓解高置信度机器人威胁。
例如,当用户提交表单、检查库存或注册新服务时,而不是自动处理请求,使用单独队列进行可疑特征的手动审核。这会增加业务的交易成本,同时合法用户仍能继续。图 9 中的序列图显示了当应用程序收到 `x-amzn-waf-bot-confidence=high` 标头时,用户提交表单采用单独路径。高置信度机器人威胁意味着打扰合法用户的可能性低,同时仍能缓解威胁。您还可以将此与策略 1(隐藏宝贵数据)和策略 2(需要身份验证)结合作为更多缓解措施。

图 9: 序列图展示当 AWS WAF 检测到高可能性机器人活动时,应用程序使用不同业务流程
### 策略 4: 根据用户流量量调整体验来缓解机器人驱动的用户
作为进一步缓解,您可以基于使用数据在应用程序中控制单个用户的动作。例如,用户可能每天只能完成一定数量的交易,基于他们是机器人的可能性。
您可以使用 AWS WAF 通过[基于速率的规则 (rate-based rule)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-type-rate-based.html) 来管理应用程序中单个用户活动,最多可达 10 分钟窗口,该规则根据您的应用程序的会话令牌聚合。这甚至适用于跨多个机器人重复使用的相同会话。基于速率的规则根据 Authorization 标头聚合以匹配 JSON Web Token (JWT)。当请求数量超过一分钟内的 10 次时,该规则插入标头 `x-amzn-waf-rate-exceeded=10`。
在应用程序端,您可以将此与 `x-amzn-waf-bot-confidence` 标头结合来调整用户体验。图 10 中的序列图显示了一个示例:对分页列表 API 的请求,通常返回 20 项,但在匹配 `x-amzn-waf-rate-exceeded` 标头且为中置信度机器人时,只返回五项。这可以限制 API 刮取机器人的影响,同时仍能吸引合法用户。有关使用基于速率的规则的更多示例,请参阅此 AWS Security [帖子](https://aws.amazon.com/blogs/security/discover-the-benefits-of-aws-waf-advanced-rate-based-rules/)。

图 10: 序列图展示当请求速率超过一分钟内的 10 次且 AWS WAF 检测到中可能性机器人活动时,应用程序返回较少项
## 结语
在本帖中,我们描述了四种基于低、中和高机器人置信度水平的策略,用于适应您的应用程序用户体验,从而缓解机器人威胁,同时确保“假阳性 (false positives)”的合法用户能够使用您的应用程序。
在应用这些策略时,您需要决定对合法用户的假阳性容忍度,以确定您的应用程序使用低、中还是高置信度来应用此逻辑,以及每个级别的 AWS WAF Bot Control 规则。这些策略依赖于身份验证作为缓解方法。因此,我们建议您将其与身份提供者的威胁保护功能或 AWS WAF Fraud Control 规则组结合。
要保持对 AWS WAF 的更新,请参阅[AWS WAF Security Blog](https://aws.amazon.com/blogs/security/tag/aws-waf/) 和[AWS Security、Identity and Compliance 的新功能](https://aws.amazon.com/about-aws/whats-new/security_identity_and_compliance/?whats-new-content.sort-by=item.additionalFields.postDateTime&whats-new-content.sort-order=desc&awsf.whats-new-products=general-products%23aws-waf)。如果您对本帖有反馈,请在评论部分提交。如果您对本帖有问题,请在[AWS WAF re:Post](https://repost.aws/tags/TAKdJ093DSSdGOQ1VVKX4EvQ/aws-waf) 上启动新线程,或联系[AWS Support](https://console.aws.amazon.com/support/home)。
## 作者简介
<!-- AI_TASK_END: AI全文翻译 -->