亚马逊AWS官方博客

Network Firewall 部署小指南(一)部署模型

如果您想检查和过滤互联网出站和入站流量(南北向),可以将 Network Firewall(以下简称 NFW,或防火墙)部署到您的 VPC 网络中。NFW 是一项高度可用、托管的网络防火墙服务,它可以查看和控制整个 VPC 的 3-7 层网络流量。您可以进行域名/URL、IP 地址和内容过滤,阻止可能的数据泄露和已知的恶意软件通信,帮助企业满足合规性要求。

在使用 NFW 之前,您应当了解 NFW 部署的主要架构模型,从而根据自身需求选择最合适的模型。本篇博客将介绍用于保护面向互联网应用出站和入站的场景下两种常见的防火墙部署模型。

  • 分布式部署模型 — NFW 部署到每个业务 VPC 中。这种模型适用于具有单个业务 VPC 的简单环境,或者对每个业务 VPC 的防火墙策略有非常具体的要求。这种方式可能会导致较高的管理开销,因为每个业务 VPC 都需要单独配置和维护其自己的防火墙。
  • 集中式部署模型 — NFW 部署到一个集中式 VPC 中,我们将此 VPC 称为检查 VPC。该 VPC 通过 Transit Gateway(以下简称 TGW)连接到南北向(来自互联网和 on-premises 的入站和出站)或东西向(VPC 到 VPC)流量。这种模型更适合具有多个业务 VPC 的环境,并且希望集中管理防火墙安全策略。

出站流量检查分布式部署模型

您应当为 NFW 单独创建子网,同时 NFW 子网不应包含任何其他资源,因为 NFW 无法检查来自防火墙子网内的流量。子网的掩码长度最小可以为/28 位,因为一台 NFW 在每个可用区只需要占用一个 IP 地址。

NFW 不会为您执行 IP 地址转换,此功能将通过 NAT 网关处理。如果您选择在您的账户中同时创建 NAT 网关和 NFW,则会一对一免除标准 NAT 网关处理费用和每小时使用费用

我们建议把 NFW 放置在 NAT 网关和私有子网之间。因为在这种架构下,NFW 可以看到源 IP,这样您能基于私有子网中的 EC2 或容器的 IP 地址做细粒度管控。将 NFW 放置在 NAT 网关和 IGW 之间是可行的。然而在这种架构下,NFW 不能看到真实的源 IP,它看到的是 NAT 网关的私有 IP。

无论您是否需要进行入站流量检查,建议将 ELB 和 NAT 网关所在的子网进行分离。当 ELB 和 NAT 网关位于同一个公有子网上时,如果您不需要进行入站检查,公有子网的路由设置会导致 ELB 的流量也经过 NFW。如果您需要进行入站检查,将 NFW 部署在 ELB 和私有子网之间会带来一些限制。下文中将描述入站流量检查的推荐部署方式。

为了实现高可用,我们建议在多个可用区部署 NFW 和 NAT 网关。如果某个 NFW 或 NAT 网关不可用,那么经过受影响的 NFW 或 NAT 网关的流量可能会在该可用区被丢弃。如果一个可用区不可用,则该可用区中的 NFW 和 NAT 网关将发生故障,剩余流量都将从另一个可用区中的 NFW 和 NAT 网关通过。

为了简化此模型中 NFW 的部署和管理,可以使用 Firewall Manager。Firewall Manager 允许您将集中创建的防护策略自动应用到多个账户,从而集中管理您的不同防火墙。Firewall Manager 支持 NFW 的分布式和集中式部署模型。相关详细信息,请参阅博客《如何使用 Firewal Manager 部署 Network Firewall》。

NFW 支持出站 TLS 检查功能,可以对出站流量进行深度数据包检查(DPI)。您可以更加细粒度地检查并控制出站的网络流量。通过解密和检查网络流量,您可以执行策略来保护数据、确保符合监管要求,并提高在 AWS 上的安全态势。相关详细信息,请参阅博客《TLS 检查配置适用于加密的出站流量和 AWS 网络防火墙》。

出站流量检查分布式部署模型的考虑因素总结如下:

  • 为 NFW 单独创建子网,NFW 子网不应包含任何其他资源。
  • 建议把 NFW 部署在 NAT 网关和私有子网之间。
  • NAT 网关处理费用和每小时使用费用能和 NFW 一对一减免。
  • 将 ELB 和 NAT 网关所在的子网进行分离。
  • 建议把 NFW 和 NAT 网关部署在多个可用区,匹配工作负载所在的可用区。
  • 使用 Firewall Manager 对 NFW 进行集中部署和管理。
  • 开启对出站流量进行深度数据包检查(DPI)。

