亚马逊AWS官方博客

利用 Transit Gateway 和 Gateway Load Balancer 实现东西及南北流量的集中检测

对于所有客户而言,安全始终是一个非常重要的话题,特别是网络安全。不论是从企业安全管控落地的视角(例如:基于亚马逊云科技云上安全着陆区),还是合规遵从的视角(例如:网络安全等级保护基本要求中安全通信网络、安全区域边界 的要求;汽车行业安全标准 UN R155R156 中对系统平台后端网络安全的要求等),设计集中的网络安全流量检测中心,构建网络安全边界防护,过滤内部和外部网络访问流量都至关重要。

本文聚焦于设计和建设一个架构清晰的集中的网络安全流量检测中心,实现了在单个亚马逊云科技账号中多个 VPC 的情况下,或者多个亚马逊云科技账号中多个 VPC 的复杂场景下的网络流量深度检测。

本文将介绍如何使用亚马逊云科技的网络服务,包括 Gateway Load Balancer 和 Transit Gateway,以及 FortiGate(或类似网络安全产品)来构建一个安全 VPC,实现集中式的流量检测功能,包括南北流量检测、东西流量检测。同时为了满足某些应用场景,进一步将 Application Load Balancer 集成到安全 VPC 中,可以实现具体的业务服务公网暴露和不同的负载均衡需求。

主要内容包括:

  • 总体架构设计介绍
  • 南北流量检测的实现,包括互联网访问服务端,和服务端访问互联网两种场景
  • 东西流量检测的实现,即 VPC 到 VPC 流量的检测
  • 详细的参考配置过程

一、架构设计介绍

网关负载均衡器(Gateway Load Balancers,以下简称 GWLB) 让您能够部署、扩展和管理虚拟设备,例如防火墙、入侵检测和防御系统以及深度数据包检测系统(本文以 FortiGate 防火墙示例)。GWLB 工作在 OSI 模型的第四层网络层。

