如何在 亚马逊云科技 WAF 中使用精细的地理匹配规则

作者: 莫希特·迈索尔 | 2023

2022 年 11 月,亚马逊云科技 在 AW S WAF 中引入了对精细地理(地理)匹配条件的支持。 这篇博文演示了如何使用这项新功能来定制您的 亚马逊云科技 WAF 实施并改善受保护应用程序的安全状况。

亚马逊云科技 WAF 在应用层提供对入站流量的在线检查。您可以使用 亚马逊云科技 WAF 来检测和筛选可能影响应用程序可用性或安全性或消耗过多资源的常见网络漏洞和自动程序。根据 网络访问控制列表 (Web ACL) 规则 检查入站流量 。网络 ACL 规则由规则语句组成,这些语句指示 亚马逊云科技 WAF 如何检查网络请求。

亚马逊云科技 WAF 地理匹配规则声明 功能允许您根据查看者的位置限制应用程序的访问。此功能对于限制在特定地理区域之外交付应用程序的许可和法律法规等用例至关重要。

亚马逊云科技 最近发布了一项新功能,您可以使用该功能根据国际标准化组织 (ISO) 3166 国家和地区代码来构建精确的地理规则。在此版本中,您现在可以管理 ISO 3166 区域级别的访问权限。此功能适用于提供 亚马逊云科技 WAF 的 亚马逊云科技 区域以及所有 亚马逊云科技 WAF 支持的服务。在这篇文章中,您将学习如何在 亚马逊 CloudFront 和 E lastic Load Balancing (ELB) 源 类型中使用这项新功能。

概念摘要

