在本文中,我们将讨论在 AWS 网络防火墙中实现 IPv6 的两种主要部署模型:双栈模型和仅 IPv6 模型。AWS网络防火墙支持这两种模型,使得用户能够灵活地选择合适的网络架构。同时,还会探讨实施这些模型时要考虑的因素及其优缺点。
AWS 网络防火墙是一种管理状态的网络防火墙和入侵防护服务,允许用户对网络流量实施精细的防火墙规则。如果您是 AWS网络防火墙的新用户,并想了解其功能和使用案例,建议您查看这篇博客文章 。
在这篇文章中,我们将展示如何在双栈和仅 IPv6 的环境中使用 AWS 网络防火墙。我们将详细讲解不同的部署模型、与 IPv6环境相关的考虑因素和权衡。如果您对仅 IPv4 网络的部署模型感兴趣,可以参考文章 。
AWS 网络防火墙在 2023 年 1 月增加了 ,并在 2023 年 4 月加入了 。您可以在 re:Post 文章 中找到有关 IPv6 最佳实践、参考架构和文档的更多资源。
在 AWS(Amazon Web Services)上部署 IPv6 环境时,主要有两种部署选项:双栈与仅 IPv6。在双栈模型中,您的环境支持 IPv4和 IPv6,而仅 IPv6 意味着工作负载只配置了 IPv6 地址。
双栈部署模型的环境支持 IPv4 和 IPv6 流量。您的资源可以同时具有 IPv4 和 IPv6 地址。部署双栈环境的一个好处是能够与不支持 IPv6的资源保持向后兼容。例如,您可能有仅支持 IPv4 的客户端,因此可以通过原生 IPv4 连接到双栈终端。
在仅 IPv6 环境中,您的资源只配置了 IPv6 地址,能够发送和接收 IPv6 流量。在确保客户端、AWS 服务和第三方资源支持 IPv6或配置了向后兼容层之后,可以选择仅 IPv6 模型。例如,您可以在虚拟专用云(VPC)中为某项服务部署仅 IPv6 的 Amazon ElasticCompute Cloud (Amazon EC2) 实例,并使用双栈负载均衡器以允许 IPv4和 IPv6 客户端访问该服务。
接下来,我们将回顾 AWS 网络防火墙在启用 IPv6 环境中的常见架构模式。
在本节中,我们将探索如何使用 AWS 网络防火墙检查 IPv6 的互联网入口流量。AWS 网络防火墙可以在分布式或集中式模型中使用。
在第一个场景中,我们重点关注连接到 AWS 上托管的使用 IPv6 的应用程序的外部客户端,如下图所示(图 1)。
![图 1: IPv6删除)
该模型支持应用程序负载均衡器和网络负载均衡器,而 AWS 网络防火墙能够过滤 IPv4 和 IPv6 流量。
以下示例显示了标准状态规则,允许将 HTTP 端口 443 访问 ELB 子网,同时阻止 HTTP 端口 80 流量。客户还可以使用 。
![图 2: 允许 HTTP 端口 443删除)
一个允许 IPv6 无类别间域路由(CIDR)入口流量的 Suricata 规则示例如下:
pass tcp any any -> [2600:1f14:f25:df00::/56] 443 (flow:established,to_server; msg:"允许 TCP 443 流量"; sid: 1000005; rev:1;)
IPv6 的集中式互联网入口模式仅限于双栈应用程序和具有 IPv4 目标的网络负载均衡器。目前,您不能配置 IP 类型的目标组,其中包含位于其他 VPC或本地网络中工作负载的 IPv6 地址,即使您通过 VPC 对等连接、、 或 配置了私有连接。
然而,如果您希望拥有 IPv6 目标和 IPv6 服务,您可以通过使用双栈弹性负载均衡器和 IPv6 目标,在集中的入口 VPC 中使用 IPv6 IP类型目标作为双栈 终端节点。PrivateLink 终端节点允许您的前端应用或网络负载均衡器以 IPv6 连接到其他 VPC 中的服务或本地网络。
![图 3: 使用 PrivateLink 的 IPv6删除)
当您为防火墙策略配置网络防火墙政策变量时,可以添加一个或多个 CIDR 表示法的 IPv4 或 IPv6 地址,以覆盖 Suricata HOME_NET的默认值。如果您的防火墙使用集中式部署模型,您可能希望通过以下图例(图 4)将 HOME_NET 覆盖为您检查 VPC 的 CIDR。
![图 4: AWS 网络防火墙 HOME_NET删除)
当您在 AWS 中部署工作负载时,许多资源需要访问互联网。这类流量通常需要进行检查。接下来,我们将探索两种检查您 AWS 资源向互联网出口流量的选项。
在双栈或仅 IPv6 子网中部署的工作负载,可以使用 IPv4 或 IPv6 连接到互联网端点,并且该流量可以通过 AWS 网络防火墙进行检查,如下图(图 5)所示。我们在双栈子网中部署 AWS 网络防火墙终端节点,以允许对 IPv4 和 IPv6 协议的流量进行检查。
使用 AWS 网络防火墙过滤 IPv6 出口流量目前仅适用于公共子网。私有 IPv6子网配置了一个默认路由指向出口仅互联网网关,它不支持入口路由功能,以允许通过防火墙端点对返回流量进行对称检查。
![图 5: IPv6删除)
使用互联网网关进行出口意味着在 IPv6 中,子网是公共的。因此,应该在 AWS 网络防火墙上施加适当的限制,以阻止来源于互联网的入口流量到达工作负载子网。
如果您有具有仅 IPv6 工作负载的子网需要和互联网的 IPv4 服务进行通信,可以使用 AWS 托管的 DNS64 结合 NAT64。如果 DNS记录中未与目的地关联 IPv6 地址,Route 53 解析器将通过在 IPv4 地址前添加预定义的 64:ff9b::/96 前缀(在 中定义)合成一个 IPv6 地址。您的 IPv6-only 服务将数据包发送到合成的 IPv6 地址。然后,您需要通过 NAT 网关路由此流量,该 NAT 服务执行必要的 NAT64转换,以使子网中的 IPv6 服务访问该子网外的 IPv4 服务。
您可以使用 AWS CLI 的 aws ec2 modify-subnet-attribute
或通过 VPC 控制台编辑子网设置来启用或禁用子网上的 DNS64。NAT64 当前在您现有的 NAT 网关或您创建的任何新
NAT 网关上自动可用。有关更多信息,请参阅 DNS64 和 NAT64 文档。
如图 5 所示,防火墙终端节点子网路由到 64:ff9b::/96 指向 NAT 网关,这是 NAT64 工作所必需的。
以下是一个示例 Suricata 规则,用于阻止对 IPv6 CIDR 的入口流量:
drop ip any any -> [2600:1f14:f25:df00::/56] any (flow:established,to_server; msg:"拒绝 IPv6 流量"; sid: 1000006; rev:1;)
请注意,您可以组合这两种模型:集中的 IPv4 出口和分布式的 IPv6 出口。
为了实现集中式的 IPv6 互联网出口模式,您必须使用支持 NAT66 或 IPv6 到 IPv6网络前缀转换(NPTv6)的防火墙或代理,以及以两臂模式部署的网关负载均衡器。网关负载均衡器的双臂部署模型在博客文章
中进行了说明。我们建议在可能的情况下实现前面讨论的分布式出口模式,以提高可扩展性和优化数据处理成本。
接下来,我们将探索如何使用 AWS 网络防火墙检查不同环境或安全区域之间的 IPv6 流量。AWS网络防火墙可以在集中式或分布式模型中使用这种模式。您可以检查 VPC 内的 IPv6 流量,例如,从私有子网到公共子网,或在 VPC 间进行流量检查。
您可以使用一个集中式 VPC 来部署 AWS 网络防火墙,并通过 AWS Transit Gateway 或 AWS Cloud WAN将流量路由到集中式防火墙部署。此模型在 的集中部署部分中进行了说明,适用于 Transit Gateway,以及 。要在双栈环境中使用此架构,您需要 Transit Gateway 或 AWS Cloud WAN 的双栈 VPC附加子网,并且必须更新路由表以包含适当的 IPv6 路由。下图(图 6)显示了 AWS Transit Gateway 部署的示例:
![图 6: 使用 Transit Gateway 的集中式 VPC 到 VPC删除)
下图(图 7)展示了在两个 AWS 区域中 AWS Cloud WAN 部署的示例。通过连接状态检查,我们配置路由以确保源和目标区域之间的流量都经过防火墙。
![图 7: 使用 AWS Cloud WAN 的集中式 VPC 到 VPC删除)
每年 IPv6 的采纳率在增加,许多 AWS 客户在其环境中采用 IPv6 具有多种原因和需求。确保通过流量检查来网络安全仍然是 IPv4-only、双栈和仅 IPv6 环境的首要任务。AWS 网络防火墙提供了检查这两种协议栈的灵活性和能力,而没有额外的成本。如需了解其他 IPv6安全和监控注意事项,请阅读白皮书 中的 IPv6 部分。
于 2024 年 6 月 4 日更新:本文的早期版本省略了使用 DNS64 和 NAT64 的可能性。现已更新以描述在出口检查到 IPv4-only目标时使用 DNS64 和 NAT64 的用法。
![Nick Kniv
Leave a Reply