出站流量检查集中式部署模型

如果在每个业务 VPC 中部署 NFW 和 NAT 网关可能会非常昂贵,因为您需要为每个 NFW 和 NAT 网关支付每小时费用。集中式部署可以成为降低成本的有效选择。要进行集中化,您可以在网络账户中创建一个单独的检查 VPC,在这个 VPC 中部署 NFW 和 NAT 网关,并使用 TGW 将所有出站流量从业务 VPC 路由到检查 VPC。

检查 VPC 类似于一个 DMZ 区,所有业务 VPC 的互联网出站流量都首先到达此检查- VPC。在这里,流量将通过防火墙进行过滤和 NAT 转换,然后再路由到互联网。所有业务 VPC 的出站 IP 地址都将被统一翻译成检查 VPC 中 NAT 网关的 EIP。这种模型将网络安全集中化管理,消除了单独管理每个业务 VPC 的需要。

当您使用集中式部署模型时,与分布式部署模型相比,您需要支付额外的 TGW 数据处理费用。在某些情况下,当您从业务 VPC 通过检查 VPC 发送大量数据时,将 NFW 和 NAT 网关放置在业务 VPC 本地以避免 TGW 数据处理费用可能会更具成本效益。

除了需要在检查 VPC 中为 NFW 单独创建子网,您应当为 TGW 单独创建子网,同时 TGW 子网不应包含任何其他资源。与 NFW 一样,TGW 子网的掩码长度最小可以为/28 位,因为 TGW 在每个可用区只需要占用一个 IP 地址。

出站流量检查集中式部署模型的考虑因素总结如下,部分考虑因素与出站分布式保持一致:

  • 集中式部署可以节省 NFW 和 NAT 网关的每小时使用费用,但会增加 TGW 数据处理费用。
  • 所有业务 VPC 的出站 IP 地址都将被统一翻译成检查 VPC 中 NAT 网关的 EIP。
  • 在检查 VPC 中,为 TGW 单独创建子网。在选择 TGW Attachment 子网时,应包括 TGW 所有的子网。
  • 在检查 VPC 中,为 NFW 单独创建子网,NFW 子网不应包含任何其他资源。
  • 建议把 NFW 放置在 NAT 网关和 TGW 之间。
  • NAT 网关处理费用和每小时使用费用能和 NFW 一对一减免。
  • 将检查 VPC 中的 ELB 和 NAT 网关所在的子网进行分离。
  • 建议把 NFW、NAT 网关和 TGW 部署在多个可用区,匹配工作负载所在的可用区。
  • 开启对出站流量进行深度数据包检查(DPI)。

入站流量检查分布式部署模型

我们建议将 NFW 放置在 ELB(包括 ALB,NLB)和 IGW 之间。这样,防火墙可以查看客户端 IP 地址并能检查所有入站流量。入站流量通过 IGW 的 Ingress 路由表路由至 NFW。

NFW 部署在 ELB 和私有子网之间是可行的。然而在这种架构下,NFW 在处理入站数据包时将无法看到真正的客户端 IP 地址,NFW 只能看到 ELB(包括- ALB,NLB)的私网 IP 地址。如果使用 NLB,需关闭保留客户端 IP 地址功能。此外,由于 ELB 会事先进行流量检查,NFW 只会看到 ELB 放行的流量。

NFW 可以对入站流量进行深度数据包检查(DPI)。使用存储在 ACM 中的 TLS 证书,NFW 可以解密数据包,执行 DPI,并重新加密数据包。相关详细信息,请参阅博客《针对加密流量的 TLS 检查配置和 AWS 网络防火墙》。

入站流量检查分布式部署模型的考虑因素总结如下,部分考虑因素与出站分布式保持一致:

  • 为 NFW 单独创建子网,NFW 子网不应包含任何其他资源。
  • 建议把 NFW 部署在 ELB 和 IGW 之间。
  • 将 ELB 和 NAT 网关所在的子网进行分离。
  • 建议把 NFW 和 ELB 部署在多个可用区,匹配工作负载所在的可用区。
  • 使用 Firewall Manager 对 NFW 进行集中部署和管理。
  • 开启对入站流量进行深度数据包检查(DPI)。

入站流量检查集中式部署模型

