构建您的第一个 Amazon WAF 网络 ACL 以防范不断变化的威胁

作者: Jonathan Woods, Pengfei Shao |

应用程序面临各种安全威胁,例如分布式拒绝服务 (DDoS) 攻击、SQL 注入和跨站脚本 (XSS) 等 Web 应用程序漏洞以及机器人流量。

在这篇文章中,为了帮助保护您的应用程序免受这些威胁,我们将演示如何在 Amazon WAF 中构建您的第一个网络访问控制列表 (web ACL)。Amazon WAF 是一款 Web 应用防火墙,用于监控网络请求和控制对应用程序的访问。我们将介绍如何构建 Web ACL 的初始版本,并向您展示如何对其进行改进以保护您的 Web 应用程序免受外部威胁。

您的 Amazon WAF 网络 ACL 中的初始规则

第 1 步:使用一键式 Amazon WAF 集成启用保护

为了创建保护您的应用程序免受最常见的安全威胁的初始安全态势,我们建议采取以下措施为您的应用程序提供开箱即用的保护。

  • 如果您使用 Amazon CloudFront 托管应用程序,请使用 CloudFront 一键式 Amazon WAF 集成启用保护
  • 如果您使用应用程序负载均衡器 (ALB) 托管应用程序,请使用 ALB 一键式 Amazon WAF 集成启用保护

当您启用与 CloudFront 或 ALB 的一键式 Amazon WAF 集成时,该服务会自动创建包含以下亚马逊云科技托管规则组的网络 ACL 并将其附加到资源。这些托管规则组保护您的应用程序免受最常见的 Web 威胁,它们适用于大多数 Web 应用程序。使用亚马逊云科技托管规则组可以节省您使用 Amazon WAF 实施保护的时间,因为亚马逊云科技会自动更新托管规则组,并在出现新的漏洞和威胁时提供新版本的规则组。

  • Amazon IP 信誉列表管理规则组
    Amazon IP 信誉列表规则组包含基于亚马逊云科技内部威胁情报的规则。这些规则检查与机器人或其他威胁相关的 IP 地址。这有助于缓解机器人流量,降低恶意行为者发现漏洞应用程序的风险。
  • 核心规则集 (CRS) 托管规则组
    CRS 规则组包含通常适用于 Web 应用程序的规则。这可以防止各种漏洞被利用,包括 OWASP 出版物(例如 OWASP Top 10)中描述的一些高风险和常见的漏洞。
  • 已知的错误输入管理规则组
    已知的错误输入管理规则组包含用于阻止已知无效且与漏洞利用或发现相关的请求模式的规则。这有助于降低恶意行为者发现有漏洞的应用程序的风险。

第 2 步:添加其他常用的 Amazon WAF 规则

我们还建议您添加以下 Amazon WAF 规则,这些规则通常用于大多数 Web 应用程序,这些应用程序需要根据您的要求进行配置。如果您有可信来源,则添加 IP 允许列表以允许来自可信来源的流量,从而减少误报。您可以添加 IP 屏蔽列表来阻止您在一段时间内发现的已知恶意流量,并根据应用程序的预期流量模式添加基于速率的规则,以防请求泛滥攻击。

  • IP 允许列表规则(如果适用)
    此规则提供了一种让已知正常流量通过的方法。该规则通常包括来自数据中心和办公室的可信 IP 范围。您可以创建 IP 集以包含可信 IP 范围,然后创建 IP 集匹配规则并将规则操作设置为"允许"以允许来自这些 IP 范围的请求。
  • IP 屏蔽列表规则
    此规则提供了一种无需进一步处理即可阻止已知恶意来源的方法。该规则通常包括表示来自恶意来源的流量的 IP 范围。您可以创建包含 IP 范围的 IP 集,然后创建 IP 集匹配规则,并将规则操作设置为"阻止"以阻止来自这些 IP 范围的请求。您首先使用一个空的 IP 集,然后更新 IP 集以添加一段时间内识别出的恶意来源。
  • 基于速率的一揽子规则
    基于速率的规则对传入的请求进行计数,并在超过定义的速率限制阈值时限制请求。此规则可保护您的资源免受请求突然激增的影响。您可以使用速率限制阈值和评估窗口配置基于速率的规则,定义该阈值和评估窗口以根据源 IP 地址聚合请求,并将规则操作设置为"阻止"。要了解如何确定基于费率的规则阈值和创建基于费率的规则的优秀实践,请参阅有关三个最重要的 Amazon WAF 费率规则的文章。

第 3 步:启用 Amazon WAF 日志

