亚马逊AWS官方博客

如何利用 Amazon WAF 以低成本的方式开展 Web 应用程序安全防护工作

Amazon WAF 是一款 Web 应用程序防火墙,可帮助保护您的 Web 应用程序免受可能影响可用性、危及安全性或消耗过多资源的常见网络攻击和机器人攻击。如何以低成本的方式配置 Amazon WAF 一直是我们客户经常讨论的话题。本文将向您介绍如何使用 Amazon WAF 的不同组件,以低成本的方式开展 Web 应用程序的安全防护工作。

Amazon WAF 定价模式

Amazon WAL 没有任何预付费,而是根据您创建的每个 Web ACL 和每个规则收费。此外,根据 Web ACL 处理的 Web 请求数收费。如果您使用了智能威胁检测功能(如 Amazon WAF Bot Control、Amazon WAF Fraud Control、CAPTCHA、Challenges),还会有额外的收费。

针对 Targeted Bot Control 和 Amazon WAF Fraud Control 的 Challenge 和CAPTCHA 操作是免费的。但当这些操作与 Common Bot Control 托管规则组或自定义规则组关联时,可能会产生相关费用。由于 Challenge 和 CAPTCHA 尝试不会在 Amazon WAF 日志中显示,因此很难估算与此相关的费用。CAPTCHA 操作的费用取决于尝试次数,无论是通过 JS API 来使用还是作为规则操作;而对于 Challenge,则根据规则操作提供的 Challenge 响应次数收费。目前,Challenge JS SDK 是免费的,但可能会有所变动。

Amazon WAF 在所有 Amazon 服务区域的定价保持一致,并且按小时计算的月度费用进行了比例分配。有关定价示例和其他 AWS Marketplace 收费,请参阅 Amazon WAF 定价专栏。

本文将 Amazon WAF 的配置分为基本配置、智能威胁缓解和日志记录三个部分。

基本配置

为了高效配置 Amazon WAF,请注意 Amazon WAF 会按照规则优先级的升序从上到下评估您的规则集。估过程考虑终止和非终止规则操作,根据情况决定是否停止或继续处理规则集。

  • 允许(Allow)和阻止(Block)是终止操作,它们会停止匹配 Web 请求上的 Web ACL 后续的所有处理。
  • 计数(Count)是非终止操作,当带有计数操作的规则匹配请求时,Amazon WAF 会对请求进行计数,然后继续处理 Web ACL 规则集中的后续规则。
  • CAPTCHA Challenge – 当带有 CAPTCHA 或 Challenge 操作的规则匹配请求时,Amazon WAF 会检查 aws-waf-token 状态。如果请求具有有效的令牌,Amazon WAF 将将匹配视为计数匹配,并继续处理 Web ACL 规则集中的后续规则(非终止操作)。但是,如果发现 aws-waf-token 已过期、无效或缺失,则客户端将被要求完成 CAPTCHA 或 Challenge(终止操作)。

有关更多信息,请参阅 Web ACL 规则和规则组的评估Web ACL 中规则和规则的处理顺序CAPTCHA 和 Challenge 操作行为

已知合法流量和恶意流量

现在您已经了解了评估逻辑,可以开始构建 Amazon WAF 规则集。建议从允许(Allow)和阻止(Block)列表作为前两条规则开始。这样可以确保允许已知的合法流量通过,并阻止已知的恶意来源,无需进行其他处理。

Allow 列表中的条目示例可能是信任域内的自动化系统,例如持续集成/持续部署(CI/CD)系统、监控解决方案、存档解决方案等。Allow 规则可以包括受信任的 IP 范围、受信任的 HTTP 头(如 User-Agent)等。

图 1:Amazon WAF 允许规则语句,允许特定 IP 地址的请求

您可以根据过去的观察结果将恶意流量添加到阻止列表中。这些信息可以从其他 Web 应用程序中获取,或者在需要时保持为空,并在进行中的事件中使用。

图 2:Amazon WAF 规则集阻止来自特定国家和 IP 地址的请求

根据您所保护的 Web 应用程序的类型和用户所在的位置,您可能希望使用 Amazon 托管规则组的 IP reputation 规则对请求进行阻止,或 Challenge,或通过 Label 添加附加信息。这些规则组还可以帮助减少在规则集后面进一步处理的请求量。

流量控制

在允许或阻止规则之后使用免费的 AWS 托管规则集。这有助于在进一步处理顺序中对恶意流量进行阻止,而无需进行其他规则评估。

图 3:Amazon WAF 免费的 AWS 托管规则组

