多厂商VPN系列之五:Cisco SSL VPN的实现【基于路由器,包含 Anyconnect】 | 网络之路博客(公众号同名)(其他平台网络之路Blog)
登录
  • 欢迎网络之路博客网站,分享有用的知识点,公众号:网络之路博客,B站:网络之路Blog
  • 如果您觉得本站对您有帮助,那么赶紧使用Ctrl+D 收藏吧,支持我们下
  • 远程技术支持的淘宝店铺已经开张了哦,传送门:需要的朋友可以点击查看

多厂商VPN系列之五:Cisco SSL VPN的实现【基于路由器,包含 Anyconnect】

【汇总】学习VPN其实很简单

文档帖子汇总学习必备软件
    博主也只是业余时间写写技术文档,请大家见谅,大家觉得不错的话,可以推荐给朋友哦,博主会努力推出更好的系列文档的。如果大家有任何疑问或者文中有错误跟疏忽的地方,欢迎大家留言指出,博主看到后会第一时间修改,谢谢大家的支持,更多技术文章尽在网络之路博客,http://ccieh3c.com

说明

SSL VPN是这几年越来越火的远程访问VPN了,因为它基于browser来实现一个安全的访问,它跟IPsec的远程访问,方便在于不需要安装任何的客户端,这对于远程办公或者需要突然临时有事需要访问公司内部的文件,可以就在附近网吧进行访问,而不需要任何的客户端安装。
SSL和TLS历史:
安全套接层俗称Secure Socket Layer (SSL )是由Netscape Communitcation于1990年开发,用于保障Wo r d Wi d e We b(WWW)通讯的安全。主要任务是提供私密性,信息完整性和身份认证。1994 年改版为SSLv2 ,1995 年改版为SSLv3 。
Transport Layer Security(TLS )标准协议由 IETF 于1999年颁布,整体来说TLS 非常类似与SSLv3 ,只是对SSLv3 做了些增加和修改。 现在大部分使用的是TLS了,因为它属于标准化协议,后续开发了基于无线的WTLS和基于UDP传输数据的DTLS。
SSL是一个不依赖与平台和运用程序的协议,用于保障TCP-Based 运用安全,SSL在TCP层和应用层之间,就像应用连接到TCP连接的一个插口。
我们常用的HTTPS,就是HTTP over SSL,它工作过程:PC访问服务器的时候,如果证书是信任的,那么直接推送到PC上,如果是不信任,我们就需要手动信任它。然后PC的IE浏览器产生一个随机化对称密钥,用服务器推送的证书的公钥对这个密钥做加密,然后发送给服务器,服务器收到以后用这个私钥解密后,得到对称密钥,后续的数据包就利用这个对称密钥来保证安全.这个在我们访问https的时候经常遇到询问你是否信任这个证书站点,SSL VPN实验中也是经常遇到。

第一阶段:Handshake phase(握手阶段)
a.协商加密算法
b.认证服务器
c.建立用于加密和MAC用的密钥
第二阶段:Secure data transfer phase(安全的数据传输阶段)
在已经建立的SSL连接里安全的传输数据
这些是在秦柯老师的SSL VPN卷一看的,深入的部分还有许多不了解,所以不做深入了。

SSL VPN特点 (7.0为SSL VPN, 8.0以后为 Anyconnect)
1、不需要预先安全客户端软件
2、使用标准的网页浏览器建立远程VPN连接
3、使用浏览器拥有SSL安全技术提供数据私密性,完整性校验,和源认证
4、提供细致的访问控制
5、客户端运行程序可以通过多种方式动态的下载。如:连接时在线下载,通过JAVA,activex或者EXE文件分发
6、为连接互联网的系统灵活的建立VPN连接,不过这个系统是否被公司管理
7、在任何地点都能轻松的穿越防火墙和网络
8、支持透明的无线漫游
9、可以使用集成的IOS防火墙特性提供增强的安全性。

Anyconnect表现在:任意地点,任意环境,任意操作系统 、任意参数可选
分为 1. WEB-enable mode :通过浏览器,在线通过ActiveX或 Java
2、Standalone mode :使用MSI安装包,直接在客户端安装

关于SSL VPN与其他VPN的比较,摘自秦柯老师的总结

 image001.jpg

