AWS WAF 常见问题

一般性问题

AWS WAF 是一种 Web 应用程序防火墙,允许您配置规则,根据您定义的条件允许、阻止或监视(计数) Web 请求,从而帮助保护 Web 应用程序免受攻击。这些条件包括 IP 地址、HTTP 标头、HTTP 正文、URI 字符串、SQL 注入和跨站脚本。

当底层服务收到针对您网站的请求时,会将这些请求转发至 AWS WAF,依据您的规则进行检查。一旦有请求符合您在规则中定义的条件,AWS WAF 便根据您定义的操作,要求底层服务阻止或允许相应的请求。

AWS WAF 与 Amazon CloudFront 和 Application Load Balancer (ALB)、Amazon API Gateway 和 AWS AppSync 紧密集成 – AWS 客户通常使用这些服务为其网站和应用程序交付内容。当您在 Amazon CloudFront 上使用 AWS WAF 时,将在世界各地靠近最终用户的所有 AWS 边缘站点中运行您的规则。这意味着安全保护无需以牺牲性能为代价。遭阻止的请求会在他们到达您 Web 服务器之前被阻断。当您在 Application Load Balancer、Amazon API Gateway 和 AWS AppSync 之类的区域服务中使用 AWS WAF 时,您的规则在区域中运行,并可用于保护面向互联网的资源以及内部资源。

可以,AWS WAF 与 Amazon CloudFront 集成,而后者支持 AWS 之外的自定义来源。

AWS WAF 能保护您的网站,免受 SQL 注入和跨站脚本 (XSS) 这类常见攻击技巧的侵袭。此外,您还可以创建规则来阻止特定用户代理、特定 IP 地址或包含特定请求标头的流量或限制其速率。 要了解更多示例,请参阅 AWS WAF 开发人员指南

AWS WAF Bot Control 为您提供了对应用程序的常见和普遍机器人流量的可见性和控制。借助 Bot Control,您可以轻松监控、阻止流行的机器人程序(例如爬网程序、扫描程序和爬虫程序)或实施速率限制,此外您还可以允许状态监控和搜索引擎等常见的机器人程序。您可以将 Bot Control 托管规则组连同其他 WAF 托管规则或您的自定义 WAF 规则一起使用,以保护您的应用程序。请参阅开发人员指南中的 AWS WAF Bot Control 部分

符合。要获得由您的账户发起的所有 AWS WAF API 调用的历史记录,只需在 CloudTrail 的 AWS 管理控制台中打开 AWS CloudTrail 即可。有关更多信息,请访问 AWS CloudTrail 主页或参阅 AWS WAF 开发人员指南

支持,AWS WAF 对 IPv6 的支持使其可检查来自 IPv6 和 IPv4 地址的 HTTP/S 请求。

符合,您可为新型及现有 WebACL 设置新的 IPv6 匹配条件,具体请参阅文档

符合。如适用,采样请求将显示 IPv6 地址。

符合。您可以使用适用于 IPv6 和 IPv4 流量的所有现有功能,且不会对服务的性能、可扩展性或可用性造成显著影响。

AWS WAF 可以部署在 Amazon CloudFront、Application Load Balancer (ALB)、Amazon API Gateway 和 AWS AppSync 上。部署在 Amazon CloudFront 上时,它可以成为您的内容分发网络 (CDN) 的一部分,保护您在边缘站点的资源和内容。部署在 Application Load Balancer 时,它可以保护您在 ALB 后方运行的原始 Web 服务器。部署在 Amazon API Gateway 上时,它可以保护您的 REST API。作为 AWS AppSync 的组成部分,它可帮助保护您的 GraphQL API 安全。

请参阅 AWS 区域服务表。

符合,AWS 已对其 HIPAA 合规性计划进行扩展,其中已将 AWS WAF 作为一项符合 HIPAA 要求的服务包括进来。如果您已与 AWS 签订商业合伙协议 (BAA),则可以使用 AWS WAF 来保护您的 Web 应用程序免受常见的网络攻击。有关更多信息,请参阅 HIPAA 合规性