一些客户喜欢在允许/阻止列表规则或使用免费的托管规则集后添加一个总体的速率限制规则。其思想是保护您的资源免受突发请求的影响。速率限制规则是保护 Web 应用程序免受 DDoS 攻击甚至意外流量激增的有效方式。默认情况下,速率限制规则根据源 IP 聚合请求。不过,您可以基于标头、查询字符串、查询参数、Cookie、标签命名空间、HTTP 方法和 URI 路径等参数自定义聚合键(aggregation key)。

您可以使用速率限制规则来保护 Web 应用程序的不同部分,这些部分设计上消耗更多计算资源。例如,您可以基于 aws-waf-token 和 URI 创建一个规则,位于智能威胁检测规则集之前,对请求进行速率限制。这些速率限制规则可以避免在规则集后面进一步处理时产生额外的 WAF 成本。

图 4:Amazon WAF 速率限制规则,基于用户代理和 IP 地址限制登录页面的请求

根据内容类型应用 WebACL

构建适用于您的 Web 应用程序的规则集和规则。首先识别基础技术,然后从那里开始构建。例如,如果您的 Web 应用程序是用 Java 编写的,则不需要保护它免受常见的 PHP 漏洞。如果您的 Amazon CloudFront 分配仅为 Simple Storage Service(Amazon S3)分发静态对象,则可能不需要为其应用 WebACL。

智能威胁防御

与免费的 AWS 托管规则组不同,智能威胁缓解功能的定价模型有所不同,我们将向您展示如何以更具成本效益的方式使用它们。

一旦我们应用了已知良好和恶意流量的规则,并设置了流量控制机制,我们就可以开始引入其他与您的应用技术堆栈和业务价值相匹配的 AWS 托管规则组。

建议基于攻击对您业务的潜在影响来限制发送到智能威胁缓解规则的请求。例如,机器人抓取静态资源与产品列表页面相比,对您业务的影响有多大?使用范围缩小语句来减少智能威胁缓解规则对请求的检查范围。

图 5:AWS Bot Control 规则组使用“范围缩小语句”只检查 API 调用

只有 Challenge 是一个终止操作时,Amazon WAF 才会对其收费。所有通过 Challenge SDK 获取的令牌都是免费的。对于 CAPTCHA 操作,无论它是由 WAF 规则还是 JavaScript SDK 触发的,Amazon WAF 都根据用户尝试的次数收费。

使用 CAPTCHA 操作时,请确保设置合理的免疫时间,以减少分析的请求数量,并提高用户体验。对于使用“Challenge 操作”的规则,只要您已经完成了 Amazon WAF 客户端应用程序集成(JavaScript SDK 和 Mobile SDK),就应该根据“Amazon-waf-token” cookie 的存在与否来缩小规则的检查范围。从而确保该规则处理的请求来自可以处理 Challenge 机制的客户端。正如前面提到的,Challenge SDK 是免费的,Challenge 操作的费用仅适用于智能威胁检测的托管规则集之外。

有关更多信息,请参阅智能威胁缓解最佳实践

图 6:Amazon WAF 规则集用于检查 aws-waf-token cookie 并采取相应措施

Amazon WAF 日志选项

启用日志记录后,您可以获取有关 WebACL 分析的流量的详尽信息。在配置日志记录时,您可以指定要隐藏的日志字段,并根据标签和操作应用过滤器。需要注意的是,请求正文永远不会被记录

截至目前,Amazon WAF 可以将日志传送到三个不同的目标:Amazon CloudWatch Logs 日志组、Amazon S3 存储桶或 Amazon Kinesis Data Firehose

  1. Amazon CloudWatch Logs利用 CloudWatch 日志的好处是与其他 CloudWatch 服务(如 Logs Insights 和 Contributor Insights)无缝集成。记录的信息可供随时使用和查询。如果您当前没有其他日志收集产品,或者已经为此目的使用 CloudWatch,那么这是推荐的选项。
  2. Amazon Kinesis Data Firehose当您需要将日志传送到特定目的地(无论是 AWS 服务还是第三方日志收集器)时,使用 Amazon Kinesis Data Firehose 是最佳选择。请注意,根据您选择的目标(例如 Amazon OpenSearch、Amazon S3 或第三方供应商),可能会额外收取费用。如果您将数据传输到另一个 AWS 区域或通过互联网传输,可能会产生数据传输费用。在通过 Firehose 将日志传送到 Amazon S3 时,需要考虑缓冲区设置,以优化交付时间或成本。
  3. Amazon S3如果您的组织已经使用 Amazon S3 作为集中日志聚合解决方案,那么选择这个选项会很有益处。Amazon WAF 依赖于 CloudWatch Logs 将日志传送到 Amazon S3,与此相关的传输费用可以在 CloudWatch 的“Vended Logs”下找到。当您的 Amazon WAF 正在分析数十亿个请求时,使用 Amazon Kinesis Data Firehose 传送 Amazon WAF 日志会更加具有成本效益。

