SSL VPN可以提供三种资源接入方式,分别为Web接入方式(SSL VPN配置Web接入方式案例)、TCP接入方式和IP接入方式(VSR白送的的SSL VPN功能,你要不要?)。现在我们只剩下TCP接入方式没介绍了。
TCP接入方式是指用户对内部服务器开放端口的安全访问,可以是任意基于TCP的服务,如Telnet、RDP以及其他使用固定端口的TCP服务。
上个实验中,我们看到了在浏览器中登录以后,页面中也有关于TCP资源的显示。
和Web接入方式类似,用户利用TCP接入方式访问内网服务器时,也需要通过HTTPS协议登录SSL VPN网关。认证成功之后,用户需要在终端设备上安装专用的TCP接入客户端软件,由该软件实现使用SSL连接传送应用层数据。
启动TCP接入客户端软件,用户可以看到授权访问的TCP接入服务,授权服务即在SSL VPN网关上创建的端口转发规则,将内部服务器的IP地址和端口号映射为SSL VPN客户端的本地IP地址和端口号,用户再使用本地IP地址和端口号进行访问。
简单来看,可以理解为是有身份认证且做了SSL加密的NAT端口映射。
本案例中,我们依旧在VSR上创建与云内服务器对应的资源,由VSR充当SSL VPN网关来提供SSL VPN服务,负责在远端接入用户和云内网络之间转发报文。
用户使用浏览器,通过HTTPS协议登录SSL VPN网关,SSL VPN网关对接入用户进行身份认证,并对允许用户访问的TCP接入服务(即端口转发规则)进行授权。最后用户通过访问本地IP地址和本地端口号,实现访问授权的服务资源。
首先配置PKI(Public Key Infrastructure,公钥基础设施)域guotiejun,并导入CA证书certguo.cer和服务器证书serverguo.pfx,证书的生成方式请参考文章(Windows Server配置生成认证证书)。
#
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
[H3C]pki import domain guotiejun pem ca filename certguo.cer
The trusted CA's finger print is:
MD5 fingerprint:9B04 EA72 D3D0 A346 C0C4 7A24 BCB4 BC78
SHA1 fingerprint:475D D82F 8A18 23A6 5C0F 3BCE 2027 3C1E 5972 2D6D
Is the finger print correct?(Y/N):y
[H3C]pki import domain guotiejun p12 local filename serverguo.pfx
Please input the password:(guotiejun)
配置SSL服务器端策略ssl,绑定PKI域guotiejun。
#
ssl server-policy guotiejun
pki-domain guotiejun
配置SSL VPN网关tiejun的IP地址为192.168.1.44,端口号为10010。
#
sslvpn gateway guotiejun
ip address 192.168.1.44 port 10010
ssl server-policy guotiejun
service enable
创建SSL VPN访问实例guotiejun,引用SSL VPN网关guotiejun。
#
sslvpn context guotiejun
gateway guotiejun
创建端口转发表项ssh214,添加端口转发实例,将192.168.1.214的SSH服务映射到本地地址127.0.0.1、本地端口20001。
#
sslvpn context guotiejun
port-forward-item ssh214
local-port 20001 local-name 127.0.0.1 remote-server 192.168.1.214 remote-port 22
同理,再创建端口转发表项http67,将192.168.1.67的10001端口映射到127.0.0.1的端口20002。创建端口转发表项rdp188,将192.168.1.188的3389端口映射到127.0.0.1的端口20003。创建端口转发表项telnet214,将192.168.1.214的23端口映射到127.0.0.1的端口20004。
#
sslvpn context guotiejun
port-forward-item http67
local-port 20002 local-name 127.0.0.1 remote-server 192.168.1.67 remote-port 10001
port-forward-item rdp188
local-port 20003 local-name 127.0.0.1 remote-server 192.168.1.188 remote-port 3389
port-forward-item telnet214
local-port 20004 local-name 127.0.0.1 remote-server 192.168.1.214 remote-port 23
创建端口转发列表tcp,并引用端口转发表项ssh214、http67、telnet214和rdp188。
#
sslvpn context guotiejun
tcp
resources port-forward-item http67
resources port-forward-item rdp188
resources port-forward-item ssh214
resources port-forward-item telnet214
在访问实例guotiejun中创建策略组guotiejun,引用端口转发列表tcp资源,并指定其为缺省策略组。
sslvpn context guotiejun
policy-group guotiejun
resources port-forward tcp
default-policy-group guotiejun
使能SSL VPN访问实例guotiejun。
#
sslvpn context guotiejun
service enable
创建用户组sslvpn,授权给该用户组的策略组为guotiejun。
user-group sslvpn
authorization-attribute sslvpn-policy-group guotiejun
创建本地SSL VPN用户guotiejun,密码为guotiejun,授权用户的SSL VPN策略组为sslvpn。
#
guotiejun class network
password simple guotiejun
sslvpn
group sslvpn
user-role network-operator
然后就可以测试访问云内业务了,在浏览器中输入以下链接地址:
https://ssl.h3cadmin.cn:10010
输入账号密码guotiejun/guotiejun进行登录。
可以看到授权的TCP资源信息,显示的就是端口映射关系。接下来需要点击启动TCP客户端应用程序了,点击之后会下载一个名为tcpclient.jnlp的Java小程序。
也就是说电脑要具备Java环境,不具备的请自行安装一下。
安装完成之后就可以运行这个小程序了。
运行时可能会报警,这是因为我使用的是自定义的证书,Java检测到证书颁发机构不一致。这种情况我是了解的,直接忽略即可。
然后就是Java的安全提示,要求应用程序必须满足“高”或“非常高”的安全设置或属于“例外站点”。这个简单,只要在“Java控制面板”的“安全”选项卡中,添加SSL VPN网关为例外就可以了。
然后就是接受风险并运行就可以了。
SSL VPN客户端启动成功之后,就可以看到TCP应用列表了。
然后我们通过本地IP+端口的方式来访问一下业务系统。
SSH服务状态访问正常。
HTTP服务访问正常。
RDP服务访问正常。
Telnet服务访问正常。
在VSR上查看SSL VPN网关的状态
查看SSL VPN访问实例状态。
查看SSL VPN的用户会话信息。
查看TCP端口转发的连接信息。
一不小心又成功了。