亚马逊AWS官方博客

使用全新的 AWS WAF Bot Control 减少您网站上不需要的流量

根据 AWS Shield 威胁研究团队所做的研究,在进入典型 Web 应用程序的流量中,高达 51% 的流量来源于机器(也称为机器人程序)上运行的脚本。各种各样的机器人程序(有些是您想要的,而有些是您不需要的)正在冲击您的终端节点。

您想要的机器人程序正在锁定您的网站以进行索引,并使您的客户能够发现这些网站;而您不需要的机器人程序正在监控您网站的可用性或性能。然而,大部分的机器人程序流量是由您不需要的机器人程序生成的:脚本检测漏洞或者在未经您同意的情况下将您的内容复制到其他地方。除了安全风险外,为这些流量提供服务还会给您的基础设施带来不必要的压力和成本。

保护您的网站免受这些不必要流量的影响,既费时又容易出错。管理一组规则是非常复杂的,很有可能会拦截您需要的流量或者允许应该被拦截的流量入站。

介绍 AWS WAF Bot Control
今天,我们将给您介绍 AWS WAF Bot Control,它可以用来识别常见的机器人程序流量、提高对常见机器人流量的可见性并采取措施。AWS WAF Bot Control 已集成到 AWS Web Application Firewall 中,针对大型的企业用例,可以使用 AWS Firewall Manager 进行集中管理。

Bot Control 会分析请求元数据(例如,TLS 握手、HTTP 属性和 IP 地址),以识别机器人程序的来源和目的。它对机器人程序进行分类,如刮板、SEO、爬虫或网站监控器。

一旦 Bot Control 识别出机器人程序,您就可以拦截来自不需要的机器人程序的流量。您只需将默认操作作为您 WAF 配置的一部分以拦截不需要的机器人程序流量,或者您可以自定义配置。例如,您可以使用自定义响应功能,根据机器人程序标识来返回自定义响应,或者通过插入新的标题来标记请求。与 AWS WAF 集成后,您可以可视化进入您应用程序的机器人程序流量的范围,并通过 WAF 规则控制这些流量。

Bot Control 采用了我们如今添加到 AWS WAF 托管规则组中的两个新功能:标签和 scope down 语句。AWS WAF 标签是作为匹配规则语句的结果添加到请求中的元数据。这些标签可以在之后的规则语句中使用。您可以将 WAF 标签看作一个变量,在其中临时存储一个规则操作的结果,并在后续的规则中使用它。此外,AWS WAF 标签会发出 CloudWatch 指标并显示在 AWS WAF 日志中。AWS WAF 标签对于通过 Count 操作评估多个语句,然后根据标签采取措施,或者在多个规则间重用逻辑等案例都很有用。AWS WAF Bot Control 使用标签来发出各种与机器人程序相关的信号,让您可以根据自己的需要自定义行为。

某些应用程序资源不太可能受到机器人程序流量的影响,或者也不太需要受保护。今天,我们还将介绍一下 scope down 语句的概念。scope down 语句让您可以定义在哪些条件下执行托管规则组。这类似于如今在 AWS WAF为基于速率的规则提供的 scope down 功能。除其他用例外,您可能希望引入一个 ScopeDownStatement,以降低付费托管规则组的成本,将评估锁定在应用程序的特定部分,以避免误报,或者避免对特定路径造成延迟影响。

将托管规则组、标签和 scope down 语句相结合,您可以自定义如何处理源自机器人程序的请求。

AWS WAF Bot Control 的优势
使用 AWS WAF Bot Control,您可以获得三个关键优势:

  1. Bot Control 让您可以免费查看机器人程序的流量活动。当您使用 AWS WAF 时,您可以获得预先构建的控制面板,这些控制面板会根据采样数据显示哪些应用程序具有较高级别的机器人程序活动。
  2. Bot Control 通过减少由刮板、扫描器和爬虫生成的流量来帮助您降低运营和基础设施成本。Bot Control 在边缘拦截不需要的机器人程序流量,以免其增加您的应用程序处理成本或对应用程序性能造成负面影响。
  3. Bot Control 易于部署。只需将 AWS 托管规则组添加到 Web 访问控制列表 (Web ACL),您就可以将机器人程序防护添加到 Amazon CloudFrontApplication Load BalancerAmazon API GatewayAWS AppSync 中。

让我们来看一下 AWS WAF Bot Control 的工作原理
添加 AWS WAF Bot Control 的方法与添加 AWS WAF 托管规则相同; 您只需点击几下即可开始。我们来看一个示例,并连接到 AWS WAF 控制台

AWS WAF 控制台

在屏幕的左侧,您会看到一个新的 Bot Control 菜单,该菜单提供了您 Web ACL 上的机器人程序相关流量的概述,以及哪些 Web ACL 已启用 Bot Control 的摘要。作为 AWS WAF 免费套餐的一部分,所有 AWS 客户都可以获得这些机器人程序活动指标:机器人程序请求和非机器人程序请求的比例、被拦截的机器人程序请求数量和机器人程序的类别。

Bot Control - 免费控制面板

在本次演练中,我决定来保护我的一个终端节点。我在左侧菜单中选择 Web ACL,然后单击创建 Web ACL

我输入 Web ACL 的详细信息,然后单击页面底部的下一步

Web ACL 详细信息

添加规则和规则组下,我打开添加规则,然后选择添加托管规则组

Web ACL 添加规则

添加托管规则组界面中,我展开 AWS 托管规则组,然后打开 Bot Control,将其添加到 Web ACL。在页面底部(未在下方显示),我单击添加规则

Web ACL 添加 Bot Control

最后,我为不匹配规则的请求选择默认操作,然后单击下一步Web ACL 默认操作 我在随后的界面中保留所有的默认值,单击下一步三次,最后单击创建 Web ACL

Bot Control 类似于您已经使用过的 Web ACL:当选择一组特定的规则时,我可以看到匹配请求的数量和一组示例。

Web ACL 控制面板

当我选择顶部的 Bot Control 选项卡后,我就可以访问特定于机器人程序的数据。

Bot Control 付费控制面板

定价和可用性
AWS WAF Bot Control 目前已在提供 AWS WAF 的所有 AWS 区域推出。与其他 AWS WAF 规则一样, AWS WAF Bot Control 可以过滤进入您Amazon CloudFront 分发、Application Load BalancerAmazon API GatewayAWS AppSync 的流量。

Bot Control 是一个付费的 AWS 托管规则,可以添加到您的 Web ACL 中。每次将 Bot Control 添加到您的 Web ACL 中,您都需要支付每月 10 USD 的费用(按小时比例计算)。此外,Bot Control 每处理 100 万个请求将向您收取 1 USD 的费用。Bot Control 的费用是在 AWS WAF 费用的基础之上额外收取。

Bot Control 免费使用套餐包括 每月免费处理的 1000 万个请求。

了解有关AWS WAF Bot Control 的更多信息,并马上将其添加到您的 AWS WAF