SSLVPN Access Methods (SSL VPN访问的四种模式)
1、Reverse proxy technology (Clientless Access)
2、port-forwarding technology
3、SSL VPN Tunnel Client
4、Integrated terminal services (只有ASA支持)
1、Reverse proxy technology (clientless access) 只适合访问 WEB 文件服务器,也通常叫WEB VPN
Reverse Proxy是一个内部服务器和远程用户之间的代理服务器,提供给远程用户提供访问内部WEB资源的入口点。对于远程用户而言 这台Reverse Proxy就是一台真正的WEB服务器。当收到 用户的请求的时候,会把请求转送到内部服务器,就像用户直接去获取
一样,并把服务器返回的内容发送给客户端。
| PC——————| | Reverse Proxy——————| | Server ——————|
访问的过程是 先PC与Reverse 建立TCP会话。 然后Reverse 与Server建立TCP会话(用的为reverse的地址)Reverse把PC发过来的请求,通过与Server的TCP发送给Server,返回过程也一样。

2、port-forwarding Technology 只可以访问基于TCP固定的端口服务
port-frwarding 客户端是一个客户端代理程序,为特殊的流量做中继,通过已经连接的SSLVPN连接来转发给固定的端口。这个客户端一般小于100KB
3、SSL VPN Tunnel Client (通过安装SSL客户端,可以基于网络层流量进行保护,需要管理员权限,它的作用可以与EZVPN相比,更加方便、灵活。)
4、关于terminal server只有ASA才能实现,它是产商对于SSL VPN的更好的支持。不同的产商支持的类型不同,cisco支持SSH、远程登陆之类的。
关于SSLVPN的实现,每个产商的功能可能不太一样,所以在分析需求和选购的时候,最好能现场验证,否则到时候容易浪费时间、精力。


 image002.png

实验环境SOHO作为一个模拟外部网络的一个场点,Client通过SOHO提供的NAT功能访问internet和公司的SSLVPN, HTTP_telnet作为测试环境,AAA Server作为扩展性使用。

SOHO:
interface FastEthernet0/0
ip address 23.1.1.2 255.255.255.0
!
interface FastEthernet0/1
ip address 200.200.200.1 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 23.1.1.1
Internet:
interface FastEthernet0/0
ip address 23.1.1.1 255.255.255.0
interface FastEthernet0/1
ip address 12.1.1.2 255.255.255.0
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255

SSL VPN:
interface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
ip nat inside
!
interface FastEthernet0/1
ip address 12.1.1.1 255.255.255.0
ip nat outside
ip route 0.0.0.0 0.0.0.0 12.1.1.2
ip nat inside source list nat interface f0/1 overload
ip access-list extended nat
permit ip any any

router ospf 1
router-id 1.1.1.1
network 192.168.1.0 0.0.0.255 area 0

HTTP_telnet
interface FastEthernet0/0
ip address 192.168.1.2 255.255.255.0
interface Loopback0
ip address 2.2.2.2 255.255.255.255!
router ospf 1
router-id 2.2.2.2
network 2.2.2.0 0.0.0.255 area 0
network 192.168.1.0 0.0.0.255 area 0
default-information originate
!

ip http server
ip http authentication local
line vty 0 4
Http_Telnet(config-line)#ling
Http_Telnet(config-line)#login local
username cciese privilege 15 password cisco

基本配置,Client能访问internet资源 和SSL VPN外部接口的访问,内部通过OSPF模拟一个内部网络。HTTP-Telnet作为测试环境。
开始SSL VPN的配置,先介绍几个概念,在cisco IOS SSL VPN实现,它依靠gateway、context、group policy三个组成。
1、gateway:cisco IOS 路由器是一个在SSL-enable VPN客户和私有网络资源之间的proxy (代理服务器).在SSL VPN隧道能够建立之前,为了连接或终结一个VPN会话,我们需要给gateway关联一个公网 IP或者主机名。这样VPN用户就可以使用浏览器来连接这个IP或者主机名来协商SSL。gateway能为多个与context关联的提供服务
2、Context: 实际的用户会话是连接 gateway定义的IP地址,直接和context建立的。还可以运用策略到context来先限制对实际用户的认证。当认证通过后,配置的策略就运用到这个用户会话上。
3、Group policy:是一个在SSLVPN用户隧道协商过程中继承的参数。(策略大部分都是基于这个来实现)
关于group policy是在context中定义的,一个context可以定义多个group policy,但是在context中必须存在一个default group policy。
如果一个context 定义了多个Group policy,但是radius服务器并没有推送任何policy。那么会用Default Group policy中的策略给这用户
1、webvpn gateay cciese :定义一个gateway ,名字为cciese
ip address 12.1.1.1 port 443
inservice
当建立一个gateway后,它会自动生成一个自签名的证书,在这个进程中只需要设置哪个作为网关,其实端口号不需要设置 默认为443,inservice表示开启服务,默认是关闭的。
2、webvpn context c1
gateway cciese
inservice
定义个context名字为c1,关联之前的gateway,然后开启服务,熟悉firewall的朋友 肯定比较熟悉context,就像ASA可以实现多个虚拟防火墙一样,每个context之间是独立的,在这里面也是一样,它还能关联用户,需要使用radius来实现。
3、usernmae cisco password cisco
这三部完成,基于最简单的SSL VPN就完成了

 image003.jpg
 image004.jpg
 image005.jpg
 image006.jpg
 image007.jpg

