我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
探索 亚马逊云科技 WAF 基于费率的高级规则的好处
2017 年,亚马逊云科技 宣布发布 A
尽管基于速率的规则可用于检测和缓解各种不良行为者,但威胁已演变为绕过请求速率限制规则。例如,一种绕过技术是通过将请求分散到数千个唯一的 IP 地址来发送大量请求。
2023 年 5 月,AW
在这篇博客文章中,您将详细了解这些新的 亚马逊云科技 WAF 功能增强以及如何使用替代请求属性来创建更强大、更精细的规则集。此外,你还将学习如何组合密钥来创建复合聚合密钥,以唯一地识别特定的元素组合,从而改善速率跟踪。
入门
配置基于速率的高级规则与配置简单的基于速率的规则类似。该过程首先创建基于速率的规则类型的新自定义规则,输入速率限制值,选择自定义密钥,从请求聚合键下拉菜单中选择密钥,然后通过选择添加请求聚 合密钥来 添加 其他复合密钥, 如图 1 所示。
图 1:使用两个聚合密钥创建基于速率的高级规则
对于现有规则,您可以通过编辑这些基于费率的规则来更新这些规则以使用新功能。例如,您可以添加要与源 IP 地址聚合的标头,如图 2 所示。请注意,之前创建的规则不会被修改。
图 2:向现有的基于速率的规则添加第二个密钥
您仍然可以设置相同的规则操作,例如屏蔽、计数、验证码或质疑。或者,您可以继续应用 scope-down 语句来限制规则操作。例如,您可以将范围限制为特定的应用程序路径或具有指定标头的请求。您可以缩小检查标准的范围,以便仅将某些请求计入速率限制,并使用某些密钥将这些请求聚合在一起。一种方法是仅对在 URI 开头带有 /ap i 的请求进行计数,然后根据其 sessionID cookie 值对它们进行汇总。
目标用例
现在您已经熟悉了基于速率的高级规则的基础知识,让我们使用以下用例来探索它们如何改善您的安全状况:
- 增强的应用程序(第 7 层)DDoS 保护
- 提高了 API 安全性
- 丰富的请求限制
用例 1:增强第 7 层 DDoS 缓解能力
您可能会发现的第一个有益用例是增强第 7 层 DDoS 缓解能力。HTTP 请求泛洪是 DDoS 攻击的最常见载体。这种攻击类型旨在通过耗尽可用资源来运行应用程序来影响应用程序的可用性。
在 亚马逊云科技 WAF 规则的这些增强功能发布之前,规则受到限制,即根据请求源的 IP 地址汇总请求,或者配置为在 HTTP 标头(如 X-Forwarded-For)中使用转发的 IP 地址。 现在,您可以创建更强大的基于速率的规则,通过跟踪基于不同密钥或密钥组合的请求来帮助保护您的 Web 应用程序免受 DDoS 攻击。让我们来看一些例子。
为了帮助检测无处不在的机器人,例如爬虫、扫描器和爬虫,或者分布在许多唯一 IP 地址上的常见机器人,规则可以查找静态请求数据,例如 自定义标头 ,例如 User -Agent。
键 1:自定义标题(用户代理)
为了帮助您决定使用哪种唯一密钥,您可以分析 亚马逊云科技 WAF 日志。有关更多信息,请查看博客文章在
要在 NAT 网关后面唯一标识用户,除了 IP 地址 外,您还可以使用 cookie 。在聚合密钥功能出现之前,很难识别通过单个 IP 地址进行连接的用户。现在,您可以使用 会话 cookie 按会话 标识符和 IP 地址汇总请求。
请注意,为了缓解第 7 层 DDoS,可以规避在 cookie 中按会话 ID 进行跟踪,因为机器人可能会发送随机值或根本不发送任何 cookie。最好保留基于 IP 的全面速率限制规则,以屏蔽达到一定高速率的违规 IP 地址,无论其请求属性如何。在这种情况下,密钥将如下所示:
- 关键 1:会话 cookie
- 密钥 2:IP 地址
在使用
在屏蔽模式下使用此群组列表时,您可能需要谨慎行事,因为有可能屏蔽合法用户。为了缓解这种情况,请在计数模式下使用该列表并创建基于速率的高级规则,以聚合所有带有标签命名空间 awswaf: managed: aws: amazon-ip-list: 的请求,将验证码作为规则操作 。 这使您可以在不影响安全性的情况下减少误报。将验证码应用为规则的操作可减少向所有用户提供验证码的次数,而是仅在请求速率超过定义的限制时才应用验证码。这条规则的关键是:
- 标签(AMR IP 信誉列表)。
用例 2:API 安全性
在第二个用例中,您将学习如何使用基于速率的高级规则来提高 API 的安全性。使用速率限制规则保护 API 有助于确保在短时间内不会过于频繁地发送请求。降低滥用 API 的风险有助于确保仅处理合法请求,不会因为请求过载而被拒绝。
现在,您可以创建基于速率的高级规则,根据两个聚合密钥跟踪 API 请求。例如,区分 GET、 POST 和其他请求的 HTTP 方法 结合使用自定义标头(例如用于匹配 JSON Web 令牌 (JWT) 的 授权 )。JWT 不由 亚马逊云科技 WAF 解密,亚马逊云科技 WAF 仅聚合使用相同令牌的请求。这有助于确保代币不会被恶意使用或绕过速率限制规则。这种配置的另一个好处是,没有授权标头的请求会被聚合到一起以达到速率限制阈值。这个用例的关键是:
- 关键 1:HTTP 方法
- 密钥 2:自定义标题(授权)
此外,您可以配置规则,在达到请求限制 时阻止和添加
用例 3:实现请求限制
在许多情况下都应考虑节流。例如,如果您想通过为所有用户提供公平使用来维持服务 API 的性能,则可以根据 API 的类型或用途(例如可变请求或不可变请求)设置不同的速率限制。为实现此目的,您可以使用 IP 地址等聚合密钥创建两条基于速率的高级规则,再结合用于指示请求类型的可 变 或 不可 变 的 HTTP 请求参数。每条规则都有自己的 HTTP 请求参数,您可以为速率限制设置不同的最大值。这个用例的关键是:
- 密钥 1:HTTP 请求参数
- 密钥 2:IP 地址
限制可能有用的另一个示例是多租户应用程序,在该应用程序中,您希望跟踪每个租户的用户发出的请求。假设你有一个免费套餐,但也有付费订阅模式,你希望允许更高的请求率。对于此用例,建议使用两个不同的 URI 路径来验证两个租户是否保持分离。此外,建议仍然使用自定义标头或查询字符串参数来区分两个租户,例如租户 ID 标头或包含每个租户 唯一标识符的参数。要使用基于速率的高级规则来实现这种类型的限制,您可以使用 IP 地址和作为聚合键的自定义标头来创建两条规则。每条规则可以有自己的速率限制的最大值,也可以有匹配每个 URI 路径请求的下限范围语句。此用例的密钥和范围下限语句是:
- 键 1:自定义标题(租户 ID)
- 密钥 2:IP 地址
- 范围缩小语句(URI 路径)
作为第三个示例,您可以根据可以处理的请求总数对 Web 应用程序进行速率限制。对于此用例,您可以使用新的 “将 全部 计为聚合 ” 选项。该选项对与规则的范围下限语句相匹配的请求进行计数和速率限制,这是此类聚合所必需的。一种选择是缩小范围并检查 URI 路径以定位特定功能,例如 /history- search 页面。 当您需要控制发送到特定域的请求数量时,可以选择将单个标头缩小到特定主机,为.example.com 创建一条规则,为 b .example.com 创建另一条规则。
- 请求聚合:全部计数
- 范围缩小语句(URI 路径 | 单标题)
对于这些示例,当请求超过限制时,您可以使用自定义响应进行阻止。例如,通过返回相同的 HTTP 错误代码和标头,但添加自定义响应正文并显示 “ 您已达到允许的最大请求数” 之类的消息。
登录
亚马逊云科技 WAF 日志现在包含有关用于跟踪请求速率的请求密钥和匹配的请求密钥值的更多信息。
除了现有的 IP 值或 Forwarded_IP 值外,您还可以看到更新的
图 3:基于速率的高级规则的示例日志输出显示了更新的 LimitKey 和 customValues 字段
如第一个用例所述,要获得有关 Web ACL 分析的流量的更多详细信息,
例如,您可以使用以下查询直接从 亚马逊云科技 WAF 控制台获取与基于速率的规则相匹配的请求信息,包括更新的密钥和值。
图 4 显示了 CloudWatch Log Insights 查询和日志输出,包括自定义密钥、名称和值字段。
图 4:CloudWatch 日志见解查询和日志输出
定价
使用高级费率基准规则不会产生额外费用;使用此功能时,将适用标准 亚马逊云科技 WAF 定价。有关 亚马逊云科技 WAF 的定价信息,请参阅
结论
在这篇博客文章中,您了解了 亚马逊云科技 WAF 对现有速率规则的改进,这些规则现在除了 IP 地址之外还支持请求参数。此外,这些增强功能允许您基于最多五个请求参数创建复合密钥。这项新功能使您可以更粗略地聚合请求(例如 所有带有 IP 信誉标签的请求 ), 也可以更精细地聚合请求(例如 对特定会话 ID 而不是其 IP 地址的 聚合请求 )。
有关包含 JSON 规则配置的更多规则示例,请访问 亚马逊云科技 WAF 开发者 指南中的
如果您对这篇文章有反馈,请在下面的
评论
部分提交评论。如果您对这篇文章有疑问,
想了解更多 亚马逊云科技 安全新闻?在
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。