一篇能解决90以上SSL(一篇能解决90以上SSL)

作者: 衡水铁头哥 铁军哥

前面我们已经通过几篇文章把ssl VPN的3种接入方式和对应的工作机制了解了,IP接入方式请查看(VSR白送的SSL VPN功能,你要不要?),Web接入方式请查看(SSL VPN配置Web接入方式案例),TCP接入方式请查看(SSL VPN配置TCP接入方式案例)

现在我们回过头来补充一些和实际使用相关的细节问题。

首先看一下SSL VPN网关的部署方式,主要有两种:网关模式和旁路模式

先看我们在云上部署VSR时使用的旁路模式,又称单臂旁挂、单臂模式。此时SSL VPN网关和内网的业务网关不是同一台设备,SSL VPN相关的业务流量需要经业务网关绕转到SSL VPN网关。因为SSL VPN网关不处在业务流量转发的关键路径上,性能只需满足SSL VPN的业务性能即可,即使性能不足也不会影响其他内外网通信。甚至设备宕机也只是影响SSL VPN业务。

一篇能解决90以上SSL(一篇能解决90以上SSL)(1)

所以,前面介绍的云上部署VSR的场景,实际业务模型是上图这样的,GW设备是云主机的网关设备,PC和VSR直接建立SSL VPN隧道连接。VSR和服务器之间路由可达,PC和Server互访的流量均需要绕转VSR设备;而Server和公网其他主机通信的流量直接通过网关设备GW转发,无需绕转VSR。这样,即使VSR宕机,也只是影响SSL VPN用户的访问流量。

而网关模式是指设备作为内网网关串接在内外网之间,内外网互通的所有流量需要通过SSL VPN网关进行转发。优势是网关模式可以提供对内网的完全保护,但是由于SSL VPN网关处在内网与外网通信的关键路径上,其性能对内外网之间的数据传输有很大的影响。

一篇能解决90以上SSL(一篇能解决90以上SSL)(2)

还是前面介绍的云上部署VSR的场景,因为没有办法替换掉GW设备,所以只能是把VSR串在GW和Server中间。如果是物理设备场景,在SSL VPN网关能满足业务需求的情况下,可以将SSL VPN网关复用为业务网关,降低部署成本。但如果SSL VPN网关宕机,所有业务均受影响。

综上,在实际部署时,还是建议优先考虑采用旁路模式部署

然后就是SSL VPN网关的配置了。我们前面是把3种接入方式分开讲的,其实也是可以组合在一起进行使用的。

可以发现,3种接入方式中SSL服务器端的策略配置都是一样的。

首先配置PKI域,并导入CA证书和服务器证书,证书的生成方式请参考文章(Windows Server配置生成认证证书)。然后配置SSL服务器端策略,并绑定PKI域。

# pki domain guotiejun public-key rsa general name guotiejun undo crl check enable pki import domain guotiejun pem ca filename certguo.cer pki import domain guotiejun p12 local filename serverguo.pfx # ssl server-policy guotiejun pki-domain guotiejun

SSL VPN网关配置的IP地址和端口号可以合并为一个。

# sslvpn gateway guotiejun ip address 172.30.1.19 port 10086 ssl server-policy guotiejun service enable

IP接入方式需要创建SSL VPN AC接口,以及为SSL VPN客户端分配地址的地址池,还要创建允许SSL VPN地址池访问资源的ACL。

# interface SSLVPN-AC1 IP address 10.1.1.1 255.255.255.0 # sslvpn ip address-pool tiejun 10.1.1.100 10.1.1.200 # acl advanced 3402 rule 0 permit ip source 10.1.1.0 0.0.0.255 destination 172.30.1.0 0.0.0.255

然后就是把3种接入方式的访问实例配置融合到一起。IP接入方式添加资源172.30.1.0/24,Web接入方式添加资源172.30.1.17的HTTP和HTTPS管理页面,TCP接入方式添加资源172.30.1.17的SSH、FTP、Telnet、HTTP和HTTPS端口。

# sslvpn context guotiejun gateway guotiejun ip-tunnel interface SSLVPN-AC1 ip-tunnel address-pool tiejun mask 255.255.255.0 port-forward-item ftp17 local-port 17021 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 21 port-forward-item http17 local-port 17080 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 80 port-forward-item https17 local-port 17443 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 443 port-forward-item ssh17 local-port 17022 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 22 port-forward-item telent17 local-port 17023 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 23 port-forward TCP resources port-forward-item ftp17 resources port-forward-item http17 resources port-forward-item https17 resources port-forward-item ssh17 resources port-forward-item telent17 ip-route-list guotiejun include 172.30.1.0 255.255.255.0 url-item http17 url http://172.30.1.17 url-item https17 url https://172.30.1.17 url-list web heading WebManagement resources url-item http17 resources url-item https17 policy-group guotiejun resources port-forward tcp filter ip-tunnel acl 3402 ip-tunnel access-route ip-route-list guotiejun resources url-list web default-policy-group guotiejun service enable