AWS WAF 根据您创建的 Web 访问控制列表 (Web ACL) 数量、您为每个 Web ACL 添加的规则数量以及您收到的 Web 请求数量收费。无预先承诺。AWS WAF 费用是 Amazon CloudFront 定价应用程序负载均衡器(ALB)定价Amazon API Gateway 定价和/或 AWS AppSync 定价之外的额外费用。

基于速率的规则是可在 AWS WAF 中配置的规则类型,允许您指定客户端 IP 在持续更新的连续 5 分钟周期内允许的 Web 请求数量。如果一个 IP 地址违反配置的限制,系统将阻止新请求,直到请求率降至配置的阈值以下。

基于速率的规则与常规规则类似,只多了一项功能:配置基于速率的阈值。例如,如果基于速率的规则的阈值设置为 2000,该规则将阻止在过去 5 分钟的间隔内请求数量多于 2000 的所有 IP。基于速率的规则也可以包含适用于常规规则的任何其他 AWS WAF 条件。

基于速率的规则与常规 AWS WAF 规则的收费方式相同,每月每 WebACL 每条规则 1 USD

以下是客户使用基于速率的规则可以处理的一些热门使用案例:

  • 我想阻挡超出配置的阈值速率(在每个连续 5 分钟的周期内可在 Web 请求中配置)的 IP 地址或对这些 IP 地址进行计数
  • 我想知道哪些 IP 地址因超出配置的阈值速率而被阻挡
  • 我希望已被阻挡的 IP 地址在不再违反配置的阈值速率时自动从黑名单中删除
  • 我不希望基于速率的规则阻挡某些高流量源 IP 范围

符合。基于速率的规则与现有的 AWS WAF 匹配条件兼容。这样,您可以进一步细化匹配条件,将基于速率的缓解限制为网站的特定 URL 或来自特定引用站点 (或用户代理) 的流量,或者添加其他自定义匹配条件。

符合。这种全新的规则类型旨在抵御 Web 层 DDoS 攻击、暴力登录尝试和坏机器人等使用案例。

基于速率的规则支持常规 AWS WAF 规则目前提供的所有可见性功能。此外,它们还将呈现由基于速率的规则阻止的 IP 地址。

符合。示例如下:假设您要限制对网站登录页面的请求。为此,您可以将以下字符串匹配条件添加到基于速率的规则:

  • 要筛选的请求段是“URI”.
  • 匹配类型是“开头为”。
  • 一个匹配值为“/login”(这得是可以在 Web 请求的 URI 部分识别登录页面的任意值)

此外,您要指定一个速率限制,如每 5 分钟 15000 个请求。将这条基于速率的规则添加到 Web ACL,即可按 IP 地址限制对您的登录页面的请求,并且不会影响站点的其余部分。

符合。您可以使用在基于速率的规则内允许请求的独立 IP 匹配条件实现此目的。

国家/地区查找数据库的 IP 地址准确性因地区而异。根据最近的测试,我们所提供的 IP 地址与国家/地区映射的总体准确性为 99.8%。

适用于 AWS WAF 的托管规则

托管规则是一种轻松部署预配置规则的方法,可以保护您的应用程序免受常见应用程序漏洞的威胁,如 OWASP、机器人或常见漏洞和披露 (CVE) 等。适用于 AWS WAF 的 AWS 托管规则由 AWS 托管,而来自 AWS Marketplace 的托管规则由第三方安全卖家托管。

您可以从 AWS WAF 控制台或 AWS Marketplace 订购由 Marketplace 安全卖家提供的托管规则。所有订阅的托管规则都可供您添加到 AWS WAF Web ACL。

可以,您可以将托管规则和自定义 AWS WAF 规则一起使用。可以将托管规则添加到现有的 AWS WAF Web ACL,您可能已在其中添加了自己的规则。

托管规则中的规则数量不计入您的限制。但是,添加到 Web ACL 的每个托管规则都将视为 1 个规则。

您可以随时将托管规则添加到 Web ACL,或者将其从 Web ACL 中删除。您从任何 Web ACL 解除托管规则的关联后,托管规则将被禁用。

