SSL VPN
一、理论部分
- 定义:SSL
VPN,操作在OSI模型的会话层,可以使用户通过浏览器对VPN进行连接,但是没有隧道。使用https加密的范式进行数据传输,跨平台性强,只要终端设备有浏览器,能够上网,就可以进行VPN连接,并访问资源。 - 扩展:可以通过DNS进行访问,或者使用花生壳注册免费域名进行访问
ssl(安全套接字)的工作过程:
普通说法:
- 服务器把它的公钥和证书发到客户端,浏览器检查证书是不是由可以信赖的机构颁发的,确认证书有效和此证书是此网站的
- 客户端相信后使用公钥加密了一个随机对称密钥,包括加密的URL一起发送到服务器
- 服务器用自己的私钥解密了你发送的钥匙,然后用这把对称加密的钥匙给客户端请求的URL链接解密
- 服务器用客户端发的对称钥匙给你请求的网页加密,客户端也有相同的钥匙就可以解密发回来的网页了
进阶说法:
- 客户端发送ClientHello包(支持的解密协议,生成随机数用于生成对话密钥,支持的加密方法,支持的压缩方法)
- 服务器相应severhello包(确认使用的加密协议,生成随机数用于生成对话密钥,确认使用的加密方法,服务器证书)
- 客户端收到后验证服务器的证书是否合法,如果证书没有问题,客户端就会拿出公钥(随机数,用户服务器公钥加密,编码改变,表示随后的消息都要用商定的加密方法和密钥发送,不会变更,客户端握手阶段通知,这一项包括hash值,用来提供服务器校验)用前面的三个随机数来生成会话密钥
- 服务器响应(编码改变通知,表示随后的消息都要用商定的加密方法和密钥发送,服务器握手结束通知,表示服务器的握手阶段已经结束,这一项包括hash值,用来提供客户端校验)
二、实验部分
1. 基本配置
ISP Router配置:
ISP#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ISP(config)#int e0/0
ISP(config-if)#ip add 1.0.0.1 255.255.255.0
ISP(config-if)#no sh
ISP(config-if)#exit
ISP(config)#int e0/1
ISP(config-if)#ip add 10.0.0.10 255.255.255.0
ISP(config-if)#no sh
ISP(config-if)#exit
ISP(config)#ip route 0.0.0.0 0.0.0.0 1.0.0.2
ASA配置:
ciscoasa> en
Password:
ciscoasa# conf t
ciscoasa(config)# int g0/0
ciscoasa(config-if)# ip add 1.0.0.1 255.255.255.0
ciscoasa(config-if)# no sh
ciscoasa(config-if)# nameif outside
INFO: Security level for “outside” set to 0 by default.
ciscoasa(config-if)# security-level 0
ciscoasa(config)# int g0/1
ciscoasa(config-if)# nameif inside
INFO: Security level for “inside” set to 100 by default.
ciscoasa(config-if)# security-level 100
ciscoasa(config-if)# ip add 192.168.1.1 255.255.255.0
ciscoasa(config)# route outside 0.0.0.0 0.0.0.0 1.0.0.2
2. 配置webvpn
ciscoasa(config)# webvpn //开启ssl vpn
ciscoasa(config-webvpn)# enable outside //在outside口开启
ciscoasa(config-webvpn)# tunnel-group-list enable //开启隧道组列表
ciscoasa(config-webvpn)# quit
3. 创建认证用户
ciscoasa(config)# username chenchen password 123.com **//创建认证用户,**定义密码
4. 创建组策略
ciscoasa(config)# group-policy vpn-group internal //定义组策略vpn-group并且为内部的
ciscoasa(config)# group-policy vpn-group attributes //定义组策略vpn-group的属性
ciscoasa(config-group-policy)# vpn-tunnel-protocol webvpn //定义协议为webvpn(ssl vpn)
ciscoasa(config-group-policy)# exit
5. 设置隧道组选项
ciscoasa(config)# tunnel-group vpn-tunnel-group type webvpn //定义隧道组的模式为ssl vpn
ciscoasa(config)# tunnel-group vpn-tunnel-group general-attributes //定义隧道组的一般属性
ciscoasa(config-tunnel-general)# default-group-policy vpn-group //默认隧道组链接到之前定义的隧道组
ciscoasa(config-tunnel-general)# authentication-server-group local //在本地进行组认证
ciscoasa(config-tunnel-general)# exit
6. 设置隧道组的webvpn属性
ciscoasa(config)# tunnel-group vpn-tunnel-group webvpn-attributes //定义隧道组的ssl vpn的属性
ciscoasa(config-tunnel-webvpn)# group-alias jishu enable //别名为jishu并开启
ciscoasa(config-tunnel-webvpn)# exit
7. 客户端访问测试
-
输入ASA的outside接口的IP地址进行访问
-
输入设置的用户名和密码
-
进入SSL vpn界面后然后在URL路径中输入服务端的URL路径进行访问对方服务端局域网的web
-
不通过SSL vpn界面访问而直接通过浏览器访问服务端web是不可以的
-
验证完成后,试验成功!