最后就是创建授权有策略组的用户组,并创建本地SSL VPN用户。

# user-group sslvpn authorization-attribute sslvpn-policy-group guotiejun # local-user guotiejun class network password simple guotiejun service-type sslvpn group sslvpn authorization-attribute user-role network-operator

然后就可以登录到SSL VPN网关了。

https://bj.h3cadmin.cn:10086/

一篇能解决90以上SSL(一篇能解决90以上SSL)(3)

我们看到页面中还有一个启动IP客户端应用程序的地方,默认是没有客户端软件的。此时我们需要开启设备的轻量级Web服务器功能Lighttpd,并将定制好的iNode客户端重命名后上传到指定路径。

一篇能解决90以上SSL(一篇能解决90以上SSL)(4)

简单解释一下,为什么要指定路径。因为目前暂时不支持修改下载链接,默认的下载链接如下:

https://bj.h3cadmin.cn:10086/client/ip/SvpnClient.exe

所以我们需要在Web服务器根目录下创建client/ip/路径,并且设备名称必须修改为SvpnClient.exe,所以根目录下必须有包含ip的文件夹client。配置好之后就能从页面直接下载SSL VPN客户端了。

TCP客户端就不多说了,终端需要具有Java环境,并且要添加例外站点。

再就是对用户访问资源的授权管理部分了,这部分之前发过一篇关于IP接入方式的访问控制(SSL VPN访问控制)

其实主要就是通过高级ACL(3000段)或者URI ACL进行访问控制,IP接入方式可以使用上述两者,而Web接入方式和TCP接入方式主要是通过URI ACL。首先对流量进行URI ACL的规则检查,匹配URI ACL中permit规则放行;如果URI ACL匹配失败,再匹配高级ACL,匹配permit规则放行;如果都匹配失败,拒绝访问。但是不怎么实用,把资源列出来又不给用户访问,属实有点流氓的意思。

其实用的比较多的还是sslvpn-policy-group和user-group,可以创建用户组匹配SSL VPN策略组,因为SSL VPN策略组中是添加了VPN资源的,所以相当于是在用户组内的用户都有访问权限,只要调整用户或者用户组就能进行区分了。也可以配置本地用户直接匹配SSL VPN策略组,看个人喜好。

此时我们再创建一个SSL VPN策略组yancaipin,只添加TCP资源。

# sslvpn context guotiejun policy-group yancaipin resources port-forward tcp

然后创建一个用户yancaipin,直接匹配SSL VPN策略组yancaipin。

# local-user yancaipin class network password simple yancaipin service-type sslvpn authorization-attribute user-role network-operator authorization-attribute sslvpn-policy-group yancaipin

登录账号yancaipin试一下。

一篇能解决90以上SSL(一篇能解决90以上SSL)(5)

可以看到Web资源没有了,只剩下TCP资源了。

最后应该就是限制在线用户了,缺省情况下,同一用户的同时最大在线数为32,如果用到上面的分类用户了,那肯定是要区分用户的,所以我们一般将每个用户名的同时最大在线数限制为2-3个,按个人终端算。配置方式为在SSL VPN访问实例视图中配置,同时开启达到最大在线数再登录时强制下线功能。

# sslvpn context guotiejun max-onlines 3 force-logout max-onlines enable

与此相关的有一个SSL VPN访问实例的最大会话数,缺省最大会话数为1048575,这个就不用管了。还有每个会话的最大连接数缺省为64,也不用管。还有一个SSL VPN会话保持空闲状态的最长时间,缺省为30分钟,可以视情况进行调整。

# sslvpn context guotiejun timeout idle 60

再有可能就是限速了,如果用户比较多,限速还是很有必要的。IP接入方式的限速功能如下:

# sslvpn context guotiejun ip-tunnel rate-limit upstream kbps 2048 ip-tunnel rate-limit downstream kbps 2048

还可以基于会话进行限速,命令如下:

# sslvpn context guotiejun rate-limit upstream 1024 rate-limit downstream 1024

以我处理过几千个问题的经验,不夸张讲,本篇介绍的内容基本上能覆盖90%以上的客户需求了,下课!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页