在这种架构中,入站流量在到达业务 VPC 之前会经过检查 VPC。检查 VPC 类似于一个 DMZ 区,所有去往业务 VPC 的互联网入站流量都首先到达此检查 VPC,然后再通过 TGW 路由到每个业务 VPC。这种模型将网络安全集中化管理,消除了单独管理每个业务 VPC 的需要,而且节省了 NFW 每小时费用。在某些情况下,当从互联网发送大量数据给业务 VPC 时,将 NFW 放置在业务 VPC 本地以避免 TGW 数据处理费用可能会更具成本效益。

检查 VPC 中的 ELB 目标组必须使用 IP 类型。如果使用 ALB,业务 VPC 中的工作负载可以通过 HTTP 请求中的 X-Forwarded-For 头字段获得客户端 IP 地址。如果使用 NLB,则须禁用保留客户端 IP 地址功能,工作负载通过 Proxy Protocol 版本 2 获得客户端 IP 地址。

建议在每个业务 VPC 中部署 ELB,这样不仅可以处理工作负载的自动扩展,还可以支持 EKS 环境中的 Load Balancer Controller 部署。如果在业务 VPC 中使用 ALB,由于 ALB 的 IP 地址可能会发生变化,指定检查 VPC 中 ELB 的 IP 作为目标会带来一些挑战。您可以参考博客《使用 AWS Lambda 为应用负载均衡器启用静态 IP 地址》来解决这个问题。

入站流量检查集中式部署模型的考虑因素总结如下,部分考虑因素与入站分布式和出站集中式保持一致:

  • 集中式部署可以节省 NFW 的每小时费用,但会增加 TGW 数据处理费用。
  • 检查 VPC 中的 ELB 目标组必须使用 IP 类型。ALB 使用 XFF 获取客户端 IP,NLB 使用 PPv2 获取客户端 IP。
  • 建议在每个业务 VPC 中部署 ELB。
  • 在检查 VPC 中,为 TGW 单独创建子网。在选择 TGW Attachment 子网时,应包括 TGW 所有的子网。
  • 在检查 VPC 中,为 NFW 单独创建子网,NFW 子网不应包含任何其他资源。
  • 建议把 NFW 部署在 ELB 和 IGW 之间。
  • 将检查 VPC 中的 ELB 和 NAT 网关所在的子网进行分离。
  • 建议把 NFW、ELB 和 TGW 部署在多个可用区,匹配工作负载所在的可用区。
  • 开启对入站流量进行深度数据包检查(DPI)。

出站和入站流量检查分布式部署模型

接下来,我们将结合出站分布式和入站分布式两个模型来进行部署。

如上图所示,在每一个可用区中,您需要为出站防火墙和入站防火墙分别创建子网,并部署各自的 Egress NFW 和 Ingress NFW。同时,NAT 网关和 ELB 的子网需要进行分离创建。如果您的 NAT 网关和 ELB 位于同一个公有子网上,您需要考虑拆分子网,并重新部署 NAT 网关或 ELB。其他考虑因素可参考上文出站分布式和入站分布式模型所述。

出站和入站流量检查集中式部署模型

最后,我们将结合出站集中式和入站集中式两个模型来进行部署。

与上一个组合模型说明的要点类似,在检查 VPC 的每个可用区中,您需要为出站和入站流量检查场景分别部署 Egress NFW 和 Ingress NFW。同时,NAT 网关和 ELB 所在的子网需要进行分离。其他考虑因素可参考上文出站集中式和入站集中式模型所述。

总结

在处理互联网南北向流量检查的场景中,本文介绍了四种推荐的部署模型,每种模型都有其自身的优势和劣势:出站流量检查分布式、出站流量检查集中式、入站流量检查分布式和入站流量检查集中式。此外,还描述了在四种模型之上衍生出的两种组合模型。在使用 Network Firewall 之前,您应当根据自身的安全需求和运维需求来选择适合您的模型。最后,建议您采用分层次深度防御方法,与其他 AWS 安全服务相结合使用,例如 Security Groups, NACLs, WAF, Shield Advanced, Route 53 Resolver DNS Firewall, VPC Flow Logs, Traffic Mirroring 等。

参考文档

[1] 构建可扩展和安全的多 VPC AWS 网络基础设施

[2] AWS Network Firewall 最佳实践

[3] VPC 路由增强和 GWLB 部署模式

[4] 为互联网入站流量设计您的防火墙部署方案

本篇作者

刘一白

亚马逊云科技解决方案架构师,负责亚马逊云科技网络相关的服务和产品。在企业网、数据中心和云网络有着丰富的实践经验,拥有 AWS Certified Advanced Networking Specialty 和 Cisco Certified Internetwork Expert 等网络技术相关认证。