亚马逊AWS官方博客

亚马逊云科技(中国区)网关负载均衡服务集成FortiGate安全网关扩展安全服务性能

一、概述

FortiGate安全网关提供业界领先的网络安全防御解决方案,集成网络边界全面的网络和应用层安全防御功能,如网络入侵防御、网络防病毒、网络应用控制、网络IP信誉管理等安全功能,为VPC内业务系统提供网络流量可视化和网络安全保障。当采用FortiGate安全网关作 为VPC业务系统的出入口网关时,一组FortiGate安全网关可能成为业务系统互联出入口的瓶颈,毕竟云平台上FortiGate安全网关实例性能依赖云主机计算资源。

Amazon 网关负载均衡(GWLB)为亚马逊云科技提供的托管型4层负载均衡服务,Amazon网关负载均衡将VPC 出入互联网流量或虚拟私有网关VGW流量负载分担到多个FortiGate安全网关,横向扩展FortiGate网络安全网关处理性能,同时也保障了FortiGate安全网关的高可用性。

Amazon 网关负载均衡服务(GWLB)在亚马逊云科技(中国区)已发布,本文档在亚马逊云科技 宁夏区完成网关负载均衡服务集成FortiGate安全网关扩展安全服务性能应用验证。

 

二、亚马逊云科技 网关负载均衡工作原理

Amazon GWLB常用于两种场景,IGW互联网出口南北向流量安全检查 和  VPC间东西向安全流量检查。无论是哪种应用场景,通过修改VPC路由表路由条目,调整数据转发路径,使需要安全检查的子网流量下一跳指向GWLB,从而使流量穿过安全网关进行安全检查或有效控制。GWLB和FortiGate安全网关之间的流量使用GENEVE协议封装,数据端口UDP 6081。

GWLB部件:

  • Customer VPC:应用程序所在VPC
  • GWLB endpoint: 放置在Customer VPC的一块虚拟网卡,作为路由下一跳,跨AZ冗余需要在每个AZ有一个GWLB endpoint。
  • Ingress router: 绑定IGW的Internet入口路由表
  • GWLB:放置在安全区的4层负载均衡服务,每个可用区会创一个网关并且获得一个地址,用于与FortiGate安全网关建立GENEVE 隧道。
  • GWLB private link: Customer VPC和 Security VPC间不需要VPC peer, GWLB endpoint 通过GWLB private link连接到GWLB负载均衡

入向流量转发流程(红色路径):

  • 入口流量进入IGW ingress 路由表
  • Ingress 路由表把业务服务器网关路由下一跳指向GWLB endpoint虚拟网卡
  • GWLB endpoint转发数据到GWLB, GWLB 把流量负载到FortiGate,FortiGate把流量回送到GWLB。
  • GWLB 把数据回送到GWLB endpoint, GWLB endpoint转发数据到应用实例。

出向流量转发流程(蓝色路径):

  • 应用实例路由表下一跳GWLB endpoint。
  • GWLB endpoint转发数据到GWLB, GWLB 把流量负载到FortiGate,FortiGate把流量回送到GWLB,GWLB 把数据回送到GWLB endpoint。
  • GWLB endpoint 转发到IGW
  • IGW把出向流量转发出互联网

 

三、Fortigate集成GWLB 测试

本测试为手动配置操作步骤,也可通过亚马逊云科技命令行或CloudFormation  快速部署,防火墙扩容可结合弹性扩容服务自动扩展GWLB 负载目标。

本测试所使用的资源及服务:

  • GWLB 服务 (亚马逊云科技 托管服务,在EC2菜单个点击阅)
  • FortiGate-Amazon 公有云版网络网关( FortiGate 6.2.2以上版本,本文档采用亚马逊云科技中国区市场上线版本6.4.5)

(测试拓朴)

VPC配置

  • 创建两个VPC

APP-VPC                            10.0.0.0/16

SEC-VPC                            10.1.0.0/16

  • 创建子网

APP-VPC 4个子网

sub1-z1-gwlb 10.0.1.0/24 可用区1 GWLB endpoint 子网
sub1-z1-app 10.0.11.0/24 可用区1 应用子网
sub2-z2-gwlb 10.0.2.0/24 可用区2 GWLB endpoint 子网
sub2-z2-app 10.0.12.0/24 可用区2 应用子网

SEC-VPC 4个子网

sec-sub2-z1-sec 10.1.2.0/24 可用区1 GWLB子网
sec-sub1-z1-pub 10.1.1.0/24 可用区1 管理网子网
sec-sub2-z2-sec 10.1.12.0/24 可用区2 GWLB子网
sec-sub1-z2-pub 10.1.11.0/24 可用区2管理网子网

  • 创建路由表

APP-VPC 3个路由表:

IGW ingress路由表关联IGW, 不需要关联其它子网,控制ingress路由。

GWLBe路由关联两个 GWLBe子网

APP路由表关联应用子网

验证业务服务器

当前业务服务器不经过GWLB和FortiGate ,绑定弹性IP 161.189.124.220和52.83.126.49,直接访问在区域1和区域2的两台WEB服务器


部署FortiGate

此测试FortiGate加载两个网卡,一个网卡用于管理,一个网卡用于GWLB连接。在防火墙上去互联网和GWLB都存在默认网关,启用VDOM把管理流量和GWLB流量分开。 VM-V版本启用分离VDOM.