Client访问internet 1.1.1.1正常成功,然后用网页访问https://12.1.1.1,就进入登陆界面了,其实也不是什么都不能实现,它就能实现之前说的Clientless Access,能实现基于网页形式的访问,局限性比较大。就像在网页输入192.168.1.2,就自动转入登陆了。
还能实现关于文件访问 或者一个URL的标签,因为有时候关于不是很懂技术的人来说,让它输入192.168.1.1 这些信息 它们觉得很繁琐,那么我们可以基于这种情况把常用访问的都用标签形式表示出来,而省去这个烦恼。
SSLVPN(config)#webvpn context c1
SSLVPN(config-webvpn-context)#url-list “cisco”
SSLVPN(config-webvpn-url)#heading “CCNP”
SSLVPN(config-webvpn-url)#url-text “OSPF” url-value 192.168.1.2
SSLVPN(config-webvpn-context)#policy group test1
SSLVPN(config-webvpn-group)#url-list cisco
SSLVPN(config-webvpn-context)#default-group-policy test1

 image008.jpg

它实现的效果就是这样,在这个书签中显示了CCNP列表有个OSPF的标签,之前在上面说过context可以定义多个group policy,但是必须存在一个default group policy,所以之前定义的url-list cisco,是定义一个名字,只作于调用,没别的用处,真实的内容heading就是相当于一个文件夹,uri-text就是这文件夹里面的文件。最后在group policy中调用,然后把这个policy设为default的。
第二个效果就是文件访问
SSLVPN(config-webvpn-context)#cifs-url-list cisco
SSLVPN(config-webvpn-cifs-url)#heading “CCIE”
SSLVPN(config-webvpn-cifs-url)#url-text “multicast” url-value 192.168.1.2
SSLVPN(config-webvpn-context)#nbns-list cisco
SSLVPN(config-webvpn-nbnslist)#nbns-server 123.1.1.1
SSLVPN(config-webvpn-context)#policy group test1
SSLVPN(config-webvpn-group)#nbns-list cisco
SSLVPN(config-webvpn-group)#cifs-url-list cisco
SSLVPN(config-webvpn-group)#functions file-access
SSLVPN(config-webvpn-group)#functions file-browse
SSLVPN(config-webvpn-group)#functions file-entry

 image009.jpg

这跟http访问是一样的,我作为一个效果实现了,关于nbns就是文件访问,在window里面如果想通过主机名来访问就必须装wins服务器来做解析,在group policy里面三句话,file-access 是必须敲的,不敲的话关于browse和entry都不能实现,entry的效果就是哪个network file的搜索框,而browser就是那个网络邻居的小图标,它们实现的效果就是一个目的,通过url或者网上邻居的图标来访问共享的文件夹。
关于cifs跟之前的URL-list一样的目的,就是为了不太懂技术的人使用的,也是定义一个书签,然后在定义标签,这里书签为ccie,标签为multicast。这里因为文件系统有点问题,所以测试不了,可以根据需求来定义

port-forwarding Technology 必须使用group policy来实现。
关于端口转发举几个例子,它能实现基于TCP的静态端口与本地端口进行映射,比如把本地的127.0.0.1 5555端口映射成内部网络192.168.1.2 的23号端口,只需要在本地telnet 127.0.0.1 5555就自动转换了。
SSLVPN(config)#webvpn context c1
SSLVPN(config)#port-forward “cisco”
SSLVPN(config)#local-port 4444 remote-server “192.168.1.2” remote-port 23 description “Telnet”
SSLVPN(config-webvpn-group)#port-forward cisco

 image010.jpg
 image011.jpg
 image012.jpg

当telnet 本地127.0.0.1 4444端口号自动映射到192.168.1.2 23号端口了,并且有加解密情况。 这个功能需要java的支持,版本需要在
1.6以上。

