AWS GWLB集成FortiGate防火墙

AWS VPC 流量集中检测系列--(3)AWS GWLB集成FortiGate防火墙

B站视频:https://www.bilibili.com/video/BV1ee4y147HK/?spm_id_from=333.999.0.0

一、背景

之前在《AWS GWLB集成paloalto防火墙》里面提到过,AWS GWLB集成FortiGate防火墙的官方博客[1]缺少一些配置,导致无法实现防火墙的高可用。这篇文档来介绍一下AWS GWLB如何集成FortiGate防火墙。

FortiGate防火墙集成AWS GWLB需要注意:

  • FortiGate防火墙建议使用6.4.10版本。经过测试目前使用7.0.7版本无法正常工作,但是从6.4.10升级到7.0.7版本,流量是可以正常转发的。另外,不建议对防火墙执行降级操作,防火墙会丢配置,并且图形化界面可能遇到无法切换VDOM的Bug。所以目前生产环境建议使用6.4.10,7.2.2版本可以用于测试。
  • FortiGate防火墙建议配置VDOM,Fortigate默认没有带外管理接口,也就是所有接口默认都会转发数据流量,通过配置VDOM可以将管理流量与数据流量分离,从而简化路由配置。

二、Fortigate VDOM

FortiGate 中有两种类型的 VDOM 模式——Split VDOM 和 Multi-VDOM 。你可以将一个VDOM理解成一个虚拟的防火墙,不同的VDOM之间,默认情况下路由表、流量等都是隔离的。

Split VDOM:启用Split VDOM 模式[2]后,FortiGate 会产生两个 VDOM,一个root VDOM 和 FG-Traffic VDOM。在Split VDOM 模式下,不能添加新的 VDOM。

这个非常实用的一个模式,激活这个模式能快速的将防火墙的管理平面和数据平面进行分离。但是在7.0.8版本之后,FortiGate取消了Split VDOM模式。

  • Root:只能允许管理工作,并且有分离的条目。
  • FG-Traffic:可以提供单独的安全策略并允许流量通过 FortiGate,它仅用于数据流量。

激活split-vdom命令:

config system global
 set vdom-mode split-vdom
end

Multi-VDOM :在7.0.8版本之后,只有Multi-VDOM模式[3]。Split VDOM模式更加适合小型网络,快速的分离管理和数据平面。Multi-VDOM更加适合ISP,可以划分多个租户并进行隔离,或者需要进行流量细分的大型网络。

激活Multi-VDOM模式之后,所有的VDOM配置都会迁移到root VDOM下,root VDOM用于管理防火墙,无法删除。一次只能存在一个管理 VDOM。建议管理 VDOM 具有 Internet 访问权限,否则与管理相关的服务(例如 FortiGuard 更新和查询)将无法工作。

激活multi-vdom命令:

config system global
    set vdom-mode multi-vdom
end

三、实验环境介绍

这里实验环境与之前的《AWS GWLB集成paloalto防火墙》是一样的,只是替换了防火墙产品。

这里AppVpc模拟业务的VPC,APP进出互联网的流量会被引导到SecVpc内的防火墙做安全检测,防火墙允许通过后,流量才能正常通信。

这次实验的核心组件:

GWLB:Gateway Load Balancer与防火墙建立GENEVE[4]隧道,使用UDP 6081来转发数据,这种封装方式让防火墙不用关闭源/目的地址检查,也不用做源/目的NAT的转换。GWLB会在子网创建一个弹性接口,流量通过这个弹性接口来转发。

GWLBe:Gateway Load Balancer endpoint 是由AWS PrivateLink提供的VPC终端节点,可以作为路由表中的下一跳存在,流量送到GWLBe后,会继续送往GWLB背后的实例。

Ingress Route Table:这个路由表关联在IGW上,路由表一般都是关联在子网,这里是AWS 2019年发布的一个功能VPC Ingress Routing[5],让路由表可以关联到IGW上,用于控制入向的流量。

GWLB-Fortigate
GWLB-Fortigate

APP访问互联网流量路径(红色箭头)

  1. AppVpc内的APP1想要访问Internet上的资源,所在子网关联的路由表将默认路由指向了GWLB Endpoint1。
  2. GWLB Endpoint1 使用 AWS PrivateLink 将流量送到到GWLB,这里流量是由AWS来控制,无需用户配置。
  3. GWLB会使用IP数据包的5元组或者3元组哈希来选择实例。GWLB使用GENEVE来封装原始IP流量,并通过UDP 6081发送到防火墙。GENEVE封装可以将所有的IP流量送到实例上,GWLB的侦听组上不需要为每个协议和端口配置侦听器。
    • 当 GWLB 接收到新的 TCP/UDP 流时,它会使用 5 元组流哈希(源 IP、目标 IP、传输协议、源端口、目标端口)从目标组中选择一个健康的设备。随后,GWLB 将该流的所有数据包(正向和反向)路由到同一设备(粘性)。对于非 TCP/UDP 流,GWLB 仍然使用 3 元组(源 IP、目标 IP、传输协议)进行转发决策。
  4. 防火墙收到GENEVE报文,需要解封装流量,然后根据防火墙的安全策略决定是否允许流量通过。
  5. 防火墙重新使用GENEVE封装流量,并发送到GWLB。
  6. GWLB根据 GENEVE TLV字段,选择转发到GWLB Endpoint1,并且发送时会去除GENEVE封装。
    • 为了支持具有重叠 CIDR 的多租户设备,设备需要知道流量的来源。GWLB 还需要跟踪流量并避免用户流量的混合。GWLB 可以通过将每个数据包的类型-长度-值 (TLV) 三元组发送到设备的额外信息(例如 GWLBE/VPCE ID、附件 ID、流 Cookie)来实现这一点。
  7. GWLB Endpoint1接受到流量,查看子网关联路由表,默认路由指向IGW,流量通过IGW访问Internet。

互联网访问APP的流量路径(蓝色箭头)

  1. 客户发起对App1公网地址的访问,流量到达AppVpc的IGW,IGW查看所关联的路由表,将流量送往GWLB Endpoint1。
  2. GWLB Endpoint1 使用 AWS PrivateLink 将流量送到到GWLB。
  3. GWLB使用GENEVE来封装原始IP流量,并通过UDP 6081转发到实例。
  4. 防火墙收到GENEVE报文,需要解封装流量,然后根据防火墙的安全策略决定是否允许流量通过。
  5. 防火墙重新使用GENEVE封装流量,并发送到GWLB。
  6. GWLB根据 GENEVE TLV字段,选择转发到GWLB Endpoint1,并去除GENEVE封装。
  7. GWLB Endpoint1接受到流量,查看子网关联路由表,匹配到local路由,流量送到APP1。

四、 配置部署

4.1 VPC 配置

4.1.1 创建VPC

创建两个VPC

VPC名称  网段
AppVpc  10.10.0.0/16
SecVpc  10.20.0.0/16
4.1.2 创建IGW关联VPC

创建两个IGW,分别关联上VPC

4.1.3 创建子网

AppVpc 创建4个子网

子网名称                网段            备注
AppVpc-GWLBe1-Subnet  10.10.10.0/24  AZ1 的Gateway Load Balancer Endpoint所在子网
AppVpc-App1-Subnet    10.10.20.0/24  AZ1 App1 所在子网
AppVpc-GWLBe2-Subnet  10.10.30.0/24  AZ2 的Gateway Load Bal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值