在 Web ACL 中配置规则后,使用默认的 Web ACL 流量概览仪表板,您可以快速了解 Web ACL 评估的流量摘要。

我们还建议您启用 Amazon WAF 日志以获取有关流量的详细信息。这种可见性对于威胁情报、强化规则、排除误报和应对事件非常有用。要了解如何分析 Amazon WAF 日志,请参阅文章"分析 Amazon CloudWatch Logs 中的 Amazon WAF 日志"和"如何使用 Amazon Athena 查询来分析 Amazon WAF 日志"。

Amazon WAF 规则顺序和规则操作

在我们从 Web ACL 中的这些初始规则演变之前,您必须了解规则顺序和规则操作的概念。

  • 规则评估顺序:Amazon WAF 按顺序评估最低数字优先级设置中的规则,直到找到终止评估的匹配项为止。如果没有任何匹配规则终止评估,则应用 Web ACL 默认操作。规则顺序对灵活性和成本产生了重大影响。您应该在通用规则之前放置更具体的规则,以确保准确的匹配和执行。为了提高成本效益,您还应考虑在智能威胁缓解功能之前放置免费的亚马逊云科技托管规则组。这是因为当请求与终止操作匹配规则时,Amazon WAF 会停止处理请求,从而避免了智能威胁缓解规则组评估请求时与 Amazon WAF 定价相关的额外成本。
  • 终止操作和非终止操作:规则操作指示 Amazon WAF 在网络请求符合规则中定义的条件时如何处理该请求。
    Amazon WAF 支持五种不同的规则操作:"允许"和"阻止"是终止操作,这会停止对匹配的 Web 请求上的 Web ACL 的所有其他处理。计数是一种非终止操作,这意味着,匹配请求后,Amazon WAF 将继续处理以下规则。计数操作通常用于使用 Amazon WAF 指标监控与规则匹配的请求,或者用于应用 Amazon WAF 标签并在稍后的 Web ACL 评估中进行评估。验证码和挑战是非终止或终止操作,具体取决于请求是否具有有效的 Amazon WAF 代币。

仔细考虑您的应用程序

尽管前面提到的初始规则为 Web 应用程序安全提供了良好的起点,但必须根据您的应用程序或公司的需求微调 Amazon WAF 规则。每个应用程序都有其独特的特征、功能和潜在的攻击载体。考虑到这些因素微调 Amazon WAF 规则,可以保护您的 Web 应用程序,同时最大限度地减少对合法流量和用户体验的影响。

在以下三种情况下,我们会观察您的 Web 应用程序可能面临的威胁,以了解您的 Web ACL 可能是什么样子。

场景 1:DDoS 防护

想象一下,您开发了一个基于 Web 的电子商务平台,允许客户浏览产品、将商品添加到购物车并完成购买。过去,您的应用程序曾遇到过请求泛滥的情况,这会导致响应时间缩短。核心需求围绕着保护您的应用程序免受恶意攻击者的侵害,以及限制请求泛滥期间发送到后端的请求数量,尤其是对具有"/search"等 URI 的请求的更严格限制,处理这些请求的计算成本很高。在这种情况下,您的客户仅位于美国。

您采用第一部分中建议的初始规则,并通过优化的优先级为 Web ACL 添加以下规则:

  • 将 Amazon IP 信誉列表规则组中 AWSManagedIPDoslist 规则的规则操作更新为封锁:该规则 AWSManagedIPDoslist 检查被确定为积极参与 DDoS 活动的 IP 地址。默认情况下,规则操作为"计数"以降低误报的风险。
    在查看了规则 awsManagediPdosList 的 Amazon WAF 指标后,您会发现该规则的 CountedRequests 指标是最低的,并且您确信该规则不会导致误报。因此,您可以将规则操作改写为"阻止"。
  • 添加地理匹配规则以阻止美国以外的流量:此地理匹配规则根据请求的原产国阻止请求。您可以创建此规则来检查非来自美国的请求,并将该规则操作设置为"阻止"。
  • 在特定 URI 路径上添加基于速率的规则:此规则使用更严格的速率限制保护特定的 URI 路径,例如"/search"。您可以创建基于速率的规则,其阈值低于初始规则中基于费率的一揽子规则,还可以使用匹配"/search"的 URI 路径来限制检查范围。

