F5社区-F5技术交流中心

SSLO Outbound--内置证书应用域名无法使用SNI标识的访问流量如何Bypass之实现原理

2020-03-30 12:45:32

君子不器

上期遗留的问题想必大家比较疑惑,怎么在没有SNI,应用内置域名的情况下解决SSLO出方向场景下的上网问题呢?本期给了大家一个解决思路。以ANYDESK为例。

anydesk交互数据不使用SNI 标识握手,需要使用IP地址过滤,但anydesk 应用域名解析的A记录不唯一,同时不收敛,因此采用所有访问地址的PTR记录匹配,如果PTR记录包含anydesk.com内容则对流量BYPASS

SSLO配置思路:

1、配置两个对虚拟VLAN的出方向Topologies,该Topologies只对虚拟VLAN生效。其中一个Topologies作为出方向标准的SSLO配置,另外一个bypass 全部流量。两个Topologies作为逻辑处理的第二层。

2、新增一个出方向的全0 VS,对真实vlan internal生效,使用F5 IRULES 分配流量给两个SSLO Topologies 生成的VS。作为第一层。

3、流量处理逻辑如下:

针对TCP流量处理流程见下图,当TCP流量到F5后,因为F5物理接口是真实的VLAN,因此流量只会命中第一层,也就是我们创建的VS。流量到VS后,我们使用定义好的IRULES把流量分配到第二层SSLO创建好的VS上,可以针对4-7层的相关参数(IP/PORT/SNI/ URL/HOST/ TLS VERSION/等)定义分配方式,可以把F5无法解密的流量分配到BYPASSTopologies,同时分配相应的service chain;正常解密的流量分配到证书替换的Topologies,并分配相应的service chain;如果该流量不需要过service chain,可以直接分配POOL,流量直接转发到下一跳。详见下图。


4、对非TCP流量在经过第一层VS处理后,可以按照不同的业务需求,设置不通的流量处理模型。如下图是常见的流量的处理模型。


推荐IRUELS: 格栅线部分需要修改。

when CLIENT_ACCEPTED {

set bypass 0

set dst_fqdn [RESOLV::lookup @223.5.5.5 -ptr [IP::local_addr]]

if {$dst_fqdn eq ""}{  set dst_fqdn [RESOLV::lookup @114.114.114.114 -ptr [IP::local_addr]] }

     if { [class match $dst_fqdn contains  bypass_table] } {

       set bypass 1

  }

  if {[ip_protocol] eq 6} {

      if {$bypass}{

        virtual "/Common/sslo_bypass.app/sslo_bypass-in-t-4"

      } else {

        virtual "/Common/sslo_default.app/sslo_default-in-t-4"

      }

  } elseif {[ip_protocol] eq 17} {

     if {$bypass}{

        virtual "/Common/sslo_bypass.app/sslo_bypass-in-u-4"

      } else {

        virtual "/Common/sslo_default.app/sslo_default-in-u-4"

      }

  } else {

        if {$bypass}{

        virtual "/Common/sslo_bypass.app/sslo_bypass-ot-4"

      } else {

        virtual "/Common/sslo_default.app/sslo_default-ot-4"

      }

  }

IRULES主要功能解释:

1set dst_fqdn [RESOLV::lookup @223.5.5.5 -ptr [IP::local_addr]]

定位anydesk唯一的标识符是域名,因此使用PTR记录分流。该IRULES作用是使用223.5.5.5反向解析目的地址的PTR记录,并赋值给dst_fqdn

2if {$dst_fqdn eq ""}{  set dst_fqdn [RESOLV::lookup @114.114.114.114 -ptr [IP::local_addr]] }

如果没解析到,则重新使用114.114.114.114再次解析

3if { [class match $dst_fqdn contains bypass_table] } { set bypass 1}

需要新建一个data group bypass_table,在bypass_table查找是否包含dst_fqdn变量中的内,如果包含该内容,则赋值1bypass

4  if {[ip_protocol] eq 6} {

      if {$bypass}{

        virtual "/Common/sslo_bypass.app/sslo_bypass-in-t-4"

      } else {

        virtual "/Common/sslo_default.app/sslo_default-in-t-4"

      }

  } elseif {[ip_protocol] eq 17} {

     if {$bypass}{

        virtual "/Common/sslo_bypass.app/sslo_bypass-in-u-4"

      } else {

        virtual "/Common/sslo_default.app/sslo_default-in-u-4"

      }

  } else {

        if {$bypass}{

        virtual "/Common/sslo_bypass.app/sslo_bypass-ot-4"

      } else {

        virtual "/Common/sslo_default.app/sslo_default-ot-4"

      }

1、如果TCP流量同时bypass等于1则流量走VS sslo_bypass-in-t-4, bypass等于0则流量走VS sslo_default-in-t-4

2、如果UDP流量同时bypass等于1则流量走VS sslo_bypass-in-t-4, bypass等于0则流量走VS sslo_default-in-t-4

3、其他流量同时bypass等于1则流量走VS sslo_bypass-ot-4, bypass等于0则流量走VS sslo_default-ot-4


以上就是解决方案的原理了,下一期给大家分享demo 配置。

发布评论 加入社群

发布评论

相关文章

F5 SSLO IPV6测试环境搭建经验分享

欧权贵

2020-05-12 21:15:53 2934

Security_Device之ICAP_NO.3_流量分析

张郑文轩

2020-04-29 21:36:07 1053

SSLO使用国密算法配置描述

阿泽

2020-04-14 21:00:54 4557

Login

手机号
验证码
© 2019 F5 Networks, Inc. 版权所有。京ICP备16013763号-1