SSL VPN关于IOS,默认情况下只能存在一个group policy,它不像ASA默认就有隧道组的概念,所以要想完成多个group policy的实现,那么就必须定义AAA Server来做联动,当使用这个用户登陆的时候,那么就继承这个policy的策略,如果基于那个用户登陆,就继承那个policy的策略。 AAA server这里就不做太多介绍了。
SSLVPN(config)#aaa new-model
SSLVPN(config)#aaa authentication login noacs local none
SSLVPN(config)#line con 0
SSLVPN(config-line)#login authentication noacs
SSLVPN(config)#aaa authentication login sslvpn group radius
SSLVPN(config)#radius-server host 192.168.1.3 key cisco
这里定义一个noacs作为线下保护,AAA一旦开启的话,所以的登陆都要求做认证,这是需要养成一个习惯。 然后定义一个login认证,认证送往radius服务器,服务器的地址是192.168.1.3 key cisco。
在AAA服务器上,Network configuration里面定义一个Client。

 image013.jpg
 image014.jpg

Client地址为192.168.1.1 密钥为cisco,与Client定义的一样,然后点Submit+Apply,就定义完毕了,cisco ACS也是基于JAVA实现的。
然后定义两个用户。test1 与test2为了方便做测试。这里最重要的就是radius的类型,必须是IOS的。

 image015.jpg

在做策略之前,先测试下Client与Server之间是否能够测试成功。

 image016.jpg

Server跟Client已经能够通信了,开始进行policy group的授权,我定义两个policy 一个就是之前做了许多策略的,名字为test1,那么还定义一个test2,在这个里面我设置一个baner,定义为“you are welcome” ,正好test1用户对应group test1 test2对应组test2。
SSLVPN(config)#webvpn context c1
SSLVPN(config-webvpn-context)#aaa authentication list sslvpn
SSLVPN(config-webvpn-context)#policy group test2
SSLVPN(config-webvpn-group)#banner “you are welcome”
调用AAA认证,默认为本地认证,然后定义一个test2。
主要在于ACS服务器的属性设置,默认情况下ACS的属性没有全部显示,大部分都是在组里面显示,而用户来继承它的属性,在这个测试环境中我们必须把用户属性给调试出来。 基于组的适用于人数比较多的时候。
在AAA的选项 列表选择

 image017.jpg
 image018.jpg

出现这个界面后,先在Advanced Options ,里面设置一个per-user TACACS+/RADIUS属性打勾

 image019.jpg

然后在点击 radius cisco IOS/pix 6.0里面第一个选项 cisco-av-pair 的user下打勾,默认没有打,每选择一个选项记得Submit。

 image020.jpg

由于第一个用户是继承default的策略。所以不需要做修改,我们在test2中做修改,点击用户信息 找到这个选项

 image021.jpg

这个格式前面固定的,test2就是表示你这个用户想关联的group policy是哪个,必须名字跟你设置的一样。

 image022.jpg
 image023.jpg

当使用test1登陆的时候,它继承默认的组策略。

 image024.jpg
 image025.jpg
 image026.jpg

当使用test2登陆的时候,它用于关联了group policy 所以它显示了you are welcome和没有定义策略。

关于SSL VPN第三块 就是SVC跟CSD了,SVC就是一个软件Client,它跟EZVPN的功能非常相识,因为有些动态端口的流量访问基于上面两种形式是无法完成的,所以必须依靠SVC来完成,CSD是cisco的另外一个提供安全保证的功能,它能实现你在网吧、公共场所这些不安装的环境下,虚拟一个桌面出来,当访问结束以后,它会清空所以访问的痕迹,并且可以定义许多策略来规定用户的使用。
关于这个两个插件 在cisco SDM包里面就用,必须使用7200才能模拟环境,首先需要format disk0,把空间格式化。然后把插件copy到disk0中,建议使用FTP,TFTP虽然方便,但是每次规定只能传递512字节的数据,比较慢。
SSLVPN(config)#webvpn install svc disk0:sslclient-win-1.1.4.176.pkg
SSLVPN(config)#webvpn install csd disk0:securedesktop-ios-3.1.1.45-k9.pkg
installed successfully,出现这句话表示加载成功了。
首先看下SVC开启。
ip local pool cciese 100.1.1.100 100.1.1.200
SSLVPN(config)#webvpn context c1
SSLVPN(config-webvpn-context)#policy group test1
SSLVPN(config-webvpn-group)#functions svc-enabled
SSLVPN(config-webvpn-group)#svc address-pool cciese
SSLVPN(config-webvpn-group)#svc split include 192.168.1.0 255.255.255.0
有些老版本的地址池定义的网段必须与路由器处于直连网段(可以用环回口代替),否则会使用anyconnect失败
定义一个地址池,SVC也会为每个Client分配一个地址,然后在group policy下开启,然后调用地址池。 这里我把隧道分离也做了,不然默认情况下会把所有流量都引向Server那,就不能访问internet了。

 image027.jpg