此外,我们建议使用 CloudFront 来托管您的应用程序,以提高抵御 DDoS 攻击的弹性。CloudFront 仅接受格式正确的连接,这有助于防止常见的 DDoS 攻击,例如 SYN 洪水和 UDP 反射攻击。与 ALB 等区域资源相比,CloudFront 允许每个网络 ACL 每秒最大请求数的默认 Amazon WAF 配额要高得多。有关更多指导,请参阅亚马逊云科技 DDoS 弹性优秀实践。

实施这些规则后,您的 Web ACL 如下所示:

图 1:DDoS 保护场景的示例规则

图 1:DDoS 保护场景的示例规则

场景 2:Web 应用程序漏洞防护

想象一下,您开发了一个基于 Web 的人力资源管理系统,该系统使用 SQL 数据库存储和管理员工记录、工资信息和其他敏感数据。在过去的几个月中,通过分析应用程序日志,您的安全团队发现了大量请求的 URI 和请求正文与 XSS 和 SQL 注入攻击模式相匹配。您必须实施强大的安全措施来保护应用程序及其底层数据库。此外,您还要确保客户登录页面的强大安全措施,以及您访问的管理门户的安全。

您采用第一部分中建议的初始规则,并通过优化的优先级为 Web ACL 添加以下规则。请注意,初始规则中的 CRS 托管规则组包含阻止与 XSS 模式匹配的请求的规则,因此您无需添加新规则来防范这种攻击。

  • 添加 SQL 数据库管理规则组:SQL 数据库规则组包含用于阻止与 SQL 数据库利用(例如 SQL 注入攻击)相关的请求模式的规则。添加此规则组是为了防止远程注入未经授权的查询。
  • 添加管理员保护托管规则组:管理员保护规则组包含允许您阻止外部访问暴露的管理页面的规则。添加此规则组是为了降低恶意行为者获得应用程序管理访问权限的风险,还可以使用与您的管理门户相匹配的 URI 路径来限制检查范围。
  • 为登录 URI 的请求正文添加大小约束规则:您可以使用大小约束语句创建此规则,以限制请求正文的大小。您可以添加此规则作为防御恶意攻击者的注入攻击的另一层保护。
  • 为登录 URI 添加基于速率的规则:根据应用程序的流量模式和要求,您可以确定更严格的速率限制规则可以防止暴力攻击。您可以创建此基于费率的规则,其阈值低于基于费率的一揽子规则和检查范围,并使用与登录门户匹配的 URI 路径,并将规则操作设置为 CAPTCHA。
    当屏蔽操作阻止过多的合法请求时,通常使用验证码,但让所有流量通过会导致大量不想要的请求。您将规则操作设置为 CAPTCHA,以最大限度地减少对合法用户的潜在影响,同时减少对登录 URI 的大量请求。

实施这些规则后,您的 Web ACL 如下所示:

图 2:Web 应用程序漏洞保护场景的示例规则

图 2:Web 应用程序漏洞保护场景的示例规则

场景 3:机器人缓解

您正在管理一个在线旅游网站,客户使用该网站搜索和预订航班、酒店和其他服务。您最近发现,尽管该网站的流量已大大增加,但预订量并未增加。此外,您还注意到大量尝试登录该网站以及在欺诈活动中创建和使用的虚假帐户。您怀疑该网站正在经历恶意机器人活动,并希望了解机器人流量并缓解这种情况。

您采用第一部分中建议的初始规则,首先添加以下免费或更便宜的规则作为起点,以减少机器人流量。

  • 添加匿名 IP 列表规则组,规则操作设置为计数:匿名 IP 列表规则组识别来自 VPN、代理、Tor 节点和托管提供商的请求。限制来自这些 IP 地址的请求有助于减少机器人流量。您可以添加此规则组并将规则操作设置为 Count,因为这些请求也可以由您的合法用户发送。此外,您可以将操作设置为 Count,而不是阻止它们,这样您就可以标记这些请求并在下一步对其进行速率限制。
  • 为匿名 IP 列表规则组标识的请求添加基于速率的规则:此规则将速率限制应用于隐藏其身份且由前述规则标识的请求。您可以创建基于费率的规则,其阈值低于初始规则中基于费率的一揽子规则,还可以通过匹配标签命名空间"awswaf:managed:aws:anonymous-ip-list:"来限制检查范围。有关更多详细信息,请参阅如何自定义亚马逊云科技托管规则组行为的文章。
  • 为登录和注册端点添加基于速率的规则:该规则通过更严格的每个源 IP 的速率限制来保护登录和注册端点。您可以创建基于速率的规则,其阈值低于初始规则中基于费率的一揽子规则,并使用与登录和注册端点匹配的 URI 路径来限制检查范围。
  • 为敏感资源添加具有通用检查级别的 Amazon WAF 机器人控制规则组:具有通用级别保护的 Bot Control 托管规则组通过根据已知机器人模式检查请求详情、执行反向 DNS 查询和其他系统验证来识别常见爬虫程序。Bot Control 是一项高级功能和付费托管规则组,因此您必须控制成本。您可以添加此规则组并使用特定 URI 路径或敏感 API 来限制检查范围,并将图像和 CSS 文件等静态内容排除在范围之外,您可能不介意机器人访问这些内容。有关更多详情,请参阅微调和优化 Amazon WAF 机器人控制缓解能力一文。

