

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用，根据 IP 地址或地理位置限制访问 AWS WAF
<a name="aws-waf-restrict-access-geolocation"></a>

*Louis Hourcade，Amazon Web Services*

## Summary
<a name="aws-waf-restrict-access-geolocation-summary"></a>

[AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html)是一种 Web 应用程序防火墙，可帮助保护 Web 应用程序以及可能影响可用性、危及安全性或消耗过多资源的常见 Web 漏洞和僵尸程序的 APIs 侵害。通过中的 [AWS WAF Web 访问控制列表 (Web ACLs)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html)，您可以控制流量如何到达您的应用程序。在 Web ACL 中，您可以添加旨在允许合法流量、控制机器人流量和阻止常见攻击模式的规则或规则组。有关更多信息，请参阅[AWS WAF 工作原理](https://docs.aws.amazon.com/waf/latest/developerguide/how-aws-waf-works.html)。

您可以将以下类型的规则关联到您的 AWS WAF 网站 ACLs：
+ [托管规则组](https://docs.aws.amazon.com/waf/latest/developerguide/waf-managed-rule-groups.html) — AWS 托管规则团队和 AWS Marketplace 卖家提供预配置的规则集。某些托管规则组旨在帮助保护特定类型的 Web 应用程序。还有些提供针对已知威胁或常见漏洞的广泛保护。
+ [自定义规则](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html)和[自定义规则组](https://docs.aws.amazon.com/waf/latest/developerguide/waf-user-created-rule-groups.html) —您还可以创建规则和规则组，以自定义对Web应用程序的访问权限，以及 APIs. 例如，您可以根据特定的 IP 地址列表或国家/地区列表来限制流量。

通过使用此模式和关联的代码存储库，您可以使用 ACLs 使用自定义规则部署 AWS WAF Web。[AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)这些规则根据最终用户的 IP 地址或地理位置限制对 Web 应用程序资源的访问。您也可以选择附加多个托管规则组。

## 先决条件和限制
<a name="aws-waf-restrict-access-geolocation-prereqs"></a>

**先决条件**
+ 活跃的 AWS 账户
+ 部署 AWS WAF 资源的@@ [权限](https://docs.aws.amazon.com/waf/latest/developerguide/security-iam.html)
+ AWS CDK，已在您的账户中[安装和配置](https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html)
+ Git，[已安装](https://github.com/git-guides/install-git)

**限制**
+ 您只能在可用 AWS 区域 的地方 AWS WAF 使用此模式。有关区域可用性，请参阅[按区域划分的AWS 服务](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

## 工具
<a name="aws-waf-restrict-access-geolocation-tools"></a>

**AWS 服务**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)是一个软件开发框架，可帮助您在代码中定义和配置 AWS 云 基础架构。
+ [AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/what-is-aws-waf.html) 是一种 Web 应用程序防火墙，可帮助您监控转发至受保护 Web 应用程序资源的 HTTP 和 HTTPS 请求。

**代码存储库**

此模式的代码可在 AWS WAF存储库的 GitHub [IP 和地理位置限制](https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk)中找到。该代码部署了两个 AWS WAF 网络 ACLs。第一个是专为 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 资源设计的区域网络 ACL。第二个是 [Amazon CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) 资源的全球 Web ACL。两个网站都 ACLs 包含以下自定义规则：
+ `IPMatch` 阻止来自不允许的 IP 地址的请求。
+ `GeoMatch` 阻止来自不允许的国家/地区的请求。

在部署期间，您可以选择将以下所有托管规则组附加到您的 Web ACLs：
+ [核心规则集（CRS）](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-crs)– 此规则组包含通常适用于 Web 应用程序的规则。它有助于防止利用各种漏洞，包括 OWASP 出版物（如 [OWASP Top 10](https://owasp.org/www-project-top-ten/)）中描述的一些高风险和经常发生的漏洞。
+ [管理保护](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-admin) – 此规则组包含有助于您阻止对公开的管理页面进行外部访问的规则。
+ [已知错误输入](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html#aws-managed-rule-groups-baseline-known-bad-inputs) ‐ 此规则组帮助阻止请求模式，这些模式确认无效且与漏洞攻击或发现相关联。
+ [Amazon IP 声誉列表](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html#aws-managed-rule-groups-ip-rep-amazon) – 此规则组包含基于 Amazon 内部威胁情报的规则。它可以帮助您阻止通常与机器人或其他威胁关联的 IP 地址。
+ [Linux 操作系统托管规则组](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html#aws-managed-rule-groups-use-case-linux-os) – 此规则组有助于阻止请求模式，这些请求模式与利用 Linux 漏洞（包括 Linux 特定的本地文件包含（LFI）攻击）相关。
+ [SQL 数据库托管规则组](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html#aws-managed-rule-groups-use-case-sql-db) – 此规则组有助于阻止与 SQL 数据库的漏洞利用相关的请求模式，例如 SQL 注入攻击。

## 操作说明
<a name="aws-waf-restrict-access-geolocation-epics"></a>

### 配置 AWS WAF 网络 ACLs
<a name="configure-the-waf-web-acls"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 克隆存储库。 | 输入以下命令，将 [AWS WAF的 IP 和地理定位限制](https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk)存储库克隆到本地工作站：<pre>git clone https://github.com/aws-samples/ip-and-geolocation-restriction-with-waf-cdk.git</pre> | Git | 
| 配置规则。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/aws-waf-restrict-access-geolocation.html) | 常规 AWS、Python | 

### 引导并部署代码
<a name="bootstrap-and-deploy-the-code"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 引导您的 AWS 环境。 | 如果尚未完成此操作，则需要先[引导](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping-env.html)您的 AWS 环境，然后才能部署 AWS CDK 应用程序。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/aws-waf-restrict-access-geolocation.html) | 常规 AWS | 
| 部署 AWS CDK 应用程序。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/aws-waf-restrict-access-geolocation.html) | 常规 AWS | 

### 验证部署
<a name="validate-the-deployment"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 确认 Web ACLs 已成功部署。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/aws-waf-restrict-access-geolocation.html) | 常规 AWS | 
| （可选）将 Web ACLs 与您的资源关联。 | 将 AWS WAF 网站 ACLs 与您的 AWS 资源相关联，例如应用程序负载均衡器、API Gateway 或 CloudFront 分发。有关说明，请参阅[将 Web ACL 与 ](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html)AWS[ 资源关联或取消关联](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html)。有关示例，请参阅 AWS CDK 文档中的[类 CfnWebACLAssociation （构造）](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2.CfnWebACLAssociation.html)。 | 常规 AWS | 

### 清理 资源
<a name="clean-up-resources"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 删除堆栈。 | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/aws-waf-restrict-access-geolocation.html) | 常规 AWS | 

## 相关资源
<a name="aws-waf-restrict-access-geolocation-resources"></a>
+ [API 参考](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html)（AWS CDK 文档）
+ [aws-cdk-lib.aws\$1wafv2 模块（文档）](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_wafv2-readme.html)AWS CDK 
+ [使用 Web ACLs](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-working-with.html)（AWS WAF 文档）
+ [管理自己的规则组](https://docs.aws.amazon.com/waf/latest/developerguide/waf-user-created-rule-groups.html)（AWS WAF 文档）
+ [规则](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html)（AWS WAF 文档）