本帖最后由 91135_周杰 于 2024-8-2 16:49 编辑
负载均衡中SSLO的部分技术实现原理 一、SSLO简单介绍 SSLO(SSL Orchestrator,SSL编排器),是一种对SSL安全设备进行管理的解决方案,能够最大限度地提高基础设施投资、效率和安全性,主要提供三个能力:
1.安全设备池化:提升安全设备利用率,同时提供监视能力,快速定位故障。结合调度策略,自动绕过故障节点
2.安全流量编排:根据流量特征进行安全能力编排,提升安全设备的利用率。
3.ssl加解密:在流量转发安全设备前进行ssl解密,对安全设备明文传输,支持国密算法。
二、部分技术实现原理 1.会话隔离 客户端在访问负载设备的虚拟服务时候,负载设备将该数据包发往下联池化安全设备进行安全防护,但是如果是以普通的会话形式来区分五元组,这时候发现,存在相同五元组的情况,这样会导致死循环的情况出现。 可以看到图中,当客户端访问虚拟服务的数据发送到安全设备A和安全设备B时候,会产生两条相同的会话 session1五元组:192.168.1.1:12345->192.168.1.2:80 192.168.1.2:80->192.168.1.1:12345
session2五元组:192.168.1.1:12345->192.168.1.2:80 192.168.1.2:80->192.168.1.1:12345 session3五元组:192.168.1.1:12345->192.168.1.2:80 192.171.1.1:80->192.171.1.2:12345
如果不区分会话,会导致A转发的流量再次命中session1,数据循环往复的发送,而不会发送到后端服务器中.
为了区分不通的session五元组数据,这时候额外加上链路信息。如A转发B的流量入接口和客户端转发到A的流量的入接口不一样,因此不会再次命中session1,而会创建session2,从而达到会话隔离效果。 session1五元组:192.168.1.1:12345->192.168.1.2:80[C1], 192.168.1.2:80->192.168.1.1:12345[A1]
session2五元组:192.168.1.1:12345->192.168.1.2:80[A2], 192.168.1.2:80->192.168.1.1:12345[B1]
期望连接 上面AD对2台安全设备A和B编排过程中,产生了3条会话,这3条会话的关系通过期望连接建立的。 session1会话建立后,流量通过负载均衡设备编排到安全设备A,安全设备A的出接口就是session2的入接口,所以这时候会创建一条期望连接,负载均衡设备期望从A的出接口收到对应五元组的流量。 当负载均衡从A的出接口收到流量后,先查询期望连接,匹配后,通过期望连接关联的session1创建session2,同时更新编排信息,负载均衡会让session2的流量编排到安全设备B。
父子连接 通过期望连接,可以将3条会话进行关联起来,session1是最原始的,当session1通过期望连接建立session2后,session1和2就是关联关系,session1的子连接是session2,session2的父连接就是session1,这种关系称为父子连接。 可以看到,通过session1可以找到session3,同理也能逆流找到,bypass机制基础就是父子和期望连接。
2.bypass机制 bypass机制依赖监视器,需要监视器上报安全资源池中节点状态。 简单bypass: 当session未建立,接收客户请求进行服务链调度,首先尝试IPS池各个节点的调度,发现均故障,继续调度WAF池,发现设备1故障,调度失败,WAF2健康,所以流量调度到WAF2并建立session。
复杂的bypass,就是session已经建立,如果其中某台安全设备故障需要bypass,这就依赖期望连接和父子连接的技术。
当session1关联的安全设备A故障后,在转发给设备B之前,我们先检查设备的状态,如果设备离线,负载均衡不会转发给设备B,根据会话关系,下一个会话是session2,负载均衡设备会修改数据包的源目MAC地址,修改数据包的入接口,重新内部发送数据包,让数据包命中会话session2,以此达到bypass效果。
3.七层调度中的四层转发
四层调度:四层调度类似节点池的四层调度,纯转发,流量到达SSLO只会解析IP、端口等ip层信息,然后转发给安全设备,四层不涉及协议解析,因此针对流量策略较少,只能使用四层前置调度和四层ipro。
七层调度:七层调度会经过七层协议栈,ssl卸载,http解析等模块,所以七层调度可以根据http协议的一些信息进行安全资源池的调度。比如根据url调度到不同的安全资源池。
七层调度中的四层转发:虽然我们是七层调度,但是其实转发给安全设备的流量不需要七层处理,只需要做四层转发即可,所以我们只需要在客户端流量到来的时候和最后一个安全设备过来的流量做七层解析,客户端流量到来做七层解析是为了根据七层协议信息调度服务链。最后一个安全设备流量做七层解析是为了调度节点池。
4.SSL流量解密 传统的安全设备无法处理ssl流量,负载均衡设备可以通过https虚拟服务的ssl卸载/加密功能实现对安全设备明文传输。 当SSLO设备收到https流量时候,先做ssl卸载,然后把明文数据流量编排到安全设备进行调度,调度完成后,SSLO设备再次进行加密,传输给服务器,这样流量对于客户端和服务器都是密文,对安全设备是明文。
5.调度顺序 在SSLO中有很多调度概念,如:虚拟服务节点池调度、前置策略调度、ipro调度,顺序如上图。 ipro调度比较特殊,它既可以执行服务链调度也可以执行节点池调度,但是对于sslo而言,服务链调度必须先于其他调度执行。所以调用sslo的ipro调度的时候需要注意,在服务链调度之前不可进行其他调度。
这里的顺序是我们期望的顺序,实际上可能出现先调度节点池后调度服务链的情况,这种情况会调度失败,导致业务异常。
|