为提升整体业务高可用性,设计在出口AD分别配置SSLO和业务服务器的节点池,结合健康检查功能使用HTTPS探测SSLO,使用PING探测业务服务器,当两个节点池同时活跃时则优先调度流量编排业务,当流量编排不可用时,自动切换到真实业务服务器承载业务,确保极端情况下的业务高可用。
节点池均可用场景:根据调度策略走SSLO-AD转发
SSLO节点池故障场景:SSLO到业务服务器不通时根据前置调度策略返回403(2.4.4章节实现),SSLO本身故障无法应答,这两种场景下出口AD自动调度到业务服务器
2.4.4. SSLO应用负载设计:仅允许指定域名形式访问
为解决禁止IP和非预设域名访问,通过AD的前置调度策略匹配HTTP头部字段方式解决,通过前置调度策略配置多条匹配规则,根据HTTP头部的HOST字段匹配,匹配HOST则调度节点池,匹配不上转下一条,一直到最后匹配不到,则返回403状态码表示访问失败。(同时实现2.4.3章节中SSLO-业务服务器网络不通时返回403)
2.4.5. SSLO应用负载设计:SSL加解密方案
为在不改变原有业务服务器配置的前提下部署流量编排器,需同时在编排器配置SSL的加密和解密,方案设计在SSLO-AD配置SSL卸载将用户访问流量解密转发到安全设备,再配置SSL加密将用户访问流量加密转发到后端服务器,这样既可无需改动后端服务器本身的加密配置。
2.4.5.1. 加解密设计:加密协议和密码套件
客户对于加密协议和密码套件无特殊要求,复用原本业务的协议和套件即可,可做适当改动,确保用户能正常使用即可。
可提前使用nmap探测现有服务器使用的协议和密码套件,nmap命令:
nmap --script ssl-enum-ciphers -p 443 sangfor.com
2.4.6. SSLO应用负载设计:单服务器多域名证书问题
在深信服应用负载的SSL卸载和加密策略中,可设置根据SSL协商过程中,Client Hello报文中的SNI字段中的域名来匹配对应证书,解决一台服务器对应多个域名证书的场景问题。
3.4. AD策略名称规划
设备 | 模块 | 命名规则 |
| | SSLO-{虚拟IP}-HTTP(S)-{检测的URL} |
| |
| |
| |
| | |
| |
| |
| |
| |
| {业务名}-{域名:端口} {业务名:端口}-返回403页面 |
| |
--------------------------------------------------------------------------------------------------------------------
4.交付配置
4.1.出口AD配置
4.1.1.出口AD配置:健康检查
根据前期规划,需要出口AD同时探测SSLO和业务服务器提供的服务是否正常,探测业务服务器用PING(复用系统默认配置),探测SSLO时使用HTTPS探测,配置如下
4.1.2.出口AD配置:节点池
每个业务配置两个节点池,分别为SSLO-AD和业务服务器的
SSLO-AD节点池配置如下
4.1.3. 出口AD配置:前置策略
每个业务配置两个前置策略,分别为调用SSLO-AD节点池和业务服务器节点池的
SSLO-AD前置策略配置如下
4.1.4. 出口AD配置:虚拟服务
新建TCP类型的虚拟服务,调用前置策略,SSLO策略在上,优先调度SSLO前置策略,SSLO节点故障才调用业务服务器
4.2. SSLO-AD配置
4.2.1. SSLO-AD配置:健康检查
SSLO仅需探测到业务服务器的PING连通性即可,复用系统默认PING规则即可
4.2.2. SSLO-AD配置:节点池
节点池配置节点为业务服务器,健康检查调用默认的ping检测
4.2.3. SSLO-AD配置:前置策略
根据客户需求,需实现仅允许特定域名访问,非特定域名访问返回403,此需求需要通过前置策略实现,每个业务需要配置N+1个前置策略,N指根据业务域名数量配置的前置策略,1指一条返回403状态码的策略。
举例:如果一个业务有两个域名分别为sangfor.com和sangfor.cn,那就需要配置两条匹配域名的前置策略和一条返回403的前置策略,一共3条
根据域名配置的前置策略配置
4.2.4. SSLO-AD配置:SSL策略
由于前期客户未对加密协议和密码套件做要求,交付直接按照通用配置或原有服务器配置即可,每个域名配置一个加密和卸载策略,泛域名可共用。
注意SSL策略需配置SNI匹配,用于实现域名和证书的对应关系,解决一个服务器发布多个域名证书服务的问题。
注意SNI泛域名的匹配规则:*.sangfor.com可表示A.sangfor.com和B.sangfor.com,但不表示sangfor.com,如需同时发布本级域名和本级泛域名业务则需要分别创建两个不同SNI的策略,比如SNI分别配置*.sangfor.com和sangfor.com
SSL卸载策略配置
4.2.5. SSLO-AD配置:HTTP优化策略
由于旁路代理部署SSLO,会导致最终服务器识别到的源IP变成了SSLO,需要通过插入XFF解决溯源问题,使后端服务器可通过HTTP头部的XFF字段感知到访问者的实际IP。
4.2.6. SSLO-AD配置:安全服务链
先配置资源池,本项目只涉及WAF,配置一台WAF即可
4.2.7. SSLO-AD配置:虚拟服务
配置虚拟服务调用其他预配置内容
--------------------------------------------------------------------------------------------------------------------
5. 价值兑现
流量编排交付后业务现状和安全能力检验。
5.1. 出口AD运行状态监测
正常情况下业务流量调度到SSLO节点池,由SSLO设备虚拟节点承载业务
5.2. SSLO-AD运行状态监测
节点池承载正常、SSL加解密正常
5.3. 用户访问测试
公网用户测试访问所有业务系统的效果,确认用户访问网站加密状态正常
5.4. 高可用测试
测试项 | 操作设备 | 测试方式 | 预期结果 | 测试结果 |
| | | | |
| | 将所有接口线缆逐个断开/恢复,测试断开时是否触发切换 | | |
| | 1、调整SSLO-AD节点池的健康检查方式为不可用(如切换成LDAP探测则必定探测失败) 2、断开两台SSLO-AD和核心之间的线路 | 出口AD健康检查失败时,可将业务从SSLO-AD节点池切换到服务器节点池 | |
| | 将两台WAF的网口线路断开或者修改WAF接口地址使AD下一跳失效 | 服务链bypass,出口AD仍然使用SSLO-AD节点池 | |
5.5. 网络攻击测试
为确认流量编排项目交付后可达成对加密流量的防护效果,通过使用curl命令构建sql注入语句,测试SSLO解密效果和WAF防护能力,将所有本次项目涉及的域名执行一次攻击,语句示例如下
curl "https://www.sangfor.cn/login.php?username=admin%27%20OR%20%271%27%3D%271&password=test" -H "X-Forwarded-For: is https test"
实测攻击全部被拒绝
在WAF抓包可以确认到达WAF的数据包均为明文,并且全部被WAF发出RST阻断
WAF日志观测全部检出并阻断,证明流量编排上线后WAF对加密数据流的防护正常生效