AWS WAF 允许您为托管规则配置“计数”操作,该操作可以统计与托管规则中的规则匹配的 Web 请求的数量。您可以查看经计数的 Web 请求数量,预估您启用托管规则后,被阻止的 Web 请求数量。

AWS WAF 配置

可以,您能配置 CloudFront,在请求受阻止时显示自定义的错误页面。要了解更多信息,请参阅 CloudFront 开发人员指南

经过初始设置后,添加或更改规则通常需要一分钟左右的时间即可在世界各地全面生效。

AWS WAF 提供两种不同的方式,帮助您确认您的网站受保护情况:您可以在 CloudWatch 获取每分钟的指标,同时您也可以从 AWS WAF API 或管理控制台中获取 Web 请求采样。您可以通过查阅这些信息,查阅到所有被阻止、获允许或经计数的请求,同时能看到每个请求是符合哪条规则(例如,此 Web 请求因符合 IP 地址条件而受阻止,等等)。有关更多信息,请参阅 AWS WAF 开发人员指南

AWS WAF 允许您为规则配置“计数”操作,统计符合您规则条件的 Web 请求数量。您可以查看经计数的 Web 请求数量,来预估您启用规则后,实际会被阻止或获允许的 Web 请求数量。

实时指标储存在 Amazon CloudWatch 中。Amazon CloudWatch 允许您根据需要配置事件过期的时间。Web 请求采样会储存最多 3 个小时。

符合。AWS WAF 能帮助保护应用程序,且能够检查通过 HTTP 或 HTTPS 传输的 Web 请求。

AWS WAF Fraud Control - Account Takeover Prevention

Account Takeover Prevention(ATP)是一个托管式规则组,用于监控您应用程序的登录页面流量,以检测使用受损凭证对用户账户进行的未经授权的访问。您可以使用 ATP 防止撞库攻击、暴力登录尝试和其他异常登录活动。当您的应用程序尝试登录时,ATP 会实时检查提交的用户名和密码是否已在网络上的其他地方被盗用。ATP 还可以监控不法分子的异常登录尝试,方法是将一段时间以来监控的请求相关联,帮助您检测和缓解暴力登录尝试和撞库攻击。ATP 还提供可选的 JavaScript 和 iOS/Android SDK,它们可以集成到您的应用程序中,为您提供尝试登录您应用程序的设备上的其他遥测数据,以更好地防止您的应用程序遭受机器人自动登录尝试攻击。

用户设备和您的应用程序之间的流量由您为用于前端应用程序的 AWS 服务配置的 SSL/TLS 协议保护,例如 Amazon CloudFront、Application Load Balancer、Amazon API Gateway 或 AWS AppSync。用户凭证到达 AWS WAF 后,AWS WAF 则会检查该凭证,然后立即对其进行哈希处理并丢弃它,该凭证永远不会离开 AWS 网络。您在应用程序中使用的 AWS 服务与 AWS WAF 之间的任何通信都进行了动态和静态加密。

Bot Control 让您能够了解和控制常见和流行的机器人程序流量,这些机器人程序流量可能会消耗资源、导致指标偏斜和停机并执行其他非预期活动。Bot Control 根据已知的机器人签名检查各种标头字段和请求属性,以检测并分类自动化机器人,例如抓取程序、扫描程序和爬网程序。

Account Takeover Prevention(ATP)让您可以查看和控制不法分子使用易受攻击凭证进行的异常登录尝试,帮助您防止可能导致欺诈活动的未经授权的访问。ATP 用于保护您的应用程序的登录页面。

Bot Control 和 ATP 可以独立使用,也可以一起使用。与 Bot Control 托管式规则组一样,您可以使用 ATP 的默认规则操作来阻止匹配请求,也可以使用 AWS WAF 缓解功能自定义 ATP 的行为。

在 AWS WAF 控制台上,创建新的 Web ACL,或者如果您已经在使用 AWS WAF,则修改现有的 Web ACL。您可以使用该向导来帮助您配置基本设置,例如要保护的资源以及要添加的规则。系统提示添加规则时,选择“添加托管式规则”,然后从托管规则列表中选择“Account Creation Fraud Prevention”。要配置 ATP,请输入应用程序登录页面的 URL,并指明用户名和密码表单字段在请求体中的位置。