GWLB负载目标群组选择对象为实例名或网卡IP, 如果选择实例名,GWLB 连接到FortiGate实例的主网卡地址。在部署FortiGate时,把主网卡设置成与GWLB互连网卡,第二个网卡用于管理和Internet访问网卡,在初始化FortiGate 时 把默认路由从主网卡换到第二块网卡。

  • 创建FortiGate 实例 ,实例规格根据license选择

  • 配置实例主网卡,添加第二块网卡, 主网卡为GWLB子网,第二块网卡为Public子网,在用户配置文件里添加FortiGate配置命令行,调整默认路由出口,启用VDOM,和修改接口VDOM。



用户数据配置脚本:

config system interface
edit "port1"
set defaultgw disable
set allowaccess ping https ssh fgfm probe-response
next
edit "port2"
set mode dhcp
set allowaccess ping https ssh 
set defaultgw enable
next
end
config system global
set vdom-mode split-vdom
end
config global
config system interface
edit "port1"
set vdom "FG-traffic"
end
end
  • 分配弹性IP 给FortiGate第二块网卡,激活License。


创建GWLB和负载目标群组

  • EC2服务,创建负载均衡器
  • 选择Gateway Load Balancer

  • 选择SEC VPC, FortiGate如果是双可用区部署,就选择两个可用区,每个可用区用单独的地址与同可用区的FORTIGATE 建立GENEVE隧道

  • 选择目标为实例,检测协议TCP ,端口443, FortiGate port2上开启HTTPS管理服务

  • 注册目标组,选择所有FortiGate实例

  • 完成GWLB创建,启用跨区域负载均衡, 在负载均衡描述栏目下的属性字段配置。

  • 查看GWLB 网卡地址。创建完GWLB后,GWLB在SEC VPC 私有子网创建两个虚拟网卡,网卡描述里包含ELB gwy 标记,记下这两个网卡的IP。

点击菜单EC -> 网络与安全 -> 网络接口

FortiGate与GWLB对接

  • 创建GWLB接口
config vdom
edit FG-traffic
config system geneve
    edit "geneve1"
        set interface "port1"
        set type ppp
        set remote-ip 10.1.2.46    (同区域gwlb网卡地址)
    next
end
end
  • 添加防火墙策略
config firewall policy
    edit 1
        set name "1"
        set uuid 8cb7c62c-a257-51eb-20fd-62de456d8a8b
        set srcintf "gwlb"
        set dstintf "gwlb"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set webfilter-profile "g-default"
        set application-list "g-default"
        set logtraffic all
    next
end
  • 添加FortiGate路由,fg-traffic vdom默认路由指向gwlb
config router static
    edit 1
        set device "gwlb"
    next
end
  • 验证GWLB 目标健康状态为healthy

创建GWLB endpoint服务

  • VPC > Virtual Private Cloud >终端节点服务
  • 关联GWLB, 取消需要接受以使终端节点选项,

  • 复制GWLB 终端服务全名
  • VPC > Virtual Private Cloud> 创建GWLB 终端节点虚拟网卡
  • 按名称查找服务,点验证服务可用,选择 APP VPC,一个服务节点只创建一个可用区。


调整VPC路由,流量转发至GWLB

需要调整APP VPC 三个路由表的路由

Ingress 路由表,服务器子网路由指向GWLB endpoint
GWLBe路由表,指向IGW
App 路由表,业务服务器默认网关指向GWLB endpoint

验证业务系统流量经过GWLB 和FortiGate安全检查

  • 访问WEB服务器1弹性IP 161.189.124.220 WEB页面,网络流量将路由到GWLB,负载分担到FortiGate上进行安全检查,用户端对数据流的安全检查过程无感知。

在FortiGate防火墙上的日志记录里记录 113.119.109.205 等公网地址客户端访问弹性IP 161.189.124.220 对应的实例IP 10.0.11.167 流量经过FortiGate 安全检查,识别应用EDGE浏览器发起的普通http流量、SSH 、ping 流量。

从主机10.0.11.167主动发起的NTP更新访问互联网流量同样经过FortiGate安全检查

基于URL的WEB访问控制记录公网用户113.119.109.205 访问web服务器的详细URL对象记录。

  • 查看FortiGate GENEVE封装数据

在FortiGate上抓包分析, FortiGate 与GWLB之间的通信数据包封装在GENEVE协议内, FortiGate与GWLB的状态检测为FortiGate接口上开放的https服务端口

关于Fortinet

Fortinet是全球领先的网络安全解决方案供应商,在下一代防火墙,Web应用防火墙,SD-WAN等领域均处于市场领先地位。Fortinet Security Fabric安全平台通过全面的产品线覆盖数字化攻击面,紧密集成的解决方案消除单点作战与系统复杂度,并通过自动化工作流提升网络安全防御/检测/响应的效率,即实现全面覆盖、深度集成、动态协同的安全解决方案来全方位护航企业进行数字化创新。全球超过50万客户选择Fortinet保护其数字化创新成果。

 

关于FortiGate

FortiGate是Fortinet旗舰下一代防火墙产品,集下一代防火墙、高性能SSL/IPSec VPN网关、SD-WAN 于一身,该产品同时被Gartner列于企业防火墙和SD-WAN魔力象限领导者象限。

FortiGate与亚马逊云科技平台进行了API级别的集成,能够原生支持同AZ和跨AZ的主被/双主高可用部署模式,以及通过API驱动AutoScaling弹性扩缩,最大程度保障稳定与性能。同时支持Transit Gateway,能够用来帮助用户构建云安全服务中心来实现安全集中管控。此外,FortiGate还支持SR-IOV和C5n机型以获得更高的性能。通过内置的轻量级编排引擎,自定义触发条件(实例连接到恶意IP)和执行动作(调用Lambda脚本隔离实例)实现更高效的安全响应。

 

本篇作者

李朝辉

Fortinet中国区资深云安全顾问

刘瀚文

产品技术专家,亚马逊云科技产品部网络方向