在您的 Amazon WAF 网页 ACL 中添加上述规则后,使用网络 ACL 流量概览控制面板,您会注意到大量机器人流量现已被阻止。但是,您还会注意到以下几点:

  • 从您的应用程序指标来看,允许的流量仍高于预期水平,并且您网站的预订量仍低于预期水平。
  • 尽管后端的登录尝试和注册次数已大大减少,但仍高于预期。
  • 查看 Amazon WAF 日志,有许多允许的请求包含与普通客户端浏览器相同的请求标头,但与合法用户相比表现出异常行为。

你怀疑这些请求来自恶意机器人。您想启用高级机器人缓解解决方案;因此,您可以按顺序添加/更新以下规则:

  • 将 Amazon WAF Bot Control 规则组更新为敏感资源的定向检查级别:具有针对性级别保护的机器人控制规则组可检测无法自我识别的高级爬虫程序,并应用缓解措施,例如速率限制和质询或验证码响应,以及常见级别的保护。您可以使用以下设置更新此规则组:
    • 将 Bot Control 检查级别设置为"目标"。
    • 启用机器学习 (ML) 以检测和缓解分布式、协调的机器人活动。这根据一组请求参与协调攻击的可信度提供了几条规则。
    • 将规则 tgt_ml_coordinedActivityMedium 的规则操作设置为 Challenge,将规则 tgt_ml_coordinedActivityHigh 的规则操作设置为 Block。
  • 为登录端点添加 Amazon WAF 欺诈控制账户防盗规则组:防欺诈控制账户接管规则组为您的登录终端节点提供保护,使其免受证书被盗、凭据填充攻击、暴力登录尝试和其他异常登录活动的侵害。您可以添加此规则组,还可以使用与登录端点匹配的 URI 路径来限制检查范围。
  • 为注册终端节点添加 Amazon WAF 欺诈控制账户创建防欺诈规则组:欺诈控制账户创建防欺诈管理规则组可防止在您的网站上创建欺诈账户。您可以添加此规则组,还可以使用与注册端点匹配的 URI 路径来限制检查范围。

此外,您可以在应用程序中实施 Amazon WAF 应用集成软件开发工具包,因为这样可以最有效地使用机器人控制和欺诈控制规则组。质询脚本必须在 Bot Control 和 Fraud Control 规则组之前运行,才能从该脚本获得的令牌中受益,而使用应用程序集成 SDK 时,该脚本会自动运行。

实施这些规则后,您的 Web ACL 如下所示:

图 3:机器人缓解场景的示例规则

图 3:机器人缓解场景的示例规则

结论

这篇文章提供了构建 Amazon WAF 网络 ACL 以保护您的网络应用程序免受 DDoS 攻击、Web 应用程序漏洞和恶意机器人等威胁的指南。首先,您需要在 Web ACL 中添加初始规则,然后更新和添加针对应用程序面临的威胁和应用程序的特定需求量身定制的更多自定义规则,同时牢记规则优先级的重要性。遵循本文中的指导方针可以有效保护您的 Web 应用程序免受其面临的威胁,最大限度地减少对合法流量的影响,并提高成本效益。

如果你对这篇文章有反馈,请在"评论"部分提交。如果你对这篇文章有疑问,可以在 Amazon WAF re:POST 上发一个新话题或联系 Amazon Support。

作者简介

Pengfei Shao

鹏飞是总部位于斯德哥尔摩的亚马逊云科技的高级技术客户经理。他专注于为客户提供技术指导,并积极帮助他们保持其亚马逊云科技环境的正常运行。工作之余,他喜欢滑雪、园艺和与家人共度时光。

乔纳森伍兹

Jonathan Woods

乔纳森是位于纳什维尔的亚马逊云科技的解决方案架构师,目前与中小型企业客户合作。他热衷于以相关的方式向企业传播亚马逊云科技技术,使客户能够轻松创新。工作之余,他努力抚养三个孩子。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。