使用 AWS WAF 根据 IP 地址或地理位置限制访问
Louis Hourcade,Amazon Web Services
摘要
AWS WAF 是一款 Web 应用程序防火墙,有助于保护 Web 应用程序和 API 免受常见的 Web 漏洞和机器人攻击,这些威胁会影响可用性、危及安全性并消耗过多资源。AWS WAF 中的 Web 访问控制列表(Web ACL)让您能够控制流量如何到达您的应用程序。在 Web ACL 中,您可以添加旨在允许合法流量、控制机器人流量和阻止常见攻击模式的规则或规则组。有关更多信息,请参阅 AWS WAF 的工作原理。
您可以将以下规则类型与您的 AWS WAF Web ACL 关联:
通过使用此模式和关联的代码存储库,您可以使用 AWS Cloud Development Kit (AWS CDK) 来部署带有自定义规则的 AWS WAF Web ACL。这些规则根据最终用户的 IP 地址或地理位置限制对 Web 应用程序资源的访问。您也可以选择附加多个托管规则组。
先决条件和限制
先决条件
限制
您只能在 AWS WAF 可用的 AWS 区域 中使用此模式。有关区域可用性,请参阅按区域划分的 AWS 服务
。
工具
AWS 服务
AWS Cloud Development Kit (AWS CDK) 是一个软件开发框架,可帮助您在代码中定义和预调配 AWS 云 基础设施。
AWS WAF 是一种 Web 应用程序防火墙,可帮助您监控转发至受保护 Web 应用程序资源的 HTTP 和 HTTPS 请求。
代码存储库
此模式的代码可在 GitHub AWS WAF 的IP 和地理位置限制
IPMatch阻止来自不允许的 IP 地址的请求。GeoMatch阻止来自不允许的国家/地区的请求。
在部署期间,您可以选择将以下所有托管规则组附加到 Web ACL:
核心规则集(CRS)– 此规则组包含通常适用于 Web 应用程序的规则。它有助于防止利用各种漏洞,包括 OWASP 出版物(如 OWASP Top 10
)中描述的一些高风险和经常发生的漏洞。 管理保护 – 此规则组包含有助于您阻止对公开的管理页面进行外部访问的规则。
已知错误输入 ‐ 此规则组帮助阻止请求模式,这些模式确认无效且与漏洞攻击或发现相关联。
Amazon IP 声誉列表 – 此规则组包含基于 Amazon 内部威胁情报的规则。它可以帮助您阻止通常与机器人或其他威胁关联的 IP 地址。
Linux 操作系统托管规则组 – 此规则组有助于阻止请求模式,这些请求模式与利用 Linux 漏洞(包括 Linux 特定的本地文件包含(LFI)攻击)相关。
SQL 数据库托管规则组 – 此规则组有助于阻止与 SQL 数据库的漏洞利用相关的请求模式,例如 SQL 注入攻击。
操作说明
| 任务 | 描述 | 所需技能 |
|---|---|---|
克隆存储库。 | 输入以下命令,将 AWS WAF 的 IP 和地理定位限制
| Git |
配置规则。 |
| 常规 AWS、Python |
| 任务 | 描述 | 所需技能 |
|---|---|---|
引导 AWS 环境。 | 如果尚未完成此操作,则需要先引导您的 AWS 环境,然后才能部署 AWS CDK 应用程序。
| 常规 AWS |
部署 AWS CDK 应用程序。 |
| 常规 AWS |
| 任务 | 描述 | 所需技能 |
|---|---|---|
确认 Web ACL 已成功部署。 |
| 常规 AWS |
(可选)将 Web ACL 与您的资源关联。 | 将 AWS WAF Web ACL 与您的 AWS 资源关联,例如应用程序负载均衡器、API Gateway 或 CloudFront 分配。有关说明,请参阅将 Web ACL 与 AWS 资源关联或取消关联。有关示例,请参阅 AWS CDK 文档中的 CfnWebACLAssociation 类(构造)。 | 常规 AWS |
| 任务 | 描述 | 所需技能 |
|---|---|---|
删除堆栈。 |
| 常规 AWS |
相关资源
API 参考(AWS CDK 文档)
aws-cdk-lib.aws_wafv2 模块(AWS CDK 文档)
使用 Web ACL(AWS WAF 文档)
管理自己的规则组(AWS WAF 文档)
规则(AWS WAF 文档)