前面我们已经通过几篇文章把SSL VPN的3种接入方式和对应的工作机制了解了,IP接入方式请查看(VSR白送的SSL VPN功能,你要不要?)
现在我们回过头来补充一些和实际使用相关的细节问题。
首先看一下SSL VPN网关的部署方式,主要有两种:网关模式和旁路模式。
先看我们在云上部署VSR时使用的旁路模式,又称单臂旁挂、单臂模式。此时SSL VPN网关和内网的业务网关不是同一台设备,SSL VPN相关的业务流量需要经业务网关绕转到SSL VPN网关。因为SSL VPN网关不处在业务流量转发的关键路径上,性能只需满足SSL VPN的业务性能即可,即使性能不足也不会影响其他内外网通信。甚至设备宕机也只是影响SSL VPN业务。
所以,前面介绍的云上部署VSR的场景,实际业务模型是上图这样的,GW设备是云主机的网关设备,PC和VSR直接建立SSL VPN隧道连接。VSR和服务器之间路由可达,PC和Server互访的流量均需要绕转VSR设备;而Server和公网其他主机通信的流量直接通过网关设备GW转发,无需绕转VSR。这样,即使VSR宕机,也只是影响SSL VPN用户的访问流量。
而网关模式是指设备作为内网网关串接在内外网之间,内外网互通的所有流量需要通过SSL VPN网关进行转发。优势是网关模式可以提供对内网的完全保护,但是由于SSL VPN网关处在内网与外网通信的关键路径上,其性能对内外网之间的数据传输有很大的影响。
还是前面介绍的云上部署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
interface SSLVPN-AC1
address-pool tiejun mask 255.255.255.0
ftp17
17021 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 21
http17
17080 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 80
https17
17443 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 443
ssh17
17022 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 22
telent17
17023 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 23
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
guotiejun
include 172.30.1.0 255.255.255.0
http17
url http://172.30.1.17
https17
url https://172.30.1.17
web
heading WebManagement
resources url-item http17
resources url-item https17
guotiejun
resources port-forward tcp
filter ip-tunnel acl 3402
access-route ip-route-list guotiejun
resources url-list web
guotiejun
service enable
最后就是创建授权有策略组的用户组,并创建本地SSL VPN用户。
#
sslvpn
sslvpn-policy-group guotiejun
#
guotiejun class network
password simple guotiejun
sslvpn
group sslvpn
user-role network-operator
然后就可以登录到SSL VPN网关了。
https://bj.h3cadmin.cn:10086/
我们看到页面中还有一个启动IP客户端应用程序的地方,默认是没有客户端软件的。此时我们需要开启设备的轻量级Web服务器功能Lighttpd,并将定制好的iNode客户端重命名后上传到指定路径。
简单解释一下,为什么要指定路径。因为目前暂时不支持修改下载链接,默认的下载链接如下:
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
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试一下。
可以看到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%以上的客户需求了,下课!