<!-- AI_TASK_START: AI标题翻译 -->
[解决方案] 使用 Amazon Route 53 Resolver DNS Firewall 检测恶意域名
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 解决方案分析
## 解决方案概述
本解决方案展示如何利用 **Amazon Route 53 Resolver DNS Firewall** 检测和阻塞恶意域名,结合 **AWS Managed Domain Lists** 和自定义域名列表,实现实时威胁防护。核心目标是帮助组织主动识别并缓解安全风险,如恶意活动和数据泄露,适用于安全团队、域名停车业务及企业VPC环境。该方案解决传统拒绝列表维护的低效问题,通过AWS自动更新的威胁情报优化资源利用,并适应不断演变的网络威胁景观。
## 实施步骤
1. **准备先决条件**
- 创建AWS账户并确保熟悉 **AWS CloudFormation**。
- 创建并上传 `dnslib.zip` 文件:
- 在 **CloudShell** 中运行命令创建目录、安装 `dnspython==2.7.0`,并打包ZIP文件。
- 下载ZIP文件并上传至指定 **S3** 桶。
2. **启动AWS CloudFormation堆栈**
- 下载CloudFormation模板文件。
- 在 **CloudFormation控制台** 中创建堆栈,上传模板,并提供参数如 **DNSFirewallManagedDomainListId** 和 **SNSEmailAddress**。
- 等待堆栈部署完成(约10分钟),以设置 **API Gateway**、**Lambda** 函数、**DNS Firewall** 规则组、**S3** 桶和 **SNS**。
3. **使用默认DNS Firewall AWS Managed Domain List**
- 上传名为 `domains.csv` 的文件至指定 **S3** 桶(格式如 `aws-checkdomains-<AWS_Account_Number>`)。
- 通过 **API Gateway** 触发域名查询:
- 获取API URL和密钥,使用工具如Postman调用API。
- Lambda函数在VPC内执行查询,DNS Firewall过滤并返回结果,存储于 **S3** 并通过 **SNS** 发送通知。
4. **使用DNS Firewall自定义域名列表**
- 准备名为 `custom_domains_list.csv` 的文件,包含自定义域名列表。
- 上传文件至指定 **S3** 桶(格式如 `aws-customdomains-<AWS_Account_Number>`)。
- Lambda函数自动处理文件,更新 **DNS Firewall** 规则组以包含自定义列表。
- 测试:重新上传 `domains.csv` 并调用API,验证自定义域名的阻塞效果。
5. **清理资源**
- 删除 **S3** 桶中的内容。
- 在 **CloudFormation控制台** 中删除堆栈以避免持续费用。
## 方案客户价值
- **优化安全运维**:通过 **AWS Managed Domain Lists** 自动更新威胁情报,减少手动维护需求,帮助安全团队节省时间和精力,同时满足合规要求。
- **实时威胁防护**:结合自定义列表,实现对恶意域名的快速检测和阻塞,提升VPC资源保护,适用于突发流量场景,显著降低数据泄露风险。
- **灵活性和扩展性**:与传统方案相比,该解决方案通过 **API Gateway** 和 **Lambda** 实现自动化管道,减少安全团队工作负载;差异在于AWS的持续更新机制,提供更主动的防护,而传统方法依赖静态列表,可能落后于威胁演变。
## 涉及的相关产品
- **Amazon Route 53 Resolver DNS Firewall**:核心组件,用于域名查询过滤和响应,提供恶意域名检测功能。
- **Amazon API Gateway**:发布API接口,触发域名查询流程。
- **Amazon S3**:存储输入CSV文件和查询结果,支持数据持久化。
- **AWS Lambda**:在VPC内运行函数,执行域名解析和规则应用,实现事件驱动处理。
- **Amazon Simple Notification Service (SNS)**:发送警报通知管理员关于可疑域名的结果。
## 技术评估
该解决方案的技术先进性体现在利用 **AWS Managed Domain Lists** 的实时更新和自定义规则相结合,提供高效的域名过滤机制,提高了VPC的安全性和可用性。可行性强,通过 **CloudFormation** 简化部署,适用于中小型企业环境。优势包括自动化威胁检测减少人为错误,以及与 **Route 53** 的无缝集成增强网络防护;可能的限制是依赖于用户上传文件,可能在高频更新场景下增加操作复杂度,且需在测试环境中验证以避免生产影响。整体上,该方案在动态威胁响应方面领先传统IaaS防护,但需关注API调用延迟以优化性能。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# 使用 Amazon Route 53 Resolver DNS 防火墙检测恶意域名
**原始链接:** [https://aws.amazon.com/blogs/networking-and-content-delivery/using-amazon-route-53-resolver-dns-firewall-to-detect-malicious-domains/](https://aws.amazon.com/blogs/networking-and-content-delivery/using-amazon-route-53-resolver-dns-firewall-to-detect-malicious-domains/)
**发布时间:** 2025-03-24
**厂商:** AWS
**类型:** BLOG
---
在本帖中,我们展示组织如何使用 [Amazon Route 53 Resolver DNS 防火墙 (Amazon Route 53 Resolver DNS Firewall)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall.html) 来检测并阻止对恶意域名的访问。我们将展示如何使用 AWS [托管域名列表 (Managed Domain Lists)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall-managed-domain-lists.html),这些列表包含与恶意活动或潜在威胁相关的域名,并分享在环境中实施 Route 53 Resolver DNS 防火墙的最佳实践。
如果不加保护,恶意域名可能构成严重的安全威胁,导致敏感数据和系统受到损害。主动识别并阻止这些域名的访问至关重要,但传统的拒绝列表维护可能耗时且对不断演变的威胁无效。 [Amazon Route 53](https://aws.amazon.com/route53/) 维护 [托管域名列表 (Managed Domain Lists)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall-managed-domain-lists.html),并根据不断变化的威胁格局保持这些列表的更新。这有助于优化时间和努力,因为 AWS 会自动更新列表以包含新漏洞和威胁,往往在公开披露之前,从而使 DNS 防火墙能够主动部署缓解措施。Amazon Route 53 Resolver DNS 防火墙还允许您构建自己的自定义阻止列表,提供灵活性来实施组织的特定过滤策略和规则。
本帖针对 Amazon Route 53 Resolver DNS 防火墙的以下用例进行说明:
* 安全团队可以针对组织中的 Amazon 虚拟私有云 (VPCs) 强制执行域名访问限制,以满足安全和合规要求。
* 域名停放业务可以在接受域名到其平台前,对其进行验证并筛查 AWS 托管列表和自定义阻止列表。
* 组织可以通过为 VPC 实施此解决方案来阻止恶意域名并保护员工工作站,以出于安全或合规原因。
## 解决方案概述
本指南演示如何构建一个管道,利用 AWS 托管域名列表以及您的自定义列表来识别恶意域名。我们使用以下 AWS 服务作为关键组件:
* [Amazon Route 53](https://aws.amazon.com/route53/) Resolver DNS 防火墙,使用 AWS 托管域名列表和自定义域名列表进行域名查找并提供自定义 DNS 查询响应,从而阻止或允许某个域名。
* [Amazon API Gateway](https://aws.amazon.com/api-gateway/) 来创建和发布用于 DNS 防火墙域名查找的 API。
* [Amazon S3](https://aws.amazon.com/s3/) 用于存储输入 CSV 文件以及结果。
* [AWS Lambda](https://aws.amazon.com/lambda/) 在 VPC 中运行,用于执行域名解析并从 DNS 防火墙获取基于配置规则的适当响应。
* [Amazon Simple Notification Service (Amazon SNS)](https://aws.amazon.com/sns/) 用于向管理员发送电子邮件通知,包含域名查找结果。
图 1 展示了架构。用户将域名列表上传到 S3 存储桶,并触发 API Gateway。位于 VPC 中的 Lambda 函数通过 Amazon Route 53 Resolver DNS 防火墙执行 DNS 防火墙查找。Amazon SNS 会立即通知管理员关于从 DNS 防火墙结果中标记的可疑域名,这些结果存储在 S3 存储桶中。此系统使管理员能够检测并阻止可疑域名。

图 1: 显示使用 Amazon Route 53 Resolver DNS 防火墙和其他服务的架构流程
在此解决方案中,我们展示如何将 AWS 托管域名列表与自定义阻止列表结合,在实时中保护免受恶意域名的侵害,消除手动维护,并提供持续的安全覆盖。通过此解决方案,您可以自动保护 VPC 资源免受恶意域名的影响,通过自动化威胁检测减少安全团队工作量,同时满足合规要求并利用 AWS 的持续更新威胁情报。
## 先决条件
完成此解决方案需要以下先决条件。
* 如果尚未创建 [AWS 账户](https://aws.amazon.com/resources/create-account/),请先创建。
* 我们假设您熟悉 [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html) 服务。
#### 创建并上传 dnslib 压缩文件
1. 从您的 AWS 账户中打开 [CloudShell](https://aws.amazon.com/cloudshell/),并输入以下命令:
* `mkdir python`
* `pip install dnspython==2.7.0 -t python`
* `zip -r dnslib.zip python`
2. 通过单击 CloudShell 控制台右上角的“Actions”,下载 dnslib.zip 文件。
* 选择“Download file”。
* 输入文件路径为“/home/cloudshell-user/dnslib.zip”以下载文件。
3. 在您计划执行整个设置的 [AWS 区域 (AWS Region)](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/) 中,为上传 dnslib.zip 文件创建一个 S3 存储桶。
4. 将文件上传到 S3 存储桶。
## 启动 AWS CloudFormation 堆栈
您可以使用 [AWS CloudFormation](https://aws.amazon.com/cloudformation/) 来设置环境。CloudFormation 模板会设置 API Gateway、Lambda 函数、DNS 防火墙规则组、S3 存储桶以及 Amazon SNS VPC 端点。
要启动提供的 CloudFormation 模板,请完成以下步骤:
* 从 [此处](https://github.com/aws-samples/sample-Route53DNSFirewall-DomainCheckTool/blob/main/domainchecktool.yaml) 下载 CloudFormation 模板。
* 确保您处于正确的区域。
* 导航到 AWS [CloudFormation 控制台](https://console.aws.amazon.com/cloudformation/)。
* 选择“Create stack”。
* 选择“an existing template”。
* 选择“Upload a template file”。
* 选择“Choose file”,并指定在第一步中下载到本地机器的 YAML 模板文件。
* 选择“Next”。
* 对于“Stack name”,输入一个名称。
* 提供以下参数:
* **DNSFirewallManagedDomainListId**:
1. 导航到 [Amazon Virtual Private Cloud (Amazon VPC)](https://aws.amazon.com/vpc/) 服务并单击“VPC dashboard”。
2. 在左侧导航窗格下,在“DNS Firewall”下选择“Domain lists”。
3. 查找名为“AWSManagedDomainsAggregateThreatList”的域名列表。
4. 该列表的 ID 显示在其名称旁边的 ID 列中。通常以“rslvr-fdl-”开头,后跟一个唯一标识符。

图 2: 显示 DNS 防火墙托管域名列表 ID
* **SNSEmailAddress**: 管理员用于接收与恶意域名访问相关的电子邮件的电子邮件地址。
* **DNSLIBS3Bucket**: 您上传 dnslib.zip 文件的 S3 存储桶。
* 输入您要分配给堆栈的任何标签,然后选择“Next”。
* 选择确认复选框,然后选择“Create stack”。
堆栈大约需要 10 分钟完成。在 CloudFormation 控制台中,您可以导航到堆栈的“Resources”选项卡来查看您创建的资源。
## 使用默认 DNS 防火墙 AWS 托管域名列表
以下步骤提供使用默认 DNS 防火墙 AWS 托管域名列表的说明。
### 用户执行的步骤
**步骤 1:** 将一个名为 **domains.csv** 的 CSV 文件上传到 CloudFormation 堆栈设置的 S3 存储桶 *aws-checkdomains-<AWS_Account_Number>* 中,该文件包含要验证是否为恶意的域名列表。在图 3 中,我们展示了示例域名。
文件名必须为 **domains.csv**。如果使用其他文件名,则不会选取域名列表。如果要更改文件名,则可以修改 Lambda 函数“DNSDomainResolutionLambda”中的代码。

图 3: 显示需要验证是否为恶意的输入域名列表,在 domains.csv 中
**步骤 2:** 从 CloudFormation 堆栈输出中获取 DNS Lookup REST API,该 API 由 API Gateway 发布,用于执行 DNS 域名查找并触发 API,如图 4 所示。从 API Gateway 控制台获取 API 密钥。您可以使用标头中的“x-api-key”并输入从 API Gateway 控制台获取的值。您可以使用工具如 Postman、curl、您自己的代码等来触发 API。

图 4: CloudFormation 输出显示 API Gateway URL
***后台发生的情况***
* API Gateway 调用位于 VPC 中的 Lambda 函数,对 CSV 文件中的域名列表执行 DNS 查询解析。
* 来自 VPC 的 DNS 查询会通过默认 DNS 防火墙的原生威胁情报。
* 当 DNS 防火墙收到 DNS 查询时,它会使用 CloudFormation 预配置的规则组、规则和其他设置对查询进行过滤,并将结果发送回 Resolver。
* 响应会保存到同一 S3 存储桶中,作为 **dnsanswers.csv**。您应该看到成功解析的域名为 Amazon Route 53 DNS 防火墙返回的状态码 200,而恶意域名标记为 500s 的状态码(如图 5 中所示,501: 由托管列表/自定义列表阻止的域名。502: 诸如域名不存在等错误)。

图 5: 来自 DNS 防火墙的响应
* 同时,管理员会立即收到关于报告 501 状态码的三个域名的警报,如图 6 所示。对于完整列表,请参考 *aws-checkdomains-<AWS_Account_Number>* S3 存储桶中的 dnsanswers.csv 文件。

图 6: 包含被阻止域名的电子邮件通知
* 您可以自定义 DNS 防火墙阻止的 DNS 查询响应。有关更多信息,请参考此 [Route 53 开发者指南](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall-rule-actions.html)。
## 使用 DNS 防火墙 AWS 自定义域名列表
Amazon Route 53 Resolver DNS 防火墙还允许您将自己的域名列表上传到 S3 存储桶,并验证它们是否为恶意。在前一个场景中,“example.com” 默认未被归类为恶意。
***用户遵循的步骤***
如果您想向 Route 53 DNS 防火墙添加自定义恶意域名列表:
**步骤 1:** 准备一个名为 *custom_domains_list.csv* 的 CSV 文件,其中包含您的自定义域名列表,如图 7 所示:

图 7: 显示在 DNS 防火墙自定义域名列表中定义的自定义域名列表
如果使用其他文件名,则不会选取域名列表。如果要更改文件名,则可以修改 Lambda 函数“CustomDNSDomainListLambda”中的代码。确保 *custom_domains_list.csv* 文件中没有重复域名。否则,Lambda 函数会失败,并显示以下错误:
* *ERROR ValidationException: An error occurred (ValidationException) when calling the UpdateFirewallDomains operation: This request contains duplicated domains. Ensure that every domain is unique.*
**步骤 2:** 将文件上传到 CloudFormation 堆栈创建的 S3 存储桶中,该存储桶的名称格式为 *aws-customdomains-<AWS_Account_Number>*。您可以在 CloudFormation 堆栈输出中找到此存储桶。
***后台发生的情况***
* 一旦文件上传,一个 Lambda 函数会自动调用,并使用自定义域名列表创建一个新的 Route 53 DNS 防火墙域名列表。任何后续上传都会覆盖相同的自定义列表。
* DNS 防火墙规则组包含托管列表和自定义域名列表的组合,如图 8 所示。

图 8: 显示在 DNS 防火墙自定义域名列表中定义的自定义域名列表
***测试***
* 要测试自定义域名配置,将 **domains.csv** 上传到 S3 存储桶 ***aws-checkdomains-<AWS_Account_Number>***,并从 CloudFormation 堆栈输出中获取 DNS Lookup REST API(如之前所做,APIGatewayURL)。
* 您应该看到对这些新添加域名的请求被自定义域名列表阻止,如图 9 所示。

图 9: 显示自定义域名也被 DNS 防火墙阻止
## 清理
为避免未来产生费用,请按照以下步骤删除 CloudFormation 堆栈:
**使用 AWS 管理控制台:**
* 删除 S3 存储桶的内容:*aws-checkdomains-<AWS_Account_Number>* 和 *aws-customdomains-<AWS_Account_Number>*。
* 导航到 CloudFormation 服务。
* 在堆栈列表中找到您要删除的堆栈。
* 选择堆栈,然后在堆栈操作菜单中选择“Delete”按钮。
* 确认删除时提示。
## 注意事项
以下是几个重要事项:
* 此解决方案允许通过 CSV 文件轻松输入域名,进行实时域名解析和针对托管列表与自定义列表的检查,并通过 S3 存储的结果和电子邮件通知提供即时反馈。这种 AWS 托管威胁情报与自定义规则功能的组合为组织提供了一种灵活、低维护的方式,大大提升其针对各种网络威胁的安全态势,包括恶意软件、网络钓鱼和僵尸网络活动。
* 请注意,DNS 防火墙规则操作设置为 **BLOCK**,如图 8 所示。此规则将阻止请求到达其预期目的地。有关可用规则操作类型的更多信息,请参考 [DNS 防火墙中的规则操作](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall-rule-actions.html)。
* 我们建议在您的预发布环境中测试该解决方案,并进行任何必要更新,包括实施强大的安全措施,然后再将其部署到生产环境中。
## 结论
在本帖中,我们展示了如何使用 [Amazon Route 53 Resolver DNS 防火墙 (Amazon Route 53 Resolver DNS Firewall)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall-overview.html) 来检测恶意域名并阻止指向这些域名的任何查询。AWS 托管域名列表与自定义列表的组合为组织提供必要的保护,改善其安全态势。
[AWS 托管域名列表 (Managed Domain Lists)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall-managed-domain-lists.html) 包含已知与各种安全威胁类别相关的域名,例如恶意软件、命令与控制服务器、网络钓鱼和僵尸网络。在 Route 53 DNS 防火墙规则中使用这些列表,可以自动阻止对已知与这些威胁相关的域名的查询。此外,您可以基于特定安全要求创建自定义域名列表来阻止或允许域名。
有关进一步阅读并了解 VPC 中的 DNS 解析,请参阅 [Amazon Route 53 开发者指南](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-dns-firewall-overview.html)。您还可以参考关于 [使用 DNS 防火墙保护 VPC](https://aws.amazon.com/blogs/networking-and-content-delivery/secure-your-amazon-vpc-dns-resolution-with-amazon-route-53-resolver-dns-firewall/) 的帖子,以了解 DNS 防火墙的工作原理。如果您对本帖有任何问题,请在 [Route 53 论坛](https://repost.aws/tags/TAceSYwryvTxuK8Uw1UKOTVA) 上启动新线程,或联系 [AWS 支持](https://aws.amazon.com/contact-us/)。
**关于作者**


<!-- AI_TASK_END: AI全文翻译 -->