JavaScript 和 Mobile SDK 提供尝试登录您应用程序的用户设备上的其他遥测数据,以更好地防止您的应用程序遭受机器人的自动登录尝试攻击。您不需要使用其中一个 SDK,但我们建议您这样做以获得更高一层的保护。

当 ATP 确定用户的凭证已被盗用后,它会生成一个标签来指示匹配。默认情况下,AWS WAF 会自动阻止被确定为恶意或异常的登录尝试(例如,异常级别的失败登录尝试、屡次违规者以及来自机器人的登录尝试)。您可以通过编写作用于标签的 AWS WAF 规则来更改 AWS WAF 响应匹配项的方式。

AWS WAF Fraud Control — Account Creation Fraud Prevention

Account Creation Fraud Prevention(ACFP)是一个付费托管规则组,允许您检测和缓解针对注册或注册页面的虚假账户创建攻击。您可以使用 ACFP 来防止滥用促销或注册信息、滥用忠诚度或奖励以及网络钓鱼。注册新账户时,ACFP 会验证提交的每份凭证(即用户名和密码)、使用的电子邮件域以及其他信息,例如实时输入的电话号码、地址字段,如果其中任何信息被认为是窃取的或信誉不佳,则会阻止注册尝试。此外,ACFP 还包括欺诈风险预测,无需对基于 ML 的检测模型有深入了解即可使用。ACFP 还提供推荐的 JavaScript 和 iOS/Android SDK,这些软件开发工具包可以集成到您的应用程序中,为您提供额外的用户遥测,从而更好地保护您的应用程序免受机器人自动登录尝试攻击。

账户盗用攻击应用程序的登录页面,目的是获得对现有账户的未经授权的访问权限,而账户创建欺诈则以应用程序的注册页面为目标,目的是通过这些虚假账户进行欺诈。ATP 专注于防止凭证填充和暴力攻击,在这些攻击中,攻击者会自动进行数百次登录尝试,在多个站点上测试窃取的凭证。相反,ACFP 专注于防止自动欺诈,例如滥用促销或注册信息、滥用忠诚度或奖励以及网络钓鱼。ACFP 和 ATP 可以独立使用,也可以一起使用。

在 AWS WAF 控制台上,创建新的 Web ACL,或者如果您已经在使用 AWS WAF,则修改现有的 Web ACL。您可以使用该向导来帮助您配置基本设置,例如要保护的资源以及要添加的规则。系统提示添加规则时,选择“添加托管式规则”,然后从托管规则列表中选择“Account Takeover Protection”。要配置 ACFP,请输入应用程序的账户创建和注册页面的 URL。此外,您还可以指明用户名、密码、地址和电话号码表单字段在请求正文中的位置。

可选,但强烈推荐。SDK 集成可提供额外的信息(例如浏览器版本、插件和画布数据),以提高 ACP 规则的有效性。如果未使用 SDK 集成,我们将使用 Challenge 操作来强制执行此操作。挑战操作不适用于单页应用程序(SPA)和原生移动应用程序,因此对于这些应用程序,SDK 集成是强制性的。对于其他可以承受页面刷新的应用程序,例如 HTML 页面,SDK 集成是可选的。我们支持适用于 Web 应用程序的 JS SDK,以及适用于原生移动应用程序的 Android 和 iOS SDK。

您可以通过查看控制台上的欺诈控制面板、WAF 完整日志和 CloudWatch 指标来观察 ACFP 对您的应用程序的保护效果。

控制面板:用于监控由 ACFP 和 ATP CloudWatch 指标分析的请求的集中式控制面板:ACFP 规则组的所有规则操作都将发出 CloudWatch 指标,客户可以使用这些指标来创建警报和通知。

WAF 日志记录:ACFP 分析的所有请求都将记录在 WAF 日志中,因此您可以使用现有的日志记录解决方案来查询和分析 ACFP 托管规则的日志。ACFP 将记录规则操作、标签信息和风险评分等详细信息,可用于跟踪 ACFP 的效果。