在我们讨论用例和设置说明之前,请确保您熟悉以下 亚马逊云科技 服务和概念:

  • Amazon Clou dFront: CloudFront 是一项网络服务,它为企业和网络应用程序开发人员提供了一种经济实惠的方式,以低延迟和高数据传输速度分发内容。
  • Amazon Simple Storage Service ( Amazon S3): Amazon S3 是一项对象存储服务,旨在从任何地方存储和检索大量数据。
  • 应用程序负载均衡器: 应用程序负载均衡器 在请求级别(第 7 层) 运行,根据请求内容将流量路由到目标( 亚马逊弹性计算云(Amazon EC2) 实例、IP 地址和 Lambda 函数。
  • 亚马逊云科技 WAF 标签: 标签 包含元数据,当规则匹配时,这些元数据可以添加到 Web 请求中。标签可以更改托管规则的行为或默认操作。
  • ISO(国际标准化组织)3166 代码: ISO 代码 是国际公认的代码,用于为每个国家和大多数附属地区指定两个或三个字母的组合。每段代码由两部分组成,用连字符分隔。例如,在代码 AU-QLD 中,AU 是澳大利亚的 ISO 3166 alpha-2 代码,而昆士兰州是州或领地(在本例中为昆士兰)的分区代码。

精细地理标签的工作原理

以前,亚马逊云科技 WAF 中的地理匹配语句用于根据 网络请求的来源 国允许或阻止对应用程序的 访问。 通过更新的地理匹配规则声明,您可以在区域层面控制访问权限。

在带有地理匹配语句的网络 ACL 规则中,亚马逊云科技 WAF 根据请求的 IP 地址确定请求的国家和地区。检查后,亚马逊云科技 WAF 会为每个请求添加标签,以指示 ISO 3166 国家和地区代码。您可以使用地理匹配语句中生成的标签来创建 标签匹配规则语句 来控制访问权限。

亚马逊云科技 WAF 根据源 IP 或 亚马逊云科技 WAF 地理匹配规则中定义的转发 IP 配置生成 两种类型的标签 。这些标签是国家和地区标签。

默认情况下,亚马逊云科技 WAF 使用网络请求来源的 IP 地址。通过在规则语句设置中 启用转发 IP 配置,您可以指示 亚马逊云科技 WAF 使用备用请求标头( X-Forwarded-For)中的 IP 地址。例如,具有源 IP 和转发 IP 配置的美国的国家/地区标签分别是 awswaf : clientIP: geo: country: US 和 awswaf: forwardedip: geo: country: U S。 同样,来自俄勒冈州(美国)的具有原始和转发的 IP 配置的请求的区域标签分别是 awswaf : clientIP: geo: region: us-or 和 awswaf: forwardedIP: geo: region: us-Or。

为了演示此 亚马逊云科技 WAF 功能,我们将概述两个不同的用例。

用例 1:使用 亚马逊云科技 WAF 和 CloudFront 限制内容以实现版权合规

许可协议可能会阻止您在某些地理位置、地区、州或整个国家/地区分发内容。您可以将以下设置部署到特定区域的地理屏蔽内容,以帮助满足这些要求。

在此示例中,我们将使用应用于具有 S3 存储桶来源的 CloudFront 分配的 亚马逊云科技 WAF Web ACL。Web ACL 包含地理匹配规则,用于使用标签标记来自澳大利亚的请求,然后包含用于阻止来自昆士兰地区的请求的标签匹配规则。允许所有其他源IP源自澳大利亚的请求。

配置 亚马逊云科技 WAF Web ACL 规则以实现精细的地理限制

  1. 按照步骤创建以该 S3 存储桶为源的 Amazon S3 存储桶和 CloudFront 分配
  2. 创建 CloudFront 分配后, 打开 亚马逊云科技 W AF 控制 台。
  3. 在导航窗格中,选择 Web ACL , 从下拉列表中选择 全局 (CloudFront),然后选择 创建 Web ACL。
  4. 在 “ 名称” 中 ,输入用于标识此 Web ACL 的名称。
  5. 对于 资源类型 ,选择您在步骤 1 中创建的 CloudFront 分配,然后选择 添加
  6. 选择 “ 下一步” 。
  7. 选择 “ 添加规则” ,然后选择 “ 添加我自己的规则和规则组” 。
  8. 在 “ 名称” 中 ,输入用于标识此规则的名称。
  9. 对于 规则类型 ,选择 常规规则
  10. 为与 声明 源自国家/地区相匹配的请求配置 规则 语句, 然后从下拉列表中选择 澳大利亚 (AU) 国家/地区代码。
  11. 将 IP 检查配置参数设置为 源 IP 地址。
  12. 在 “ 操作” 下 ,选择 “ 计数” ,然后选择 “ 添加规则” 。
  13. 按照与步骤 7 相同的操作创建新规则,然后输入名称来标识该规则。
  14. 对于 规则类型 ,选择 常规规则
  15. 为与 Has a L abel 语句相匹配的请求配置规则语句,然后输入 a wswa f: clientIP: geo: region: a u-QLD 作为匹配密钥。
  16. 将操作设置为 “ 阻止” ,然后选择 “ 添加规则” 。
  17. 对于 “ 操作” ,保留 “ 允许” 的默认操作 。
  18. 对于 亚马逊 CloudWatch 指标 ,请选择您在步骤 8 和 14 中创建的 亚马逊云科技 WAF 规则。
  19. 对于 “ 请求抽样选项” ,选择 “ 启用抽样请求” ,然后选择 “ 下一步 ”。
  20. 查看并创建 Web ACL 规则。

创建 Web ACL 后,您应该会看到 Web ACL 配置,如下图所示。图 1 显示了地理匹配规则配置。

Figure 1: Web ACL rule configuration

图 1:Web ACL 规则配置

图 2 显示了昆士兰州的区域地理限制。

Figure 2: Queensland regional geo restriction - web ACL configuration<

图 2:昆士兰州区域地理限制 — Web ACL 配置<

设置现已完成——你有一个包含两条常规规则的 Web ACL。第一条规则匹配来自澳大利亚的请求并自动添加地理标签。标签匹配规则声明会检查带有昆士兰州精细地理标签的请求并屏蔽这些请求。要了解请求的来源,您可以在 亚马逊云科技 WAF Web ACL 上配置日 志

您可以通过从澳大利亚昆士兰州向 CloudFront 分配的 DNS 名称发出调用区块的请求来测试此设置。CloudFront 将返回 403 错误,类似于以下示例。

$ curl -IL https://abcdd123456789.cloudfront.net
HTTP/2 403 
server: CloudFront
date: Tue, 21 Feb 2023 22:06:25 GMT
content-type: text/html
content-length: 919
x-cache: Error from cloudfront
via: 1.1 abcdd123456789.cloudfront.net (CloudFront)
x-amz-cf-pop: SYD1-C1

如这些测试结果所示,来自澳大利亚昆士兰州的请求被阻止。

用例 2:使用 亚马逊云科技 WAF 和应用程序负载均衡器允许来自特定区域的传入流量

最近,我们有客户问我们如何只允许来自一个地区的流量,如何拒绝来自一个国家/地区内其他地区的流量。你可能有类似的要求,下一节将解释如何实现这一要求。在示例中,我们将向您展示如何仅允许来自华盛顿州的访客,同时禁止来自美国其他地区的流量。

此示例使用应用于美国东部(弗吉尼亚北部)地区的应用程序负载均衡器的 亚马逊云科技 WAF Web ACL,以 Amazon EC2 实例为目标。Web ACL 包含地理匹配规则,用于使用标签标记来自美国的请求。启用转发的 IP 配置后,我们将检查 X-Forwarded-For 标头以确定网络请求的来源 IP。接下来,我们将添加标签匹配规则,以允许来自华盛顿地区的请求。来自美国的所有其他请求都被阻止。

配置 亚马逊云科技 WAF Web ACL 规则以实现精细的地理限制

  1. 按照步骤在美国东部(弗吉尼亚北部) 地区 创建面向互联网的应用程序负载均衡器
  2. 创建应用程序负载均衡器后,打开 亚马逊云科技 WAF 控制台
  3. 在导航窗格中,选择 Web AC L ,然后选择 在美国东部(弗吉尼亚北部) 区域 创建 Web ACL
  4. 在 “ 名称” 中 ,输入用于标识此 Web ACL 的名称。
  5. 对于 资源类型 ,选择您在本节的步骤 1 中创建的应用程序负载均衡器,然后选择 添加
  6. 选择 “ 下一步” 。
  7. 选择 “ 添加规则” ,然后选择 “ 添加我自己的规则和规则组”。
  8. 在 “ 名称” 中 ,输入用于标识此规则的名称。
  9. 对于 规则类型 ,选择 常规规则。
  10. 为与声明 源自中的国家/地区相匹配的请求配置规则语句 ,然后从下拉列表中选择 美国 (US) 国家/地区代码。
  11. 将 IP 检查配置参数设置为标头中的 IP 地址
  12. 标题字段名称输入 为 X-Forwar ded-For。
  13. 对于 “ 匹配” ,选择 “因 缺少 IP 地址 而备用”。标头中没有有效 IP 地址的 Web 请求将被视为匹配请求并被允许。
  14. 在 “ 操作” 下 ,选择 “ 计数” ,然后选择 “ 添加规则” 。
  15. 按照与本节步骤 7 相同的操作创建新规则,然后输入名称来标识该规则。
  16. 对于 规则类型 ,选择 常规规则
  17. 为与 Has a Label 语句匹配的请求配置规则语句,对于匹配密钥,输入 awswaf: forwardedIP: geo: region: US- W A
  18. 将操作设置为 “ 允许” ,然后选择 “ 添加规则” 。
  19. 对于不匹配任何规则的请求的 默认 Web ACL 操作 ,请将 操作设置 为 阻止
  20. 对于 亚马逊 CloudWatch 指标 ,请选择您在本节的步骤 8 和 14 中创建的 亚马逊云科技 WAF 规则。
  21. 对于 “ 请求抽样选项” ,选择 “ 启用抽样请求” ,然后选择 “ 下一步 ”。
  22. 查看并创建 Web ACL 规则。

创建 Web ACL 后,您应该会看到 Web ACL 配置,如下图所示。图 3 显示了地理匹配规则

Figure 3: Geo match rule

图 3:地理匹配规则

图 4 显示了华盛顿地区的地理限制。

Figure 4: Washington regional geo restriction - web ACL configuration

图 4:华盛顿地区地理限制 — Web ACL 配置

以下是该规则的 JSON 表示形式:

{
  "Name": "WashingtonRegionAllow",
  "Priority": 1,
  "Statement": {
    "LabelMatchStatement": {
      "Scope": "LABEL",
      "Key": "awswaf:forwardedip:geo:region:US-WA"
    }
  },
  "Action": {
    "Allow": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "USRegionalRestriction"
  }
}

设置现已完成——你有一个包含两条常规规则的 Web ACL。第一条规则匹配在检查 X-Forwarded-For 标头中的源 IP 后来自美国的请求,并添加地理标签。标签匹配规则声明会检查带有华盛顿地区精细地理标签的请求并允许这些请求。

如果用户从华盛顿地区以外的地方发出 Web 请求,则该请求将被阻止,并会返回 HTTP 403 错误响应,如下所示。

curl -IL https://GeoBlock-1234567890.us-east-1.elb.amazonaws.com
HTTP/1.1 403 Forbidden
Server: awselb/2.0
Date: Tue, 21 Feb 2023 22:07:54 GMT
Content-Type: text/html
Content-Length: 118
Connection: keep-alive

结论

亚马逊云科技 WAF 现在支持根据精细地理标签限制流量。这使您可以根据一个国家/地区内的地理位置进行进一步的控制。

在这篇文章中,我们演示了两个不同的用例,它们展示了如何将此功能应用于 CloudFront 发行版和应用程序负载均衡器。 请注意,除了 CloudFront 和应用程序负载均衡器外,亚马逊云科技 WAF 支持的其他源类型也支持此功能,例如 亚马逊 API Gateway 和 Amazon Cognito。

如果您对这篇文章有反馈,请在下面的评论部分提交评论。 如果您对这篇文章有疑问,请在 亚马逊云科技 WAF re: Post 上开始一个新话题或联系 AW S S uppor t。

想了解更多 亚马逊云科技 安全新闻?在 推特 上关注我们 。

Mohit Mysore

Mohit Mysore

Mohit 是一名技术客户经理,在与 亚马逊云科技 客户合作方面拥有 5 年以上的经验。他热衷于网络和系统管理。工作之余,他喜欢旅行、看足球和F1以及与家人共度时光。