以下是一个比较表的示例:

Amazon WAF 日志传送选项 目标 计费明细
CloudWatch Logs 日志组 Amazon CloudWatch

·       CloudWatch 售出的日志传送(GB)

·       Contributor Insights

·       存储(归档)

Kinesis Data Firehose 流 Amazon S3

·       Kinesis GB 计费存储

·       S3 标准存储(GB/月)

·       S3 PutObject

S3 存储桶 Amazon S3

·       CloudWatch 售出的日志传送

·       S3 标准存储(GB/月)

·       S3 PutObject

当选择将日志发送到 CloudWatch Logs 或 S3 时,您有可能对数据保留进行管理。这样可以确保您的日志数据得到有效管理,并按照您的数据策略要求进行存储。

AWS Shield Advanced 注意事项

AWS Shield Advanced 提供针对大规模和复杂 DDoS 攻击的敏感检测和定制化缓解措施,实时显示攻击情况,并与 Amazon WAF 集成。订阅费用包括您附加到 Shield Advanced 保护的资源上的任何 Amazon WAF WebACL 的费用。此外,此费用仅包括标准 WAF 服务费用,不包括 WAF WebACL 上配置的智能威胁缓解规则或日志记录所产生的费用。

为了享受 Shield Advanced 费用覆盖,请确保所有受 Amazon WAF 保护的资源也添加到 Shield Advanced 保护中,这样 Amazon WAF 就不会单独收费。我们希望通过为 DDoS 提供所有推荐的服务来保护资源,以便为您提供最佳的覆盖范围和安全保障。

如欲了解 Shield Advanced 是否适合您的应用程序,请查阅文档专栏和定价详细信息。

Security Savings Bundle

如果您正在使用 AWS CloudFront 和相应的 Amazon WAF 进行检查,AWS CloudFront 提供了 Security Savings Bundle 选项,可让您在 CloudFront 费用上节省高达 30%,并为您使用 CloudFront 分发时的 Amazon WAF 获得 10% 的抵用额度。更多详细信息,请参阅 CloudFront security savings bundle

高性价比 Amazon WAF WebACL 配置步骤

  1. 使用允许和阻止规则
  2. 建立流量控制
  3. 使用 AWS 免费托管的规则组
  4. 对于付费规则组,使用范围缩小语句
  5. 限制发送到付费规则组的请求
  6. 调整和配置令牌处理
  7. 使用 Amazon WAF SDK 实现智能威胁检测
  8. 使用 Shield Advanced 进行 DDoS 保护
  9. 基于请求量进行成本优化的日志记录配置

图 7:示例规则集,先是允许/阻止规则,然后是 AWS 托管规则组

结论

本文介绍了在配置 Amazon WAF 时,为常见用例优化成本的一些最佳实践。Amazon WAF 是可定制的,因此您可以根据自己的需求和预算有效地配置 Amazon WAF 规则和规则组。此外,如果您想了解 Amazon WAF 的最新信息,请关注 Aamzon WAF Security 博客以及 AWS Security, Identity, & Compliance 的最新动态。

如果您有任何问题,请在 AWS WAF re:Post 上发帖或联系亚马逊云科技支持中心


Original URL: https://aws.amazon.com/blogs/networking-and-content-delivery/cost-effective-ways-for-securing-your-web-applications-using-aws-waf/

本篇作者

Kartik Bheemisetty

Kartik Bheemisetty 是亚马逊科技云美国中部地区的高级技术客户经理,致力于帮助客户通过亚马逊科技云服务实现业务目标。他拥有丰富的 AWS 网络和内容分发服务方面的专业知识。可以为您提供最佳实践的专业指导,为您联系领域专家,并为您提供有关优化 AWS 支出、工作负载和事件的有用建议。

Manuel Pata

Manuel Pata 是亚马逊科技云葡萄牙地区的高级技术客户经理,负责帮助企业支持客户充分利用亚马逊科技云产品和服务,并且他非常喜欢这项工作。他喜欢攻克技术挑战,并乐意为客户提供解决方案原型开发服务。

Diana Alvarado

Diana Alvarado 是亚马逊科技云的高级安全解决方案架构师。她热衷于帮助客户解决复杂的云安全难题,并且对日志分析有着深厚的兴趣。