VPN技术详解.docx
《VPN技术详解.docx》由会员分享,可在线阅读,更多相关《VPN技术详解.docx(43页珍藏版)》请在冰豆网上搜索。
VPN技术详解
VPN技术详解
一、引言
虚拟专用网络可以实现不同网络的组件和资源之间的相互连接。
虚拟专用网络能够利用Internet或其它公共互联网络的基础设施为用户创建隧道,并提供与专用网络一样的安全和功能保障。
虚拟专用网络允许远程通讯方,销售人员或企业分支机构使用Internet等公共互联网络的路由基础设施以安全的方式与位于企业局域网端的企业服务器建立连接。
虚拟专用网络对用户端透明,用户好象使用一条专用线路在客户计算机和企业服务器之间建立点对点连接,进行数据的传输。
虚拟专用网络技术同样支持企业通过Internet等公共互联网络与分支机构或其它公司建立连接,进行安全的通讯。
这种跨越Internet建立的VPN连接逻辑上等同于两地之间使用广域网建立的连接。
虽然VPN通讯建立在公共互联网络的基础上,但是用户在使用VPN时感觉如同在使用专用网络进行通讯,所以得名虚拟专用网络。
使用VPN技术可以解决在当今远程通讯量日益增大,企业全球运作广泛分布的情况下,员工需要访问中央资源,企业相互之间必须进行及时和有效的通讯的问题。
如果希望企业员工无论身处何地都能够与企业计算资源建立连接,企业必须采用一个可靠性高、扩展性强的远程访问解决方案。
一般的,企业有如下选择:
1.管理信息系统(MIS)部门驱动方案。
建立一个内部的MIS部门专门负责购买,安装和维护企业modem池和专用网络基础设施。
2.增值网络(VAN)方案。
企业雇佣一个外部公司负责购买,安装和维护modem池和远程通讯网络基础设施。
从费用,可靠性,管理和便于连接等几方面来看,这两种方案都不能最大程度的满足企业对网络安全性或扩展性的要求。
因此,选择一种基于Internet技术的廉价方案取代企业花费在modem池和专用网络基础设施上的投资就显得极为重要。
二、虚拟专用网络的基本用途
通过Internet实现远程用户访问
虚拟专用网络支持以安全的方式通过公共互联网络远程访问企业资源。
与使用专线拨打长途或(1-800)电话连接企业的网络接入服务器(NAS)不同,虚拟专用网络用户首先拨通本地ISP的NAS,然后VPN软件利用与本地ISP建立的连接在拨号用户和企业VPN服务器之间创建一个跨越Internet或其它公共互联网络的虚拟专用网络。
[page]
通过Internet实现网络互连
可以采用以下两种方式使用VPN连接远程局域网络。
1.使用专线连接分支机构和企业局域网。
2.不需要使用价格昂贵的长距离专用电路,分支机构和企业端路由器可以使用各自本地的专用线路通过本地的ISP连通Internet。
VPN软件使用与当本地ISP建立的连接和Internet网络在分支机构和企业端路由器之间创建一个虚拟专用网络。
3.使用拨号线路连接分支机构和企业局域网。
4.不同于传统的使用连接分支机构路由器的专线拨打长途或(1-800)电话连接企业NAS的方式,分支机构端的路由器可以通过拨号方式连接本地ISP。
VPN软件使用与本地ISP建立起的连接在分支机构和企业端路由器之间创建一个跨越Internet的虚拟专用网络。
应当注意在以上两种方式中,是通过使用本地设备在分支机构和企业部门与Internet之间建立连接。
无论是在客户端还是服务器端都是通过拨打本地接入电话建立连接,因此VPN可以大大节省连接的费用。
建议作为VPN服务器的企业端路由器使用专线连接本地ISP。
VPN服务器必须一天24小时对VPN数据流进行监听。
连接企业内部网络计算机
在企业的内部网络中,考虑到一些部门可能存储有重要数据,为确保数据的安全性,传统的方式只能是把这些部门同整个企业网络断开形成孤立的小网络。
这样做虽然保护了部门的重要信息,但是由于物理上的中断,使其他部门的用户无法,造成通讯上的困难。
采用VPN方案,通过使用一台VPN服务器既能够实现与整个企业网络的连接,又可以保证保密数据的安全性。
路由器虽然也能够实现网络之间的互联,但是并不能对流向敏感网络的数据进行限制。
使用VPN服务器,但是企业网络管理人员通过使用VPN服务器,指定只有符合特定身份要求的用户才能连接VPN服务器获得访问敏感信息的权利。
此外,可以对所有VPN数据进行加密,从而确保数据的安全性。
没有访问权利的用户无法看到部门的局域网络。
三、VPN的基本要求
一般来说,企业在选用一种远程网络互联方案时都希望能够对访问企业资源和信息的要求加以控制,所选用的方案应当既能够实现授权用户与企业局域网资源的自由连接,不同分支机构之间的资源共享;又能够确保企业数据在公共互联网络或企业内部网络上传输时安全性不受破坏.因此,最低限度,一个成功的VPN方案应当能够满足以下所有方面的要求:
1.用户验证
2.VPN方案必须能够验证用户身份并严格控制只有授权用户才能访问VPN。
另外,方案还必须能够提供审计和记费功能,显示何人在何时访问了何种信息。
3.地址管理
4.VPN方案必须能够为用户分配专用网络上的地址并确保地址的安全性。
5.数据加密
6.对通过公共互联网络传递的数据必须经过加密,确保网络其他未授权的用户无法读取该信息。
7.密钥管理
8.VPN方案必须能够生成并更新客户端和服务器的加密密钥。
9.多协议支持
10.VPN方案必须支持公共互联网络上普遍使用的基本协议,包括IP,IPX等。
以点对点隧道协议(PPTP)或第2层隧道协议(L2TP)为基础的VPN方案既能够满足以上所有的基本要求,又能够充分利用遍及世界各地的Internet互联网络的优势。
其它方案,包括安全IP协议(IPSec),虽然不能满足上述全部要求,但是仍然适用于在特定的环境。
本文以下部分将主要集中讨论有关VPN的概念,协议,和部件(component)。
四、隧道技术基础
隧道技术是一种通过使用互联网络的基础设施在网络之间传递数据的方式。
使用隧道传递的数据(或负载)可以是不同协议的数据桢(此字不正确)或包。
隧道协议将这些其它协议的数据桢或包重新封装在新的包头中发送。
新的包头提供了路由信息,从而使封装的负载数据能够通过互联网络传递。
被封装的数据包在隧道的两个端点之间通过公共互联网络进行路由。
被封装的数据包在公共互联网络上传递时所经过的逻辑路径称为隧道。
一旦到达网络终点,数据将被解包并转发到最终目的地。
注意隧道技术是指包括数据封装,传输和解包在内的全过程。
隧道所使用的传输网络可以是任何类型的公共互联网络,本文主要以目前普遍使用Internet为例进行说明。
此外,在企业网络同样可以创建隧道。
隧道技术在经过一段时间的发展和完善之后,目前较为成熟的技术包括:
1.IP网络上的SNA隧道技术
2.当系统网络结构(SystemNetworkArchitecture)的数据流通过企业IP网络传送时,SNA数据桢将被封装在UDP和IP协议包头中。
3.IP网络上的NovellNetWareIPX隧道技术
4.当一个IPX数据包被发送到NetWare服务器或IPX路由器时,服务器或路由器用UDP和IP包头封装IPX数据包后通过IP网络发送。
另一端的IP-TO-IPX路由器在去除UDP和IP包头之后,把数据包转发到IPX目的地。
近几年不断出现了一些新的隧道技术,本文将主要介绍这些新技术。
具体包括:
1.点对点隧道协议(PPTP)
2.PPTP协议允许对IP,IPX或NetBEUI数据流进行加密,然后封装在IP包头中通过企业IP网络或公共互联网络发送。
3.第2层隧道协议(L2TP)
4.L2TP协议允许对IP,IPX或NetBEUI数据流进行加密,然后通过支持点对点数据报传递的任意网络发送,如IP,X.25,桢中继或ATM。
5.安全IP(IPSec)隧道模式
6.IPSec隧道模式允许对IP负载数据进行加密,然后封装在IP包头中通过企业IP网络或公共IP互联网络如Internet发送。
五、隧道协议
为创建隧道,隧道的客户机和服务器双方必须使用相同的隧道协议。
隧道技术可以分别以第2层或第3层隧道协议为基础。
上述分层按照开放系统互联(OSI)的参考模型划分。
第2层隧道协议对应OSI模型中的数据链路层,使用桢作为数据交换单位。
PPTP,L2TP和L2F(第2层转发)都属于第2层隧道协议,都是将数据封装在点对点协议(PPP)桢中通过互联网络发送。
第3层隧道协议对应OSI模型中的网络层,使用包作为数据交换单位。
IPoverIP以及IPSec隧道模式都属于第3层隧道协议,都是将IP包封装在附加的IP包头中通过IP网络传送。
[page]
六、隧道技术如何实现
对于象PPTP和L2TP这样的第2层隧道协议,创建隧道的过程类似于在双方之间建立会话;隧道的两个端点必须同意创建隧道并协商隧道各种配置变量,如地址分配,加密或压缩等参数。
绝大多数情况下,通过隧道传输的数据都使用基于数据报的协议发送。
隧道维护协议被用来作为管理隧道的机制。
第3层隧道技术通常假定所有配置问题已经通过手工过程完成。
这些协议不对隧道进行维护。
与第3层隧道协议不同,第2层隧道协议(PPTP和L2TP)必须包括对隧道的创建,维护和终止。
隧道一旦建立,数据就可以通过隧道发送。
隧道客户端和服务器使用隧道数据传输协议准备传输数据。
例如,当隧道客户端向服务器端发送数据时,客户端首先给负载数据加上一个隧道数据传送协议包头,然后把封装的数据通过互联网络发送,并由互联网络将数据路由到隧道的服务器端。
隧道服务器端收到数据包之后,去除隧道数据传输协议包头,然后将负载数据转发到目标网络。
七、隧道协议和基本隧道要求
因为第2层隧道协议(PPTP和L2TP)以完善的PPP协议为基础,因此继承了一整套的特性。
1.用户验证
2.第2层隧道协议继承了PPP协议的用户验证方式。
许多第3层隧道技术都假定在创建隧道之前,隧道的两个端点相互之间已经了解或已经经过验证。
一个例外情况是IPSec协议的ISAKMP协商提供了隧道端点之间进行的相互验证。
3.令牌卡(Tokencard)支持
4.通过使用扩展验证协议(EAP),第2层隧道协议能够支持多种验证方法,包括一次性口令(one-timepassword),加密计算器(cryptographiccalculator)和智能卡等。
第3层隧道协议也支持使用类似的方法,例如,IPSec协议通过ISAKMP/Oakley协商确定公共密钥证书验证。
5.动态地址分配
6.第2层隧道协议支持在网络控制协议(NCP)协商机制的基础上动态分配客户地址。
第3层隧道协议通常假定隧道建立之前已经进行了地址分配。
目前IPSec隧道模式下的地址分配方案仍在开发之中。
7.数据压缩
8.第2层隧道协议支持基于PPP的数据压缩方式。
例如,微软的PPTP和L2TP方案使用微软点对点加密协议(MPPE)。
IETP正在开发应用于第3层隧道协议的类似数据压缩机制。
9.数据加密
10.第2层隧道协议支持基于PPP的数据加密机制。
微软的PPTP方案支持在RSA/RC4算法的基础上选择使用MPPE。
第3层隧道协议可以使用类似方法,例如,IPSec通过ISAKMP/Oakley协商确定几种可选的数据加密方法。
微软的L2TP协议使用IPSec加密保障隧道客户端和服务器之间数据流的安全。
11.密钥管理
12.作为第2层协议的MPPE依靠验证用户时生成的密钥,定期对其更新。
IPSec在ISAKMP交换过程中公开协商公用密钥,同样对其进行定期更新。
13.多协议支持
14.第2层隧道协议支持多种负载数据协议,从而使隧道客户能够访问使用IP,IPX,或NetBEUI等多种协议企业网络。
相反,第3层隧道协议,如IPSec隧道模式只能支持使用IP协议的目标网络。
八、点对点协议
因为第2层隧道协议在很大程度上依靠PPP协议的各种特性,因此有必要对PPP协议进行深入的探讨。
PPP协议主要是设计用来通过拨号或专线方式建立点对点连接发送数据。
PPP协议将IP,IPX和NETBEUI包封装在PP桢内通过点对点的链路发送。
PPP协议主要应用于连接拨号用户和NAS。
PPP拨号会话过程可以分成4个不同的阶段。
分别如下:
阶段1:
创建PPP链路
PPP使用链路控制协议(LCP)创建,维护或终止一次物理连接。
在LCP阶段的初期,将对基本的通讯方式进行选择。
应当注意在链路创建阶段,只是对验证协议进行选择,用户验证将在第2阶段实现。
同样,在LCP阶段还将确定链路对等双方是否要对使用数据压缩或加密进行协商。
实际对数据压缩/加密算法和其它细节的选择将在第4阶段实现。
阶段2:
用户验证
在第2阶段,客户会PC将用户的身份明发给远端的接入服务器。
该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。
大多数的PPP方案只提供了有限的验证方式,包括口令验证协议(PAP),挑战握手验证协议(CHAP)和微软挑战握手验证协议(MSCHAP)。
1.口令验证协议(PAP)
2.PAP是一种简单的明文验证方式。
NAS要求用户提供用户名和口令,PAP以明文方式返回用户信息。
很明显,这种验证方式的安全性较差,第三方可以很容易的获取被传送的用户名和口令,并利用这些信息与NAS建立连接获取NAS提供的所有资源。
所以,一旦用户密码被第三方窃取,PAP无法提供避免受到第三方攻击的保障措施。
3.挑战-握手验证协议(CHAP)
4.CHAP是一种加密的验证方式,能够避免建立连接时传送用户的真实密码。
NAS向远程用户发送一个挑战口令(challenge),其中包括会话ID和一个任意生成的挑战字串(arbitrarychallengestring)。
远程客户必须使用MD5单向哈希算法(one-wayhashingalgorithm)返回用户名和加密的挑战口令,会话ID以及用户口令,其中用户名以非哈希方式发送。
5.
6.CHAP对PAP进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以哈希算法对口令进行加密。
因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的操作,并将结果与用户返回的口令进行对照。
CHAP为每一次验证任意生成一个挑战字串来防止受到再现攻击(replayattack).在整个连接过程中,CHAP将不定时的向客户端重复发送挑战口令,从而避免第3方冒充远程客户(remoteclientimpersonation)进行攻击。
7.微软挑战-握手验证协议(MS-CHAP)
8.与CHAP相类似,MS-CHAP也是一种加密验证机制。
同CHAP一样,使用MS-CHAP时,NAS会向远程客户发送一个含有会话ID和任意生成的挑战字串的挑战口令。
远程客户必须返回用户名以及经过MD4哈希算法加密的挑战字串,会话ID和用户口令的MD4哈希值。
采用这种方式服务器端将只存储经过哈希算法加密的用户口令而不是明文口令,这样就能够提供进一步的安全保障。
此外,MS-CHAP同样支持附加的错误编码,包括口令过期编码以及允许用户自己修改口令的加密的客户-服务器(client-server)附加信息。
使用MS-CHAP,客户端和NAS双方各自生成一个用于随后数据加密的起始密钥。
MS-CHAP使用基于MPPE的数据加密,这一点非常重要,可以解释为什么启用基于MPPE的数据加密时必须进行MS-CHAP验证。
9.在第2阶段PPP链路配置阶段,NAS收集验证数据然后对照自己的数据库或中央验证数据库服务器(位于NT主域控制器或远程验证用户拨入服务器)验证数据的有效性。
阶段3:
PPP回叫控制(callbackcontrol)
微软设计的PPP包括一个可选的回叫控制阶段。
该阶段在完成验证之后使用回叫控制协议(CBCP)如果配置使用回叫,那么在验证之后远程客户和NAS之间的连接将会被断开。
然后由NAS使用特定的电话号码回叫远程客户。
这样可以进一步保证拨号网络的安全性。
NAS只支持对位于特定电话号码处的远程客户进行回叫。
阶段4:
调用网络层协议
在以上各阶段完成之后,PPP将调用在链路创建阶段(阶段1)选定的各种网络控制协议(NCP).例如,在该阶段IP控制协议(IPCP)可以向拨入用户分配动态地址。
在微软的PPP方案中,考虑到数据压缩和数据加密实现过程相同,所以共同使用压缩控制协议协商数据压缩(使用MPPC)和数据加密(使用MPPE)。
[page]
九、数据传输阶段
一旦完成上述4阶段的协商,PPP就开始在连接对等双方之间转发数据。
每个被传送的数据报都被封装在PPP包头内,该包头将会在到达接收方之后被去除。
如果在阶段1选择使用数据压缩并且在阶段4完成了协商,数据将会在被传送之间进行压缩。
类似的,如果如果已经选择使用数据加密并完成了协商,数据(或被压缩数据)将会在传送之前进行加密。
点对点隧道协议(PPTP)
PPTP是一个第2层的协议,将PPP数据桢封装在IP数据报内通过IP网络,如Internet传送。
PPTP还可用于专用局域网络之间的连接。
RFC草案“点对点隧道协议”对PPTP协议进行了说明和介绍。
该草案由PPTP论坛的成员公司,包括微软,Ascend,3Com,和ECI等公司在1996年6月提交至IETF。
可在如下站点http:
//www.ietf.orghttp:
//www.ietf.org参看草案的在线拷贝.PPTP使用一个TCP连接对隧道进行维护,使用通用路由封装(GRE)技术把数据封装成PPP数据桢通过隧道传送。
可以对封装PPP桢中的负载数据进行加密或压缩。
图7所示为如何在数据传递之前组装一个PPTP数据包。
第2层转发(L2F)
L2F是Cisco公司提出隧道技术,作为一种传输协议L2F支持拨号接入服务器将拨号数据流封装在PPP桢内通过广域网链路传送到L2F服务器(路由器)。
L2F服务器把数据包解包之重新注入(inject)网络。
与PPTP和L2TP不同,L2F没有确定的客户方。
应当注意L2F只在强制隧道中有效。
(自愿和强制隧道的介绍参看“隧道类型”)。
第2层隧道协议(L2TP)
L2TP结合了PPTP和L2F协议。
设计者希望L2TP能够综合PPTP和L2F的优势。
L2TP是一种网络层协议,支持封装的PPP桢在IP,X.25,桢中继或ATM等的网络上进行传送。
当使用IP作为L2TP的数据报传输协议时,可以使用L2TP作为Internet网络上的隧道协议。
L2TP还可以直接在各种WAN媒介上使用而不需要使用IP传输层。
草案RFC“第2层隧道协议”对L2TP进行了说明和介绍。
该文档于1998年1月被提交至IETF。
可以在以下网站http:
//www.ietf.orghttp:
//www.ietf.org获得草案拷贝。
IP网上的L2TP使用UDP和一系列的L2TP消息对隧道进行维护。
L2TP同样使用UDP将L2TP协议封装的PPP桢通过隧道发送。
可以对封装PPP桢中的负载数据进行加密或压缩。
图8所示为如何在传输之前组装一个L2TP数据包。
PPTP与L2TP
PPTP和L2TP都使用PPP协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。
尽管两个协议非常相似,但是仍存在以下几方面的不同:
1.PPTP要求互联网络为IP网络。
L2TP只要求隧道媒介提供面向数据包的点对点的连接。
L2TP可以在IP(使用UDP),桢中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或ATMVCs网络上使用。
2.PPTP只能在两端点间建立单一隧道。
L2TP支持在两端点间使用多隧道。
使用L2TP,用户可以针对不同的服务质量创建不同的隧道。
3.L2TP可以提供包头压缩。
当压缩包头时,系统开销(overhead)占用4个字节,而PPTP协议下要占用6个字节。
4.L2TP可以提供隧道验证,而PPTP则不支持隧道验证。
但是当L2TP或PPTP与IPSEC共同使用时,可以由IPSEC提供隧道验证,不需要在第2层协议上验证隧道。
十、IPSec隧道模式
IPSEC是第3层的协议标准,支持IP网络上数据的安全传输。
本文将在“高级安全”一部分中对IPSEC进行详细的总体介绍,此处仅结合隧道协议讨论IPSEC协议的一个方面。
除了对IP数据流的加密机制进行了规定之外,IPSEC还制定了IPoverIP隧道模式的数据包格式,一般被称作IPSEC隧道模式。
一个IPSEC隧道由一个隧道客户和隧道服务器组成,两端都配置使用IPSEC隧道技术,采用协商加密机制。
为实现在专用或公共IP网络上的安全传输,IPSEC隧道模式使用的安全方式封装和加密整个IP包。
然后对加密的负载再次封装在明文IP包头内通过网络发送到隧道服务器端。
隧道服务器对收到的数据报进行处理,在去除明文IP包头,对内容进行解密之后,获的最初的负载IP包。
负载IP包在经过正常处理之后被路由到位于目标网络的目的地。
IPSEC隧道模式具有以下功能和局限:
1.只能支持IP数据流
2.工作在IP栈(IPstack)的底层,因此,应用程序和高层协议可以继承IPSEC的行为。
3.由一个安全策略(一整套过滤机制)进行控制。
安全策略按照优先级的先后顺序创建可供使用的加密和隧道机制以及验证方式。
当需要建立通讯时,双方机器执行相互验证,然后协商使用何种加密方式。
此后的所有数据流都将使用双方协商的加密机制进行加密,然后封装在隧道包头内。
关于IPSEC的详细介绍参看本文稍后的“高级安全”部分。
十一、隧道类型
1.自愿隧道(Voluntarytunnel)
用户或客户端计算机可以通过发送VPN请求配置和创建一条自愿隧道。
此时,用户端计算机作为隧道客户方成为隧道的一个端点。
2.强制隧道(Compulsorytunnel)
由支持VPN的拨号接入服务器配置和创建一条强制隧道。
此时,用户端的计算机不作为隧道端点,而是由位于客户计算机和隧道服务器之间的远程接入服务器作为隧道客户端,成为隧道的一个端点。
目前,自愿隧道是最普遍使用的隧道类型。
以下,将对上述两种隧道类型进行详细介绍。
自愿隧道
当一台工作站或路由器使用隧道客户软件创建到目标隧道服务器的虚拟连接时建立自愿隧道。
为实现这一目的,客户端计算机必须安装适当的隧道协议。
自愿隧道需要有一条IP连接(通过局域网或拨号线路)。
使用拨号方式时,客户端必须在建立隧道之前创建与公共互联网络的拨号连接。
一个最典型的例子是Internet拨号用户必须在创建Internet隧道之前拨通本地ISP取得与Internet的连接。
对企业内部网络来说,客户机已经具有同企业网络的连接,由企业网络为封装负载数据提供到目标隧道服务器路由。
大多数人误认为VPN只能使用拨号连接。
其实,VPN只要求支持IP的互联网络。
一些客户机(如家用PC)可以通过使用拨号方式连接Internet建立IP传输。
这只是为创建隧道所做的初步准备,并不属于隧道协议。
强制隧道
目前,一些商家提供能够代替拨号客户创建隧道的拨号接入服务器。
这些能够为客户端计算机提供隧道的计算机或网络设备包括支持PPTP协议的前端处理器(FEP),支持L2TP协议的L2TP接入集线器(LAC)或支持IPSec的安全IP网关。
本文将主要以FEP为例进行说明。
为正常的发挥功能,FEP必须安装适当的隧道协议,同时必须能够当客户计算机建立起连接时创建隧道。
以Internet为例,客户机向位于本地ISP的能够提供隧道技术的NAS发出拨号呼叫。
例如,企业可以与某个ISP签定协议,由ISP为企业在全国范围内设置一套FEP。
这些FEP可以通过Internet互联网络创建一条到隧道服务器的隧道,隧道服务器与企业的专用网络相连。
这样,就可以将不同地方合并成企业网络端的一条单一的Internet连接。
因为客户只能使用由FEP创建的隧道,所以称为强制隧道。
一旦最初的连接成功,所有客