# AWS Network Firewall for Ingress/Egress Traffic ## 实验环境 本实验部署了两个 VPC,一个是 SpokeVPC,另一个是 MaliciousVPC。SpokeVPC 有两个私有实例,NAT 网关部署在专用的公有子网中,以允许私有实例与互联网上的资源通信。AWS Network Firewall 部署在需要保护的 Spoke VPC 中。这两个 VPC 无需互相连接。AWS Network Firewall 部署在有权访问互联网网关 (IGW) 的专用防火墙子网中。对于自互联网网关 (IGW) 返回的流量,使用连接到 IGW 的入口路由表返回到防火墙弹性网络接口 (ENI)。这样可以确保流量对称,便于全面检查。我们为本实验预填充了一个部署在 MaliciousVPC 中的 MaliciousInstance,该实例执行各种活动,当您配置安全控制和监控时,将会检测到这些活动。下面的架构图中不包含 MaliciousVPC 及其资源。 ## 本实验中使用的服务 ### Amazon VPC (Virtual Private Cloud) Amazon VPC 服务允许用户在 AWS 基础设施中创建和管理隔离的虚拟网络。借助 Amazon VPC,客户可以配置他们自己的 IP 地址范围、创建子网以及设置路由表和网络网关。这样一来,客户可以在企业的云环境中更好地控制网络安全、流量路由和资源访问。 ### Amazon EC2 (Elastic Compute Cloud) Amazon EC2 是一项可扩展的计算服务,可让用户在 AWS 云中运行虚拟服务器。借助 EC2,客户可以快速预置和配置实例来满足他们的特定需求,包括选择操作系统、存储和网络设置。该服务提供各种实例类型和定价选项,因此适用于广泛的应用程序,从小规模的 Web 托管到大规模的数据处理和分析均涵盖在内。 ### Amazon CloudWatch Amazon CloudWatch 是一项监控服务,适用于 AWS 云资源和在 AWS 上运行的应用程序。您可以使用 Amazon CloudWatch 收集和跟踪指标、收集和监控日志文件,以及设置警报。Amazon CloudWatch 可以监控各种 AWS 资源,例如 Amazon EC2 实例、Amazon DynamoDB 表、Amazon RDS 数据库实例、应用程序和服务生成的自定义指标以及应用程序生成的所有日志文件。您可以使用 Amazon CloudWatch 全面地了解系统的资源利用率、应用程序性能和运行状况。您可以利用这些见解采取应对措施,保证应用程序顺畅运行。 ### AWS Network Firewall AWS Network Firewall 是一项高度可用的托管网络防火墙服务,适用于 Amazon Virtual Private Cloud (Amazon VPC)。借助该服务,您可以轻松部署和管理有状态检测、入侵防御和检测以及 Web 筛选,以保护您在 AWS 上的虚拟网络。AWS Network Firewall 可根据您的流量自动扩展,确保高可用性,而无需客户在安全基础设施方面进行额外投资。虽然 AWS Network Firewall 可以保护流向应用程序的网络流量,但 Route 53 DNS Firewall 通过执行筛选并保护流向 Route 53 Resolver 的 DNS 查询流量来对其进行补充。 AWS Network Firewall 包含以下 3 个关键组件: - **规则组**:保存可重复使用的标准集合,用于检查流量,以及处理与检查标准匹配的数据包和流量。 - **策略**:定义一组可重复使用的无状态和有状态规则组,以及一些策略级别的行为设置。 - **防火墙**:对于受防火墙策略中的检查规则保护的 VPC 强制执行这些规则。每个防火墙都需要一个防火墙策略。防火墙还定义了一些设置,例如如何记录有关网络流量的信息以及防火墙的有状态流量筛选。 ### Amazon Route 53 Resolver DNS Firewall (DNS Firewall) Amazon Route 53 Resolver DNS Firewall (DNS Firewall) 帮助您阻止向已知恶意域发出的 DNS 查询,同时允许对可信域进行 DNS 查询。DNS Firewall 保护的主要用途是帮助防止 DNS 泄露您的数据。如果恶意攻击者攻击了 VPC 中的应用程序实例,然后使用 DNS 查找将数据从 VPC 发送到他们控制的域,会发生 DNS 泄露。DNS Firewall 有一个简单的部署模型,让您可以使用托管域列表和自定义域列表直接开始保护您的 VPC。使用 DNS Firewall,您可以筛选和监管出站 DNS 请求。该服务检查 Route 53 Resolver 处理的 DNS 请求,并应用您定义的允许或阻止请求的操作。 Route 53 Resolver DNS Firewall 包含以下 3 个组件: - **域列表**:定义一个可重复使用的命名域规范集合,用于 DNS 筛选。规则组中的每个规则都需要一个域列表。 - **规则组**:定义一个可重复使用的命名 DNS Firewall 规则集合,用于筛选 DNS 查询。使用筛选规则填充规则组,然后将规则组与一个或多个 VPC 关联。 - **规则**:在 DNS Firewall 规则组中定义用于 DNS 查询的筛选规则。每个规则都指定一个域列表以及一项要对其域与列表中的域规范匹配的 DNS 查询执行的操作。您可以允许、阻止匹配的查询或就其发送提醒。您还可以针对被阻止的查询定义自定义响应。 ## DNS Firewall 如何与 AWS Network Firewall 协同工作 DNS Firewall 和 AWS Network Firewall 都提供域名筛选,但用于不同类型的流量。同时使用 DNS Firewall 和 AWS Network Firewall,您可以为流经两个不同网络路径的应用程序层流量配置基于域的筛选。 DNS Firewall 提供的筛选用于出站 DNS 查询,这些查询来自 VPC 中的应用程序,并通过 Route 53 Resolver。对于被阻止的域名查询,您还可以将 DNS Firewall 配置为发送自定义响应。 AWS Network Firewall 提供的筛选可同时用于网络和应用程序层流量,但不会显示对 Route 53 Resolver 的查询。 ## 任务 1:验证防火墙资源 由于我们已经为本实验预置了 AWS Network Firewall,所以您的第一个任务是验证防火墙资源。 ### 任务 1.1 - 列出防火墙 验证本实验中预置的防火墙策略和规则组。 1. 在页面顶部的统一搜索栏中,搜索并选择 VPC。 2. 在左侧导航窗格的 Network Firewall 下方,选择 Firewalls(防火墙)。 3. 找到了预配置的防火墙:SpokeVPC-InspectionFirewall ### 任务 1.2 - 防火墙详细信息 选择 SpokeVPC-InspectionFirewall 防火墙,查看更多详细信息。 在这一步中,请查看以下信息: - 该防火墙的当前状态是什么? - 与该防火墙关联的策略是什么? - 默认的无状态操作是什么? - 上面提到的策略中配置了哪些有状态规则? 选择 Firewall details(防火墙详细信息)选项卡,此选项卡提供了以下详细信息: - 防火墙终端节点和状态的详细信息。 - 显示了流/提醒类型和 CloudWatch 日志组配置的日志记录配置。 - 标签。 ### 任务 1.3 - 防火墙监控详细信息 选择 Monitoring(监控)选项卡,此选项卡提供了有关防火墙指标的以下详细信息,例如: - 防火墙无状态检查接收/通过/丢弃了多少数据包? - 防火墙有状态检查接收/通过/丢弃了多少数据包? ### 任务 1.4 - 列出并验证 EC2 实例 1. 在页面顶部的统一搜索栏中,搜索并选择 EC2。 2. 在左侧导航窗格的 Instances(实例)下方,选择 Instances(实例)。 3. 选择实例 SpokeVPC-TestInstance1。 4. 从导航栏中选择 Connect(连接)。 5. 选择 Session Manager(会话管理器)选项卡后,选择 Connect(连接)。 使用会话管理器连接 终端会话将在新的浏览器标签页中打开。现在,您已连接至 EC2 实例。您可以选择右上角的 Terminate(终止)终止会话(浏览器标签页)。 任务完成: 您已成功验证了所有 VPC 和防火墙资源。 ## 任务 2:出口 Web 筛选 在此任务中,您将使用 AWS Network Firewall 以通过本实验中之前预置的资源筛选出站 Web 流量。 ### 任务 2.1 - 列出防火墙和规则组 在此任务中,验证规则组 NetworkFirewall-DomainAllow-RuleGroup。 1. 在页面顶部的统一搜索栏中,搜索并选择 VPC。 2. 在左侧导航窗格的 Network Firewall 下方,选择 Network Firewall rule groups(Network Firewall 规则组)。 3. 选择 NetworkFirewall-DomainAllow-RuleGroup,查看更多详细信息。 您可以观察到有状态规则组 NetworkFirewall-DomainAllow-RuleGroup 允许与域 .amazon.com 和 .amazonaws.com 匹配的流量。您可以在此处添加更多域以进行测试,也可以将其保留为默认域。 ### 任务 2.2 - 列出并验证 EC2 实例 在本实验的设置过程中,我们在 SpokeVPC 的私有子网中预先创建了名为 SpokeVPC-TestInstance1 和 SpokeVPC-TestInstance2 的 EC2 实例。在此任务中,您将验证 EC2 实例详细信息。 1. 在页面顶部的统一搜索栏中,搜索并选择 EC2。 2. 在左侧导航窗格的 Instances(实例)下方,选择 Instances(实例)。 3. 选择实例 SpokeVPC-TestInstance1。 4. 从导航栏中选择 Connect(连接)。 5. 选择 Session Manager(会话管理器)选项卡后,选择 Connect(连接)。 终端会话将在新的浏览器标签页中打开。 现在您已准备好测试防火墙策略了。 ### 任务 2.3 - 验证域筛选 在 SpokeVPC-TestInstance1 实例上,运行以下命令: ```sh curl https://aws.amazon.com --max-time 5 ``` 示例输出: 您观察 curl 命令的输出。请注意,curl 命令已成功完成。 ```sh sh-4.2$ curl https://aws.amazon.com --max-time 5