GWLB 与网关负载均衡器终端节点(GWLB endpoint,架构图中标注为 GWLBe)配合,将进出应用的流量指向防火墙。具体实现可参考手册中 GWLB 入门介绍章节(https://docs.thinkwithwp.com/zh_cn/elasticloadbalancing/latest/gateway/getting-started.html)。

Transit Gateway 是一个中央交换中心,支持动态和静态路由,实现跨 VPC 以及与本地网络的连接。

应用负载均衡器(Application Load Balancer,以下简称 ALB)工作在 OSI 模型的第 7 层应用层。ALB 侦听器支持路径、HTTP Header、源 IP 等多种条件设置不同的转发规则。

架构图:利用 Transit Gateway 和 Gateway Load Balancer 结合 Fortigate 实现东西及南北流量的集中检测

网络架构说明如下:

  • 应用 VPC 通过 VPC attachment 与 Transit Gateway 连接,VPC 默认路由下一跳指向 Transit Gateway。为了简化,在每个应用 VPC 中选择一个 AZ 创建两个子网,一个用于应用部署,另一个用于 Transit Gateway Attachment。如果是生产环境,我们推荐为 Transit Gateway Attachment 选择至少两个不同的 AZ 来创建子网。
  • Transit Gateway 配置两个路由表:
  1. Egress Route Table 与 2 个应用 VPC Attachment 关联,路由表包括一条默认路由到安全(Security)VPC attachment。
  2. Transit Route Table 与安全 VPC Attachment 关联,2 条路由目的地为 2 个应用 VPC,下一跳是对应的应用 VPC attachment。
  • 集中的安全 VPC 在每个 AZ 中设置四个不同的子网,分别设置为 TGW 子网、NGFW 子网(包括 GWLB,GWLBe,防火墙实例)、ALB 子网、NAT 子网。其中 TGW 子网和 NGFW 子网为私有子网,ALB 子网和 NAT 子网为公有子网。针对不同的服务分别设置子网,除了公有子网和私有子网的考虑外,还能够对每个子网单独设置路由表,来实现流量的精细调度。如果路由表完全一致,可以合并在同一个子网中。
  • 为了确保未来可以在统一的安全 VPC 中部署其他的安全产品(例如:堡垒机、入侵检测、入侵防御),请注意安全 VPC 的 CIDR 的分配。

架构中 VPC 及其子网的参考用途规划如下(具体 VPC、子网和路由的 CDIR 配置可参考架构图中标注,根据实际需求进行调整)。

VPC 名称 VPC 用途 子网名称 子网用途
Security VPC 集中处理南北向和东西向流量 NAT Gateway 部署 NAT Gateway 用于出站互联网访问
NG Firewall 配置 GWLB endpoint,部署防火墙等安全虚拟设备,实现南北向和东西向流量防护
ALB 部署面向互联网的 ALB
TGW 配置 Transit Gateway 实现网络互联的 VPC attachment
APP-1&APP-2
VPC
部署业务应用 APP 部署业务应用
TGW 配置 Transit Gateway 实现网络互联的 VPC attachment

注意:在此架构中,防火墙和应用端(如 Web 服务器)识别的源 IP 是 ALB 地址。如果需要 Web 服务器识别客户端真实 IP,可参考此链接进行设置(https://repost.aws/zh-Hans/knowledge-center/elb-capture-client-ip-addresses)。

二、报文流说明

接下来,我们根据不同场景(南北流量检测,东西流量检测)深入分析业务报文流,来帮助我们理解报文的处理全过程。根据 Internet 发起还是应用发起,两种不同的场景报文流有所差异。

1. Internet 发起访问应用 VPC 场景

Internet 发起访问应用 VPC 报文流向

① Client 通过 Internet 发起访问,希望与部署在 VPC-1/2 中的应用通信。客户端访问流量指向 ALB(或指向应用域名,由 Route53 CNAME/Alias 记录指向 ALB 的 endpoint)。

② ALB 根据侦听器规则和默认算法,选择目标组中的某台 EC2 实例来转发报文。此处我们假定会通过 ALB ENI-1 转发到 VPC-1 中 IP 为 10.1.1.11 的实例。根据 ALB- AZ1 子网路由表,目的地址 10.1.0.0/16 的下一跳为 GWLBe-1(注意此时报文源 IP 已被替换为 ALB ENI-1 IP 地址)。

③ GWLBe-1 收到报文后,使用 AWS PrivateLink 将流量路由到 GWLB。流量通过亚马逊云科技网络安全的路由,无需任何额外配置。

④ GWLB 使用 IP 报文五元组或三元组为该报文流选择后端防火墙实例,确保相同的报文流会落到同一个防火墙实例(对于有状态防火墙来说非常重要),即会话粘连。GWLB 采用 GENEVE 标头封装原始 IP 流量,并通过 UDP 端口 6081 转发到设备。通过 Overlay 封装,将所有 IP 流量转发到防火墙进行检查,不需要为不同端口和协议来配置侦听器。

GWLB 后面的防火墙实例(安装在 EC2 中的防火墙软件)解封装 GENEVE 标头,并根据配置的安全策略决定是否允许该流量。

⑤ 防火墙检查后,重新封装流量并将其转发给 GWLB。

⑥ GWLB 根据 GENEVE TLV 选择哪个 GWLBe,删除 GENEVE 标头并将流量转发到 GWLBe-1。

⑦ GWLBe-1 根据 NGFW- AZ1 子网路由表,转发报文至 TGW。

⑧ 由于安全 VPC 与 Transit Route Table 路由表关联,因此 TGW 根据 Transit Route Table,将目的地址为 10.1.1.5 的报文通过 VPC-1 attachment 转发到 VPC-1。

⑨ 最后,流量到达 VPC-1,数据包的目的地在 VPC CIDR 范围内,本地路由会将流量转到 IP 10.1.1.5 的应用程序实例。

应用到 Internet 响应报文流向

① 根据 VPC-1 路由表,应用程序通过默认路由(0.0.0.0/0)将报文转发到 TGW。

② 由于 VPC-1 与 Egress Route Table 出口路由表关联,TGW 使用出口路由表中的默认路由将报文发送到安全 VPC。

③ 在安全 VPC 中,TGW- AZ1 子网使用 TGW- AZ1 路由表中的默认路由将流量发送到同一可用区(AZ)中的 GWLBe-1。

④ GWLBe-1 收到报文后,使用 AWS PrivateLink 将流量路由到 GWLB。流量通过亚马逊云科技网络安全的路由,无需任何额外配置。

⑤ GWLB 使用 IP 报文五元组或三元组为该报文流选择后端防火墙实例,确保相同的报文流会落到同一个防火墙实例(对于有状态防火墙来说非常重要),即会话粘连。GWLB 采用 GENEVE 标头封装原始 IP 流量,并通过 UDP 端口 6081 转发到设备。通过 Overlay 封装,将所有 IP 流量转发到防火墙进行检查,不需要为不同端口和协议来配置侦听器。

GWLB 后面的防火墙实例(安装在 EC2 中的防火墙软件)解封装 GENEVE 标头,并根据配置的安全策略决定是否允许该流量。

⑥ 防火墙检查后,重新封装流量并将其转发给 GWLB。

⑦ GWLB 根据 GENEVE TLV 选择哪个 GWLBe,删除 GENEVE 标头并将流量转发到 GWLBe-1。

⑧ GWLBe-1 根据 NGFW-AZ1 子网路由表指向 ALB(前面已说明,由于报文源 IP 已被替换为 ALB ENI-1 IP 地址,因此回包目的地指向 ALB)。

⑨ 最后,ALB 根据公有子网默认路由,将报文指向 IGW,通过 Internet 传送回 Client 侧。

2. 应用发起访问 Internet 场景

应用发起访问 Internet 报文流向

① 根据 VPC-1 路由表,应用程序通过默认路由(0.0.0.0/0)将报文转发到 TGW。

② 由于 VPC-1 attachment 与 Egress Route Table 出口路由表关联,TGW 使用出口路由表中的默认路由将报文发送到安全 VPC。

③ 在安全 VPC 中,TGW- AZ1 子网使用 TGW- AZ1 路由表中的默认路由将流量发送到同一可用区(AZ)中的 GWLBe-1。

④ GWLBe-1 收到报文后,使用 AWS PrivateLink 将流量路由到 GWLB。流量通过亚马逊云科技网络安全的路由,无需任何额外配置。

⑤ GWLB 使用 IP 报文五元组或三元组为该报文流选择后端防火墙实例,确保相同的报文流会落到同一个防火墙实例(对于有状态防火墙来说非常重要),即会话粘连。GWLB 采用 GENEVE 标头封装原始 IP 流量,并通过 UDP 端口 6081 转发到设备。通过 Overlay 封装,将所有 IP 流量转发到防火墙进行检查,不需要为不同端口和协议来配置侦听器。

GWLB 后面的防火墙实例(安装在 EC2 中的防火墙软件)解封装 GENEVE 标头,并根据配置的安全策略决定是否允许该流量。

⑥ 防火墙检查后,重新封装流量并将其转发给 GWLB。

⑦ GWLB 根据 GENEVE TLV 选择哪个 GWLBe,删除 GENEVE 标头并将流量转发到 GWLBe-1。

⑧ GWLBe-1 根据 NGFW-AZ1 子网路由表默认路由(0.0.0.0/0,因为 Internet IP 不属于 172.16.0.0/16 或 10.x.0.0/16),指向 NAT- AZ1 的 NAT gateway-1。

⑨ 最后,NAT 网关将源私有 IP 10.1.1.5 翻译转换为自己的 EIP,并根据 NAT- AZ1 子网默认路由,将报文指向 IGW 传送到 Internet(Internet 侧收到的源地址为 NAT 网关 EIP 地址)。

Internet 到应用响应报文流向

① Internet 侧的响应报文,到达 IGW 时,根据目的地址会指向 NAT gateway-1。

② NAT gateway-1 知道该报文的真实目的 IP 为 10.1.1.5,根据 NAT- AZ1 子网路由表,将流量发送到 GWLBe-1。

③ GWLBe-1 收到报文后,使用 AWS PrivateLink 将流量路由到 GWLB。流量通过亚马逊云科技网络安全的路由,无需任何额外配置。

④ GWLB 使用 IP 报文五元组或三元组为该报文流选择后端防火墙实例,确保相同的报文流会落到同一个防火墙实例(对于有状态防火墙来说非常重要),即会话粘连。GWLB 采用 GENEVE 标头封装原始 IP 流量,并通过 UDP 端口 6081 转发到设备。通过 Overlay 封装,将所有 IP 流量转发到防火墙进行检查,不需要为不同端口和协议来配置侦听器。

GWLB 后面的防火墙实例(安装在 EC2 中的防火墙软件)解封装 GENEVE 标头,并根据配置的安全策略决定是否允许该流量。

⑤ 防火墙检查后,重新封装流量并将其转发给 GWLB。

⑥ GWLB 根据 GENEVE TLV 选择哪个 GWLBe,删除 GENEVE 标头并将流量转发到 GWLBE-1。

⑦ GWLBe-1 根据 NGFW- AZ1 子网路由表,转发报文至 TGW。

⑧ 由于安全 VPC 与 Transit Route Table 路由表关联,因此 TGW 根据 Transit Route Table,将目的地址为 10.1.1.5 的报文通过 VPC-1 attachment 转发到 VPC-1。

⑨ 最后,流量到达 VPC-1,数据包的目的地在 VPC CIDR 范围内,本地路由会将流量转到 IP 10.1.1.5 的应用程序实例。

3. 跨 VPC 通信场景(东西向)

VPC-1 访问 VPC-2 报文流向

① 根据 VPC-1 路由表,应用程序通过默认路由(0.0.0.0/0)将报文转发到 TGW。

② 由于 VPC-1 与 Egress Route Table 出口路由表关联,TGW 使用出口路由表中的默认路由将报文发送到安全 VPC。

③ 在安全 VPC 中,TGW- AZ1 子网使用 TGW- AZ1 路由表中的默认路由将流量发送到同一可用区(AZ)中的 GWLBe-1。

④ GWLBe-1 收到报文后,使用 AWS PrivateLink 将流量路由到 GWLB。流量通过亚马逊云科技网络安全的路由,无需任何额外配置。

⑤ GWLB 使用 IP 报文五元组或三元组为该报文流选择后端防火墙实例,确保相同的报文流会落到同一个防火墙实例(对于有状态防火墙来说非常重要),即会话粘连。GWLB 采用 GENEVE 标头封装原始 IP 流量,并通过 UDP 端口 6081 转发到设备。通过 Overlay 封装,将所有 IP 流量转发到防火墙进行检查,不需要为不同端口和协议来配置侦听器。

GWLB 后面的防火墙实例(安装在 EC2 中的防火墙软件)解封装 GENEVE 标头,并根据配置的安全策略决定是否允许该流量。

⑥ 防火墙检查后,重新封装流量并将其转发给 GWLB。

⑦ GWLB 根据 GENEVE TLV 选择哪个 GWLBe,删除 GENEVE 标头并将流量转发到 GWLBE-1。

⑧ GWLBe-1 根据 NGFW- AZ1 子网路由表(目的地为 10.2.1.5),转发报文至 TGW。

⑨ 由于 Security VPC 与 Transit Route Table 路由表关联,因此 TGW 根据 Transit Route Table,将目的地址为 10.2.1.5 的报文通过 VPC-2 attachment 转发到 VPC-2。

⑩ 最后,流量到达 VPC-2,数据包的目的地在 VPC CIDR 范围内,本地路由会将流量转到 IP 10.2.1.5 的应用程序实例。

VPC-2 响应 VPC-1 报文流向

① 根据 VPC-2 路由表,应用程序通过默认路由(0.0.0.0/0)将报文转发到 TGW。

② 由于 VPC-2 与 Egress Route Table 出口路由表关联,TGW 使用出口路由表中的默认路由将报文发送到安全 VPC,目的地为 TGW ENI-1(注意:此处必须启用 Transit Gateway appliance mode,否则报文会因为 AZ 亲和性被转发到 TGW ENI-2)。

③ 在安全 VPC 中,TGW- AZ1 子网使用 TGW- AZ1 路由表中的默认路由将流量发送到同一可用区(AZ)中的 GWLBe-1。

④ GWLBe-1 收到报文后,使用 AWS PrivateLink 将流量路由到 GWLB。流量通过亚马逊网络安全的路由,无需任何额外配置。

⑤ GWLB 使用 IP 报文五元组或三元组为该报文流选择后端防火墙实例,确保相同的报文流会落到同一个防火墙实例(对于有状态防火墙来说非常重要),即会话粘连。GWLB 采用 GENEVE 标头封装原始 IP 流量,并通过 UDP 端口 6081 转发到设备。通过 Overlay 封装,将所有 IP 流量转发到防火墙进行检查,不需要为不同端口和协议单独配置侦听器。

GWLB 后面的防火墙实例(安装在 EC2 中的防火墙软件)解封装 GENEVE 标头,并根据配置的安全策略决定是否允许该流量。

⑥ 防火墙检查后,重新封装流量并将其转发给 GWLB。

⑦ GWLB 根据 GENEVE TLV 选择哪个 GWLBe,删除 GENEVE 标头并将流量转发到 GWLBe-1。

⑧ GWLBe-1 根据 NGFW- AZ1 子网路由表(目的地为 10.1.1.5),转发报文至 TGW。

⑨ 由于安全 VPC 与 Transit Route Table 路由表关联,因此 TGW 根据 Transit Route Table,将目的地址为 10.1.1.5 的报文通过 VPC-1 attachment 转发到 VPC-1。

⑩ 最后,流量到达 VPC-1,数据包的目的地在 VPC CIDR 范围内,本地路由会将流量转到 IP 10.1.1.5 的应用程序实例。

在安全防护/流量检测类应用中,需要特别注意对称路由问题,非对称路由可能会导致防火墙丢包。需要在 Transit Gateway attachments 配置中启用 appliance mode。具体内容可以参考链接(https://thinkwithwp.com/cn/blogs/networking-and-content-delivery/introducing-aws-gateway-load-balancer-supported-architecture-patterns/ ),不再赘述。

为了实现 AZ 级别的保护,在 GWLB 中启用 Cross-zone load balancing 能有效地规避某个 AZ 所有虚拟安全设备故障导致的工作异常情况。具体的说明可以参考链接(https://thinkwithwp.com/cn/blogs/networking-and-content-delivery/scaling-network-traffic-inspection-using-aws-gateway-load-balancer/)。

三、参考配置

前面我们介绍了集中的网络安全流量检测中心的架构设计和不同场景下报文流的详细介绍。接下来,我们根据此架构,以 FortiGate 作为 NGFW 为例,介绍具体的配置细节。

1. 基础网络配置(VPC、子网和路由表)

基础配置包括创建 VPC、子网和路由表。实际配置的参数与架构图中的示例一致,可以视需要进行调整。下面展示部分配置(注意需要先创建完 TGW、GWLB、NAT、IGW 等服务,才能正常在路由表中配置对应的下一跳目标)。

VPC 示例:2 个应用 VPC,1 个安全 VPC(实现集中式的流量检测功能)

安全 VPC 子网设计和对应的路由表

应用 VPC 子网设计和对应的路由表

子网列表和 IP CIDR

路由表列表(与架构图中路由配置一致)

ALB-AZ1 子网路由示例(vpce-xxxx 为 GLB endpoint)

2. 以 FortiGate 为例,说明 GWLB 负载均衡器和防火墙目标组配置

此架构下,将创建 2 组 GWLB 分别关联 2 对不同 Fortigate 防火墙,分别对南北向以及东西向的业务流量进行安全检测和扫描。主要目的是因为南北向业务主要是外网,东西向则是内网业务流量,从整体安全架构考虑设计独立的业务流量处理架构更符合客户云端安全架构设计。

在业务初期,防火墙采用 VDOM 技术,将 2 台防火墙虚拟成 6 组防火墙,分为 NS-Traffic VDOM 和 EW-Traffic VDOM 对应设备处理流量的角色;另外 2 组为 Root VDOM 作为设备管理流量。接口采用物理独占模式,port1 作为管理口分配Root VDOM,port2 作为南北向流量处理业务接口分配 NS-Traffic VDOM,port3  作为东西向流量处理业务接口分配 EW-Traffic VDOM。

业务 VPC endpoint 也采用业务流量分离的模式,分别创建 NS-Endpoint 和 EW-Endpoint 区分不同的业务流量,每个 Endpoint 都根据业务部署情况采用冗余跨 AZ 模式部署,实现全冗余以及安全业务流量分离的高可用,业务隔离,安全防护整体云端安全架构。

GWLB 负载均衡器配置

GWLB 在创建时 Mapping 到 Security 规划的 NGFW 子网,目标组采用 GENEVE 协议,并在两个 NGFW 子网分别创建 GWLB endpoints(GWLBe)。

GWLB 配置

GWLB 目标组配置,注意选择 GENEVE 协议

GWLB endpoints(GWLBe)配置

GWLB ENI 地址,用于下面于 FortiGate 建立 NS(North South-南北)方向GENEVE 隧道

GWLB ENI 地址,用于下面于 FortiGate 建立 EW(East West-东西)方向 GENEVE 隧道

FortiGate 防火墙全局关键配置

FortiGate 设备 license 需要设备支持 Vdom 划分,用于隔离南北向和东西向的业务流量的安全扫描,此外还有就是隔离南北向和东西向的业务路由引流。

config system vdom-property
    edit "root"
        set description "property limits for vdom root"
        set snmp-index 1
    next
    edit "EW-Traffic"
        set description "property limits for vdom EW-Traffic"
        set snmp-index 3
    next
    edit "NS-Traffic"
        set description "property limits for vdom NS-Traffic"
        set snmp-index 2
    next
End

全局开启接口 HTTP 报文相应,默认端口 TCP 8008,用于 GWLB 建议 Geneve 隧道的健康检查。

config system probe-response
    set mode http-probe
end

接口配置

config system interface
    edit "port1" (作为管理接口)
        set vdom "root"
        set ip x.x.x.x        
        set allowaccess ping https ssh
        set type physical
        set snmp-index 1
        set mtu-override enable
        set mtu 9001
    next
    edit "port2"
        set vdom "NS-Traffic"
        set ip x.x.x.x   (作为南北向业务接口)
        set allowaccess ping probe-response
        set type physical
        set snmp-index 6
        set defaultgw disable
        set mtu-override enable
        set mtu 9001
    next
    edit "port3"
        set vdom "EW-Traffic"
        set ip x.x.x.x    (作为东西向业务接口)
        set allowaccess ping probe-response
        set type physical
        set snmp-index 7
        set defaultgw disable
        set mtu-override enable
        set mtu 9001
next

管理路由配置(root vdom)

config router static
    edit 1
        set gateway x.x.x.1
        set device "port1"
    next
end

FortiGate NS VDOM 隧道配置以及安全策略

config system geneve
    edit "geneve-ns-1"
        set interface "port2"
        set type ppp
        set remote-ip x.x.x.x  (GWLB 配置后查看 GWLBe 地址)
    next 
    edit "geneve-ns-2"
        set interface "port2"
        set type ppp
        set remote-ip x.x.x.x
    next
End
config router static
    edit 1
        set dst x.x.x.x x.x.x.x (回指 GWLBe 网段的路由)
        set gateway x.x.x.x
        set device "port2"
    next
    edit 2
        set device "geneve-ns-1"
    next
    edit 3
        set device "geneve-ns-2"
    next
end

策略路由用于防火墙进行安全检测后将业务流量回给 GWLB

config router policy
    edit 1
        set input-device "geneve-ns-1"
        set output-device "geneve-ns-1"
    next
    edit 2
        set input-device "geneve-ns-2"
        set output-device "geneve-ns-2"
    next
End

config system zone
    edit "NS-Traffic-Zone"
        set interface "geneve-ns-1" "geneve-ns-2"
    next
End

config firewall policy
    edit 1
        set name "NS-Traffic-Policy"
        set srcintf "NS-Traffic-Zone"
        set dstintf "NS-Traffic-Zone"
        set action accept
        set srcaddr "all"
        set dstaddr "all"
        set schedule "always"
        set service "ALL"
        set utm-status enable
        set ssl-ssh-profile "deep-inspection"
        set av-profile "g-default"
        set ips-sensor "g-default"
        set logtraffic all
        set tcp-mss-sender 1000  (如果客户部署在亚马逊云科技北京和宁夏区域,需要此配置用于优化 ALB 传输过来流量滑动窗口大小,此参数设大小设置为参考值,具体需要根据业务访问情况进行调优,建议范围 700-1300)
        set tcp-mss-receiver 1000
    next
end

FortiGate EW VDOM 隧道配置以及安全策略

config system geneve
    edit "geneve-ns-1"
        set interface "port3"
        set type ppp
        set remote-ip x.x.x.x (GWLB 配置后查看 GWLBe 地址)
    next
    edit "geneve-ns-2"
        set interface "port3"
        set type ppp
        set remote-ip x.x.x.x
    next
End

config router static
    edit 1
        set dst x.x.x.x x.x.x.x (回指 GWLBe 网段的路由)
        set gateway x.x.x.x
        set device "port3"
    next
    edit 2
        set device "geneve-ew-1"
    next
    edit 3
        set device "geneve-ew-2"
    next
end

策略路由用于防火墙进行安全检测后将业务流量回给 GWLB

config router policy
    edit 1
        set input-device "geneve-ew-1"
        set output-device "geneve-ew-1"
    next
    edit 2
        set input-device "geneve-ew-2"
        set output-device "geneve-ew-2"
    next
End
config system zone
    edit "NS-Traffic-Zone"
        set interface "geneve-ew-1" "geneve-ew-2"
    next
End

config firewall policy
    edit 1
        set name "EW-Traffic-Policy"
        set srcintf "EW-Traffic-Zone"
        set dstintf "EW-Traffic-Zone"
        set action accept
        set srcaddr "all"
        set dstaddr "all"
        set schedule "always"
        set service "ALL"
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set av-profile "g-default"
        set ips-sensor "g-default"
        set logtraffic all
next
end

3. TGW 配置

TGW 创建三个 VPC attachments、Transit Route Table、Egress Route Table。

  • Transit Route Table 与安全 VPC attachment 关联(安全 VPC 到 TGW 的流量根据 Transit Route Table 进行转发),根据目标 IP CIDR 分别指 VPC-app-1 和 VPC-app-2。
  • Egress Route Table 与 VPC-app-1 attachment 和 VPC-app-2 attachment 关联(VPC-app-1 和 VPC-app-2 到 TGW 的流量根据 Egress Route Table 路由条目进行转发),默认路由指向安全 VPC。

TGW attachments 配置(启用 Appliance Mode)

Transit 路由表与 Security VPC attachment 关联

Transit-route-table 路由

Egress 路由表与 VPC-app-1 attachment 和 VPC-app-2 attachment 关联

Egress-route-table 路由

4. ALB 配置

创建面向 Internet ALB,Mapping 到安全 VPC 中规划的两个 ALB 公有子网(172.16.1.16/28 和 172.16.2.16/28)。目标组创建时选择 Other private IP address,将 VPC-app-1 和 VPC-app-2 的应用 EC2 以私有 IP 方式注册到目标组,示例中为 10.1.1.11 和 10.2.1.12。

每个 AZ 选择一个公有子网 Mapping

创建侦听器

目标组选择 Other private IP address,以 IP 方式注册 APP VPC 中的 EC2

5. 业务验证

这里分别验证一下南北方向和东西方向的业务流量。这里因为测试配置原因,部分截图中 IP 有变化,不影响效果验证。

南北方向业务流量访问

业务请求被放行,正常访问示例中的网站业务

防火墙记录从 Internet 请求访问的业务信息,命中前面设置 NS-Traffic-Policy

有害请求被拒绝

Server 主动出访某带病毒网站,流量直接被 reset 同时防火墙记录 deny 相关信息以及 server 的 IP 作为审计溯源

东西方向业务流量访问

东西方向正常互访流量放行

防火墙可以记录 Server 互访请求信息,并且命中我们前面设置 EW-Traffic-Policy

本文详细描述了集中的网络安全流量检测中心的架构设计和思考以及报文流说明,并在单个亚马逊云科技账号下多个 VPC 的情况中,以 FortiGate 为例子详细说明了具体的配置过程,充分展现了利用亚马逊云科技 Transit Gateway 和 Gateway Load Balancer 结合 FortiGate 实现东西及南北流量的集中检测的完整图景。

四、参考链接

https://thinkwithwp.com/cn/blogs/networking-and-content-delivery/centralized-inspection-architecture-with-aws-gateway-load-balancer-and-aws-transit-gateway/

https://thinkwithwp.com/cn/blogs/networking-and-content-delivery/introducing-aws-gateway-load-balancer-supported-architecture-patterns/

https://thinkwithwp.com/cn/blogs/networking-and-content-delivery/scaling-network-traffic-inspection-using-aws-gateway-load-balancer/

本篇作者

刘钢

Fortinet 云售前架构师,负责云端 Fortinet Security Solution。具有 13 年网络安全行业工作经验,先后从事于传统网络、应用负载、网络及应用安全等相关架构设计。

彭金冬

亚马逊云科技解决方案架构师,负责电商行业客户的架构设计和技术支持。

金忠敏

亚马逊云科技高级解决方案架构师,现在专注于云计算解决方案和架构的工作。具有超过 17 年的 IT 从业经验,曾从事软件开发、售后支持、系统交付、售前等工作。参与过很多大型项目架构设计和实施交付。目前专注于汽车行业。

潘浏阳

亚马逊云科技解决方案架构师,主要负责 Auto 行业客户的架构优化和迁移等工作,拥有超过 10 年的项目实施和运维经验。