点击 tunnel conection就可以安装了,它这里说是anyconnect ,但是实现的效果还是SVC,anyconnect 可以进行拨号连接,它这个必须每次登陆网页后在下载。 第一次安装的话,会有点小慢。

 image028.jpg
 image029.jpg
 image030.jpg

当安装成功后,会有一个提示,然后关于split tunnel也获取了,然后Telnet 192。168.1.2后 加解密也正常。这种客户端只是SVC,因为断开后就自动卸载了,还有一种anyconnect,可以实现跟EZVPN的client一样,输入用户名地址 就可以直接拨入了 而不需要进入网页。但是一直没有找到合适的插件,所以只能使用SVC了。
最后一个部分,CSD
SSLVPN(config)#webvpn context c1
SSLVPN(config-webvpn-context)#csd enable
SSLVPN(config)#enable secret cciese
配置命令很简单,但是必须创建一个enable密码,因为默认情况下csd没有定义location,需要创建location,location相当于policy一样,可以定义多个来规定策略,比如IP address属于哪个范围,然后注册表必须满足,然后登陆上去后 运行访问哪些资源什么的。
https://12.1.1.1/csd_admin.html

 image031.jpg

这里username为admin 密码为之前设置的cciese

 image032.jpg

进去之后,创建一个location。

 image033.jpg

策略里面最重要的是VPN feature Policy的Full Tunneling 为On状态。否则CSD启用不成功,我这还开启了port-forwarding作为测试。

 image034.jpg

禁止使用CMD功能。

 image035.jpg

当安装完成后,它会进入安装桌面。

 image036.jpg
 image037.jpg

命令提示符 之前设置禁止使用,所以打开提示错误。

 image038.png

我后来设置了个自动安装,所以port-forwarding不会显示出来了。

 image039.jpg
 image040.jpg
 image041.jpg

最后,抓包验证下,第一个是关于 Client到SSL VPN之间的,它使用TLS V1来加密数据,而不是使用SSL 3.0,第二个是SSL VPN解密后,然后转发给内部服务器后,是通过这个分配给Client的地址为源发送的。 所以 当一个Client登入SSL VPN后,是Client与SSL VPN之间现成一个TCP的连接,这个连接被TLS保护着,然后SSL VPN在与内部服务器建立另外一个连接,它相当于一个代理。所以关于启用NAT,它也不会影响正常的流量转发。更多效果,就需要自己去发现跟体验了。

下载对应文档

百度盘下载博客资源汇总与学习思路
如果下载地址失效,请联系博主或者在下面留言,谢谢。下面也有其他您需要的资源推荐哦

关于博客资源下载说明

首先,感谢大家对网络之路博客的支持,本站所有资源都是开放下载,不做任何限制,资源都是上传在百度盘,分为两种类型:
(1)第一种是书籍PDF与视频类,全部放在博客分享,觉得对大家学习有帮助的博主会收集好、然后以博主的经验整理分类后排序好分享出来。
(2)第二种是技术性文章与视频,全部放在公众号(网络之路博客)/B站(网络之路Blog)发布,以博主原创为主,主要分享系列为主,由浅入深的带大家了解工作中常用到的一些网络技术,当然也会分享一些比较经典的案例。
(3)分享资源有涉及到您的利益以及版权问题,请联系博主,24小时候内删除。
想第一时间收到最新更新内容吗,点击获取~~~

点击查看详情

(广告)博主自主原创最新实战课程

点击查看详情


(广告)远程技术支持(设备调试),有搞不定的找我,价格实惠,为您解决实际工作上的问题

远程技术调试与技术支持,点击查看详情


原创与收集的内容,允许转载,转载时请务必以超链接形式标明文章原始出处,博客地址http://ccieh3c.com。

喜欢 (0)
[]
分享 (0)
公众号:网络之路博客(其他平台网络之路Blog)
分享一些自己懂的技术知识点,希望对大家有帮助。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址