一、概述
AWS中国区发布AWS 网关负载均衡服务,本文档在AWS 宁夏区完成验证网关负载均衡服务集成FortiGate扩展安全检查性能应用实践。
AWS中运行着关键应用程序,FortiGate安全网关对进出AWS环境的流量进行安全检查,单个虚拟实例或主备冗余虚拟实例处理能力有限,容易成为网络性能瓶颈。
AWS 网关负载均衡(GWLB)为AWS提供的托管型4层负载均衡服务,AWS网关负载均衡将互联网IGW流量或虚拟私有网关VGW流量负载分担到多个安全网关,扩展互联网出口和VPC互连网络安全处理性能,并且保障FortiGate安全网关的容错能力和扩展性。
文章来源地址https://uudwc.com/A/yMV8
二、AWS 网关负载均衡工作原理
AWS GWLB常用于两种场景,IGW互联出口南北向流量安全检查 和 VPC间东西向安全流量检查。无论是哪种应用场景,通过修改VPC路由表路由条目,调整数据转发路径,使需要安全检查的子网流量下一跳指向GWLB,从而使流量穿过安全网关进行安全检查或安全控制。GWLB和Fortigate安全网关之间的流量使用GENEVE协议封装,数据端口UDP 6081。
文章来源:https://uudwc.com/A/yMV8
GWLB部件:
- Customer VPC:应用程序所在VPC
- GWLB endpoint: 放置在custmer VPC的一块虚拟网卡,作为路由下一跳,需要冗余在每个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 测试
本测试为手动配置操作步骤,可通过AWS命令行或CloudFormation 快速部署,防火墙扩容可结合弹性扩容服务自动扩展GWLB 负载目标。
(测试拓朴)
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,直接访问业务服务器
部署FortiGate
此测试FortiGate加载两个网卡,一个网卡用于管理,一个网卡用于GWLB连接。在防火墙上去互联网和GWLB都存在默认网关,启用VDOM把管理流量和GWLB流量分开。 VM-V版本启用分离VDOM.
GWLB负载目标群组选择对象为实例名或网卡IP, 如果选择实例名,GWLB 连接到FortiGate实例的主网卡地址。在部署FortiGate时,把主网卡设置成与GWLB互连网卡,第二个网卡用于管理和INTERNET访问网卡,在初始化FortiGate 时 把默认路由从主网卡换到第二块网卡。
- 创建fortigate 实例 ,实例规格根据LICENSE选择
]2. 配置实例主网卡,添加第二块网卡, 主网卡为GWLB子网,第二块网卡为PUBLIC子网,在用户配置文件里调整默认路由出口,启用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 给foritgate 第二块网卡,激活LICENSE。
创建GWLB和负载目标群组
- EC2服务,创建负载均衡器
- 选择gateway load balancer
- 选择security vpc, fortigate如果是双可用区部署,就选择两个可用区,每个可用区用单独的地址与同可用区的FORTIGATE 建立GENEVE隧道
- 选择目标为实例,检测协议TCP ,端口443,Fortigate port2上开启HTTPS管理服务
- 注册目标组,选择所有fortigate实例
- 完成GWLB创建,启用跨区域负载均衡, 在负载均衡描述栏目下的属性字段配置。
- 查看GWLB 网卡地址。创建完GWLB后,GWLB在SECURITY VPC 私有子网创建两个虚拟网卡,网卡描述里包含ELB gwy 标记,记下这两个网卡的IP。
点击菜单EC2- 网络与安全- 网络接口
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
4,验证GWLB 目标健康状态为healthy
创建GWLB endpoint服务
- VPC > Virtual Private Cloud >终端节点服务
- 关联GWLB, 取消需要接受以使终端节点选项,
3,复制GWLB 终端服务全名
- VPC > Virtual Private Cloud> 创建GWLB 终端节点虚拟网卡
- 按名称查找服务,点验证服务可用,选择 APP VPC,一个服务节点只创建一个可用区。
调整VPC路由,流量转发至GWLB
需要调整APP VPC 三个路由表的路由
Ingress 路由表,服务器子网路由指向GWLB endpoint
Gwlbe路由表,指向IGW
App 路由表,业务服务器默认网关指向GWLB endpoint
验证业务系统流量经过GWLB 和fortigate 安全检查
- 打开服务器WEB页面,SSH 服务。
- 查看fortigte GENEVE封装数据