admin 管理员组

文章数量: 887021


2024年3月9日发(作者:keil5 keygen 下载)

VPN

虚拟专用网VPN系列讲座(一)

VPN--虚拟专用网(Virtual Private Network)是专用网络在公共网络如Internet上的扩展。VPN通过私有隧道技术在公共网络上仿真一条点到点的专线,从而达到安全的数据传输目的。基于Internet的VPN也称为IP-VPN。

单纯仿真一条点到点的连接,数据只要经过封装,再加上一个提供路由信息的报头就可以了。而如果要仿真一条专线,为保证传输数据的安全,通常还要对数据进行加密处理。VPN连接必须同时包含数据封装和加密两方面。

图一、VPN示意图

有了VPN,用户在家里或在路途中也可以利用Internet或其他公共网络对企业服务器进行远程访问。从用户的角度来看,VPN就是在用户计算机即VPN客户机和企业服务器即VPN服务器之间点到点的连接,由于数据通过一条仿真专线传输,用户感觉不到公共网络的实际存在,能够像在专线上一样处理企业内部信息。换言之,虚拟专用网不是真正的专用网络,但却能够实现专用网络的功能。

VPN可以使企业通过公共网络在公司总部和各远程分部以及客户之间建立快捷,安全、可靠的信息通信。这种连接方式在概念上等同于传统广域网WAN的运作。 VPN技术的出现,使企业不再依赖于昂贵的长途拨号以及长途专线服务,而代之以本地ISP提供的VPN服务。从企业中心站点铺设至当地ISP的专线要比传统WAN解决方案中的长途专线短得多,因而成本也低廉得多。

VPN的构成

一个典型VPN的组成部分如图二所示:

图二、VPN的构成

VPN服务器:接受来自VPN客户机的连接请求。

VPN客户机:可以是终端计算机也可以是路由器。

隧道:数据传输通道,在其中传输的数据必须经过封装。

VPN连接:在VPN连接中,数据必须经过加密。

隧道协议:封装数据、管理隧道的通信标准。

传输数据:经过封装、加密后在隧道上传输的数据。

公共网络:如Internet,也可以是其他共享型网络。

注:隧道里也可以发送未经加密的数据,但在这种情况下,专用数据没有经过加密处理而以易读形式在公共网络上传输,因而不属于VPN连接。

虚拟专用网VPN系列讲座(二)

一、点对点隧道协议PPTP(Point-to-Point Tunneling Protocol)

PPTP将PPP(Point-to-Point Protocol)帧封装进IP数据报中,通过IP网络如Internet或其他企业专用Intranet等发送。PPTP具体文档请参阅RFC 2637。

PPTP通过PPTP控制连接来创建、维护、终止一条隧道,并使用通用路由封装GRE(Generic Routing Encapsulation)对PPP帧进行封装。封装前,PPP帧的有效载荷即有效传输数据首先必须经过加密、压缩或是两者的混合处理。

PPTP协议假定在PPTP客户机和PPTP服务器之间有连通且可用的IP网络。因此如果PPTP客户机本身已经是某IP网络的组成部分,那么即可通过该IP网络与PPTP服务器取得连接;而如果PPTP客户机尚未连入网络,譬如在Internet拨号用户的情形下,PPTP客户机必须首先拨打NAS以建立IP连接。这里所说的PPTP客户机也就是使用PPTP协议的VPN客户机,而PPTP服务器亦即使用PPTP协议的VPN服务器。

在创建基于PPTP的VPN连接过程中,使用的认证机制与创建PPP连接时相同。此类认证机制主要有:扩展身份认证协议EAP(Extensible Authentication Protocol)、微软询问握手认证协议MS-CHAP(Microsoft Challenge-Handshake Authentication

Protocol)、CHAP 、Shiva口令字认证协议SPAP(Shiva Password

Authentication Protocol)和口令字认证协议PAP(Password

Authentication Protocol)。PPTP继承PPP有效载荷的加密和压缩。在Windows 2000中,由于PPP帧使用微软点对点加密技术MPPE(Microsoft Point-to-Point Encryption)进行加密,因此认证机制必须采用EAP或MS-CHAP。

MPPE只提供连接加密,而不提供端-端加密。端-端加密属于应用层的加密技术,如果应用中要求实现端-端加密,则可在PPTP隧道建立之后,使用IPSec对两端的IP数据流进行加密处理。基于Internet的PPTP服务器即使用PPTP协议的VPN服务器,它的一个接口在Internet上,另一个接口在Intranet上。

二、PPTP控制连接与隧道维护

PPTP控制连接建立在PPTP客户机IP地址和PPTP服务器IP地址之间,PPTP客户机使用动态分配的TCP端口号,而PPTP服务器则使用保留TCP端口号1723。PPTP控制连接携带PPTP呼叫控制和管理信息,用于维护PPTP隧道,其中包括周期性地发送回送请求和回送应答消息,以期检测出客户机与服务器之间可能出现的连接中断。

PPTP控制连接数据包包括一个IP报头,一个TCP报头和PPTP控制信息,数据包格式见图八。图八所示的PPTP控制连接数据包还

包括数据链路层报头和报尾。

图八、PPTP控制连接数据包

三、PPTP数据封装

PPTP数据的隧道化过程采用多层封装的方法。图九显示了封装后在隧道中传输的数据包格式。

[[The No.9 Picture.]]

图九、在隧道中传输的PPTP数据包格式

1)PPP帧的封装

初始PPP有效载荷如IP数据报、IPX数据报或NetBEUI帧等经过加密后,添加PPP报头,封装形成PPP帧。PPP帧再进一步添加GRE报头,经过第二层封装形成GRE报文。GRE是采用第47号IP协议的客户端协议,为在IP网络上进行数据封装提供了一种简单,轻巧的通用机制。有关GRE详细文档可参见RFC 1701和RFC 1702。在GRE报头中,协议类型即PPP帧的EtherType值应设置为0x880B。

2)GRE报文的封装 PPP有效载荷的第三层封装是在GRE报文外,再添加IP报头。IP报头包含数据包源端及目的端IP地址。

3)数据链路层封装 数据链路层封装是IP数据报多层封装的的最后一层,依据不同的外发物理网络再添加相应的数据链路层报头和报尾。例如,如果IP数据报将在以太网上传输,则用以太网报头和报尾对IP数据报进行数据链路层封装;如果IP数据报将在点-点WAN上传输,如模拟电话网或ISDN等,则用PPP报头和报尾对IP数据报进行数据链路层封装。

4)PPTP数据包的接收处理 PPTP客户机或PPTP服务器在接收到PPTP数据包后,将做如下处理:

1.处理并去除数据链路层报头和报尾

2.处理并去除IP报头

3.处理并去除GRE和PPP报头

4.如果需要的话,对PPP有效载荷即传输数据进行解密或解压缩。

5.对传输数据进行接收或转发处理

四、PPTP数据包和Windows 2000网络体系结构

下图描述了某使用模拟modem进行远程访问的VPN连接中,VPN客户机端数据报在Windows 2000网络体系结构中的封装流程。

[[The No.10 Picture.]]

图十、PPTP数据包的封装流程

具体步骤如下:

1.IP数据报、IPX数据报或NetBEUI帧由各自协议提交给对应于VPN连接的虚拟接口。该接口符合网络驱动程序接口规范NDIS。

2.NDIS将数据报提交给NDISWAN,由NDISWAN负责对数据进行加密、压缩处理后,添加PPP报头进行第一步封装。该PPP报头仅含一个PPP协议标识域,不附加任何帧校正序列FCS或其他标记。

3.NDISWAN将PPP帧提交给PPTP协议驱动程序,该驱动程序负责在PPP帧外添加GRE报头进行第二步封装。该GRE报头中,Call ID

域的值唯一地标识了一条隧道。

4.PPTP协议驱动程序将GRE报文提交给TCP/IP协议驱动程序。

5.TCP/IP协议驱动程序再对GRE报文添加IP报头进行第三步封装,封装后提交给拨往本地ISP的拨号连接接口,该接口符合网络驱动程序接口规范NDIS。

6.NDIS再次将数据报提交给NDISWAN,NDISWAN给数据报添加PPP报头、报尾进行最后的数据链路层封装。

7.NDISWAN将最终形成的PPP帧提交给与拨号硬件相对应的WAN微端口驱动程序。(例如modem连接中的异步端口)

虚拟专用网VPN系列讲座(三)

一、第二层隧道协议L2TP和IP安全IPSec

第二层隧道协议L2TP(Layer Two Tunneling Protocol)是PPTP和第二层转发L2F两种技术的结合,后者是由Cisco公司提出的隧道技术。为了避免PPTP和L2F两种互不兼容的隧道技术在市场上彼此竞争从而给用户造成困惑,带来不方便,IETF要求将两种技术结合在单一隧道协议中,并在该协议中糅合PPTP和L2F两者的优点,由此产生了L2TP。有关L2TP协议标准详见RFC 2661。

L2TP协议将 PPP帧封装后,可通过IP,X.25,帧中继或ATM等网络进行传送。目前,仅定义了基于IP网络的L2TP。在IP网络中L2TP采用用户数据报协议UDP封装和传送PPP帧。L2TP隧道协议可用于Internet,也可用于其他企业专用Intranet中。

IP网上的L2TP不仅采用UDP封装用户数据,还通过UDP消息对隧道进行维护。PPP帧的有效载荷即用户传输数据,可以经过加密、压缩或两者的混合处理,但需要指出的是,与PPTP不同,在Windows

2000中,L2TP客户机不采用MPPE对L2TP连接进行加密,L2TP连接加密由IPSec ESP提供。

在Windows 2000中,创建一条未经IPSec加密的L2TP连接是有可能的,但在这种情形下,由于用户私有数据没有经过加密处理,因此该L2TP连接不属于VPN连接。非加密L2TP连接一般用于临时性的对基于IPSec的L2TP连接进行故障诊断和排除,在这种情况下,可以省略IPSec认证和协商过程。

与PPTP类似,L2TP协议假定在L2TP客户机和L2TP服务器之间有连通且可用的IP网络。因此如果L2TP客户机本身已经是某IP网络的组成部分,那么即可通过该IP网络与L2TP服务器取得连接;而如果L2TP客户机尚未连入网络,譬如在Internet拨号用户的情形

下,L2TP客户机必须首先拨打NAS建立IP连接。这里所说的L2TP客户机也就是使用L2TP隧道协议和IPSec安全协议的VPN客户机,而L2TP服务器亦即使用L2TP隧道协议和IPSec安全协议的VPN服务器。

创建L2TP隧道时必须使用与PPP连接相同的认证机制,诸如EAP,MS?CHAP,CHAP,SPAP,和PAP。基于Internet的L2TP服务器亦即使用L2TP协议的拨号服务器,它的一个接口在外部网络Internet上,另一个接口在目标专用网络Intranet上。

L2TP隧道维护控制消息和隧道化用户传输数据具有相同的包格式。

二、基于L2TP控制消息的隧道维护

与PPTP不同,L2TP不是通过一条单独的TCP连接来进行隧道维护。L2TP客户机和服务器之间的呼叫控制和管理均以发送UDP消息的方式进行。在Windows 2000中,L2TP客户机和服务器都使用UDP1701端口。

-------------------------------------------------------------------------- 注:在Windows 2000中,L2TP客户机和服务器始终使用UDP1701端口,但Windows 2000 L2TP服务器也支持使用非1701 UDP端口的L2TP

客户机。

--------------------------------------------------------------------------

IP网上的L2TP控制消息以UDP数据报形式发送。在Windows

2000实现中,L2TP控制消息即UDP数据报经过IPSec ESP的加密,见下图:

图十一、L2TP控制消息

由于UDP提供的是无连接的数据包服务,因此L2TP采用将消息序列化的方式来保证L2TP消息的按序递交。在L2TP控制消息中,Next-Received字段(类似于TCP中的确认字段)和Next-Sent字段(类似于TCP中序列号字段)用于维持控制消息的序列化。无序数据包将被丢弃。Next-Received字段和Next-Sent字段同样用于用户传输数据的按序递交和流控制。

L2TP支持一条隧道内的多路呼叫。在L2TP的控制消息中以及L2TP数据帧的报头内,Tunnel ID标识了一条隧道而Call ID标识了该隧道内的一路呼叫。

下表列出了一些主要的L2TP控制消息。

表二、L2TP控制消息

L2TP 控制消息的确切格式,请参阅L2TP Internet 草案。

三、L2TP数据封装

L2TP用户传输数据的隧道化过程采用多层封装的方法。图十二显示了封装后在隧道中传输的基于IPSec的L2TP数据包格式。

图十二、L2TP数据包封装

1)L2TP封装 初始PPP有效载荷如IP数据报、IPX数据报或NetBEUI帧等首先经过PPP报头和L2TP报头的封装。

2)UDP封装 L2TP帧进一步添加UDP报头进行UDP封装,在UDP报头中,源端和目的端端口号均设置为1701。

3)IPSec封装 基于IPSec安全策略,UDP消息通过添加IPSec封装安全负载ESP报头、报尾和IPSec认证报尾(Auth trailer),进行IPSec加密封装。

4)IP封装 在IPSec数据报外再添加IP报头进行IP封装,IP报头中包含VPN客户机和服务器的源端和目的端IP地址。

5)数据链路层封装 数据链路层封装是L2TP帧多层封装的的最后一层,依据不同的外发物理网络再添加相应的数据链路层报头和报尾。例如,如果L2TP帧将在以太网上传输,则用以太网报头和报尾对L2TP帧进行数据链路层封装;如果L2TP帧将在点-点WAN上传输,如模拟电话网或ISDN等,则用PPP报头和报尾对L2TP帧进行数据链路层封装。

6)基于IPSec的L2TP隧道化数据的解封装过程 在接收到L2TP帧后,L2TP客户机或服务器将做如下解封装处理:

1.处理并去除数据链路层报头和报尾

2.处理并去除IP报头

3.用IPSec ESP认证报尾对IP有效载荷和IPSec ESP报头进行认证

4.用IPSec ESP报头对数据报的加密部分进行解密

5.处理UDP报头并将数据报提交给L2TP协议

6.L2TP协议依据L2TP报头中Tunnel ID和Call ID分解出某条特定的L2TP隧道

7.依据PPP报头分解出PPP有效载荷,并将它转发至相关的协议驱动程序做进一步处理

四、基于IPSec的L2TP数据包和Windows 2000网络体系结构

下图描述了某使用modem进行远程访问的VPN连接中,VPN客户机端L2TP数据包在Windows 2000网络体系结构中的封装流程。

图十三、L2TP数据包的封装流程

具体步骤如下:

1.IP数据报、IPX数据报或NetBEUI帧由各自协议提交给对应于VPN连接的虚拟接口。该接口符合网络驱动程序接口规范NDIS。

2.NDIS将数据报提交给NDISWAN,NDISWAN可选择对数据进行压缩处理后,添加PPP报头进行第一步封装。该PPP报头仅含一个PPP协议标识域,不附加任何帧校正序列FCS或其他标记。

3.NDISWAN将PPP帧提交给L2TP协议驱动程序,该驱动程序负责在PPP帧外添加L2TP报头进行第二步封装。在L2TP报头中,Tunnel ID 和Call ID的组合标识了一条隧道。

4.L2TP协议驱动程序再将封装后的数据报提交给TCP/IP协议驱动程序,并告之驱动程序,将L2TP数据报作为UDP消息发送,两端UDP端口号均为1701。

5.TCP/IP协议驱动程序对报文添加IP报头和UDP报头。然后由IPSec对报文进行分析,选择与之相匹配的安全策略,并在此安全策略的基础上,给数据报的UDP消息部分添加相应的ESP报头、报尾,进行IPSec加密、封装。

完成IPSec封装后,将原先的IP报头中协议字段值设置为50,同时将该IP报头添加在ESP报文外。之后,TCP/IP协议驱动程序将

结果报文提交给拨往本地ISP的拨号连接接口,该接口符合网络驱动程序接口规范NDIS。

6.NDIS再次将数据报提交给NDISWAN。

7.由NDISWAN提供数据链路层PPP报头、报尾,并将最终形成的PPP帧提交给与拨号硬件相对应的WAN微端口驱动程序。

虚拟专用网VPN系列讲座(四)

安全是VPN至关重要的组成部分。下面分别就PPTP协议和基于IPSec的L2TP协议讨论VPN连接中的安全策略。

一、PPTP连接

PPTP协议提供的安全策略有用户认证和加密。

1)基于PPP的用户认证

PPTP连接采用基于PPP的用户认证协议,如EAP,MS-CHAP,CHAP,SPAP,和PAP。对于PPTP连接,智能卡支持的交易层安全协议EAP-TLS和MS-CHAPv2版,由于提供双向认证,被认为是两种最安全的信任状交换的验证方法,因此得到大力推广,使用最为广泛。

2)基于MPPE的加密措施

PPTP承继MPPE加密技术,MPPE采用RSA/RC4加密算法,这是一

种流式加密器(stream cipher)。这里需要指出的是,仅当采用EAP-TLS或MS-CHAP认证协议时才能使用MPPE进行加密。

MPPE采用40位、56位、128位三种不同长度的密钥。40位密钥提供与非Windows 2000客户机的向后兼容性。缺省情况下,在连接建立过程中,VPN客户机和服务器自动协商采用最高位数的密钥。如果VPN服务器要求的密钥位数比VPN客户机所能支持的最大密钥位数还要高,则连接请求被拒绝。

最早MPPE是为点-点的连接加密设计的,在点-点连接中,数据包收发顺序相同,极少发生包丢失现象。因此针对这种环境而设计的MPPE加密法,每个数据包的解密有赖于前一数据包的解密结果。

然而,对VPN而言,IP数据包通过Internet传输,无法确保收发同序,且数据包丢失比例较高。因此,VPN连接中所使用的MPPE,其报头中包含了一个序列号,如果发生数据包丢失或到达时失序,MPPE则依据序列号对数据包密钥做修改,从而使得每个数据包的解密过程可以独立于前一数据包。

3)PPTP包过滤

一个典型的基于PPTP的VPN服务器有两个物理接口:其中一个接口在诸如Internet这样的公共或共享网络上,另一个接口在企业

专用Intranet上。同时它还有一个面向所有VPN客户机连接的虚拟接口。当VPN服务器需要在VPN客户机之间进行数据流转发时,必须在所有接口之间允许IP转发。然而,允许两个物理接口之间的转发会导致VPN服务器将所有来自共享或公共网络上的IP数据包通过路由全部传送至内部Intranet。为了防止Intranet接收来自非特定VPN客户机以外的其他数据流,必须配置PPTP包过滤,使得VPN服务器仅在VPN客户机和企业专用Intranet之间进行路由转发,拒绝公共网络和Intranet之间所有其他用户,从而杜绝可能出现的的潜在恶意行为。

PPTP包过滤可以配置在VPN服务器上,也可以配置在中介防火墙上。有关包过滤和防火墙的详细内容,将在"VPN与防火墙"中做进一步介绍。

二、基于IPSec的L2TP连接

基于IPSec的L2TP提供的安全策略有用户认证、双向计算机认证、加密、数据验证和数据完整性。

1)基于IPSec的L2TP用户认证

VPN客户机认证分为两级:计算机认证和用户认证。

a.IPSec计算机认证

使用基于IPSec的L2TP协议,需要在VPN客户机和服务器之间建立IPSec ESP 安全联系SA(security association),这时要用到双向计算机认证。所谓IPSec SA,是经过IPSec第一和第二阶段的协商,两端的VPN客户机和VPN服务器在加密算法、hash运算规则、加密密钥等方面取得一致后,建立起来的客户机和服务器之间的IPSec 安全联系。

双向计算机认证,要求VPN客户机和服务器两端均安装有计算机认证书。有两种途径可以获得证书,一是配置Windows 2000组策略方案的自动注册,二是以手工方式使用证书插件(Certificates

snap-in)。详细内容,可参考Windows 2000服务器帮助信息。

b.L2TP用户级认证

请求建立L2TP连接的用户由基于PPP的用户认证协议进行认证,此类认证协议主要有:EAP,MS-CHAP,CHAP,SPAP,和PAP。由于在L2TP连接建立过程中采用的是IPSec加密技术,因此可选择任意一种PPP认证协议进行用户认证,其中MS-CHAPv2版和EAP-TLS要求实现双向用户认证。

c.L2TP隧道认证

L2TP还提供在隧道建立过程中对L2TP隧道端点的认证。但在缺省情况下,Windows 2000并不要求对L2TP隧道进行认证。有关L2TP

隧道认证的详细信息,可参阅微软网站相关资料。

2)基于IPSec的L2TP加密

L2TP加密取决于IPSec SA的建立。加密算法包括:

·基于56位密钥的数据加密标准DES

·3DES,使用3个56位密钥,适用于对安全要求更高的环境中。

由于在IP网络环境中,可能出现数据包丢失或数据包到达时失序等现象,因此在IP网络中,每个IPSec数据包都经过单独加密,加解密过程独立于其他IPSec数据包。

初始密钥在IPSec认证过程中获得。此后密钥的产生在不同类型的连接中有所不同,在DES加密连接中,每隔5分钟或每传输250兆字节产生一个新密钥;在3DES加密连接中,每隔1小时或每传输2千兆字节产生一个新密钥;在AH保护连接中,每隔1小时或每传输2千兆字节产生一个新hash密钥。

3)基于IPSec的L2TP数据验证和数据完整性

数据验证和数据完整性可由下述之一提供:

·Hash消息验证码HMAC的消息摘要MD5,该hash算法从需要验证的有效载荷中产生一个128位的消息摘要。

·HMAC 安全Hash算法SHA,该hash算法从需要验证的有效载

荷中产生一个160位的hash散列。

4)基于IPSec的L2TP包过滤

正如在基于PPTP的VPN连接中一样,允许VPN服务器的两个物理接口即在公共网络上的接口和在Intranet上的接口之间进行转发,会导致VPN服务器将所有来自诸如Internet等公共网络上的IP数据包通过路由全部传送至内部Intranet。为了防止Intranet接收来自非特定VPN客户机以外的其他数据流,必须配置基于IPSec 的L2TP包过滤,使得VPN服务器仅在VPN客户机和Intranet之间进行路由转发,拒绝公共网络和Intranet之间所有其他用户,从而杜绝可能出现的的潜在恶意行为。

同样,基于IPSec 的L2TP包过滤既可以配置在VPN服务器上,也可以配置在中介防火墙上。详细内容,将?quot;VPN与防火墙"中做进一步介绍。

虚拟专用网VPN系列讲座(五)

VPN寻址及路由 要理解VPN的工作原理,则必须对VPN的寻址及路由有个基本认识。VPN连接在建立的同时创建一个虚拟接口,该虚拟接口必须被分配适当的IP地址,同时需要对路由做修改或添加,以确保数据流是在安全的VPN连接上而不是在公共网络上传输。下面分别就远程访问VPN和路由器-路由器VPN这两种不同的连接方式介绍VPN的寻址和路由。

一、远程访问VPN连接

在远程访问VPN连接建立过程中,VPN服务器为远程访问VPN客户机分配一个IP地址,并修改远程客户机上的缺省路由,从而使得在缺省情况下数据流可以经由虚拟接口发送。

1)IP地址和拨号VPN客户机 对于在创建VPN连接之前,需要以拨号方式上网的VPN客户机,有两个IP地址必须被分配:

·创建PPP连接时,IPCP与ISP NAS协商,分配一个公共IP地址。

·创建VPN连接时,IPCP与VPN服务器协商,分配一个Intranet

IP地址。这个由VPN服务器分配的IP地址可以是一个公共IP地址,也可以是一个专用IP地址,具体情况依据不同的企业在其Intranet上所实现的是公共地址分配还是专用地址分配而定。

分配给VPN客户机的两个IP地址都必须是可以被Intranet中的主机找得到的,反之亦然。为了实现这一点,在VPN服务器的路由表中必须包含能找到Intranet中每一台主机的路由表条目,而在Intranet的路由器的路由表中也必须包含能找到所有VPN客户机的路由表条目。

如上所述,VPN隧道数据将产生两个IP报头,其内部IP报头的源端和目的端地址分别是由VPN服务器分配的VPN客户机IP地址和Intranet地址;其外部IP报头中源端和目的端地址分别是由ISP分配的VPN客户机IP地址和VPN服务器的公共地址。由于Internet上的路由器仅处理外部IP报头,因此在IP网络上传输时,Internet路由器将数据转发到VPN服务器的公共IP地址上。

下面给出拨号客户机寻址示意图,其中,企业Intranet采用专用IP地址分配,传输数据为IP数据报。

图十四、PPTP数据包中的公共地址和专用地址

2)缺省路由和基于Internet的VPN

如图十五所示,拨号客户机拨打ISP时,利用至ISP的连接,客户机即添加了一条缺省路由。这样,经由ISP NAS的路由器,客户机可以到达Internet上任意目标地址。

图十五、拨打ISP时产生一条缺省路由

从上图中我们已经看到,客户机拨打ISP时会产生一条缺省路由,而随后当VPN客户机创建VPN连接时,又将添加另一条直接至隧道服务器地址的缺省路由和宿主机路由,如下图所示。前一条缺省路由将被保存,但新的缺省路由长度更长。添加新的缺省路由意味着在一条VPN连接的有效连接期内,发自客户机的数据包只能到达隧道服务器的IP地址,而无法达到其他任何Internet目的地址。

图十六、VPN连接创建时产生另一条新缺省路由

生成两条缺省路由的意义在于:

·当VPN连接处于非活动状态时,发自客户机的数据包可到达任意Internet目的地址,但不能抵达Intranet目的地址。

·当VPN连接处于活动状态时,发自客户机的数据包可到达Intranet目的地址,但不能抵达任何Internet目的地址。 对于绝大多数VPN客户机而言,上述机制并不会造成困扰,因为通常VPN客户机在某一时刻或者与Intranet进行数据通信或者与Internet进行数据通信,而不会同时与两者进行通信。

二、路由器-路由器VPN连接

1)临时路由器-路由器的VPN连接和永久路由器-路由器VPN连接 路由器-路由器VPN连接既可以是临时性的,也可以是永久性的。

·临时路由器-路由器的VPN连接只有当有数据包需要经过VPN按需拨号接口( demand-dial interface)转发时才被建立起来,在过了一段特定长度空闲时间后即被断开。VPN客户机(主叫路由器)和VPN服务器(被叫路由器)均需配置空闲时间长度。VPN客户机按需拨号接口的缺省空闲时间没有限制,而VPN服务器的缺省空闲时间为20分钟。

·永久路由器-路由器VPN连接,只要路由器开始启动,即可建立。在永久由器-路由器的VPN连接中,无论是否有数据流发送,连接始终保持,即便连接被中断,也会自动尝试再次恢复连接。

2)使用拨号ISP连接的VPN 如果VPN服务器和VPN客户机双方均通过诸如T1或帧中继等永久性WAN链路与Internet直接相连,则该VPN连接可以是永久性的,且全天候可用。然而,如果没有可用的永久性WAN链路,则可以选择使用拨号ISP配置一个随需(on-demand)路由器-路由器VPN连接。

在通常VPN实现中,远程分部办公室路由器接收到需要转发的数据流时,会自动建立一条随需路由器-路由器VPN连接。举例来说,某远程分部办公室路由器接收到需要发往公司总部的数据包时,首先使用拨号链路与本地ISP取得连接;当可用的Internet连接建立起来

之后,该分部路由器--VPN客户机,即可创建一条路由器-路由器VPN连接,与公司总部路由器--VPN服务器相连。

3)静态路由和动态路由 在按需拨号接口被建立起来,且已经确定是临时连接还是永久性连接之后,我们可以选用以下三种方法之一在路由表中添加路由信息:

a.对于临时连接,可以通过手工方式添加路由信息。手工配置静态路由信息适用于路由器数目不多的小型应用方案中。

b.对于永久连接,可以使用"自动静态更新"(auto-static updates)来对静态路由做周期性更新。自动静态路由可适用于有大量路由信息的较大的应用环境中。

c.对于永久连接,则可以将VPN连接看作一条点对点链路,选用其他合适的路由协议,对路由器-路由器VPN连接进行动态路由维护。

虚拟专用网VPN系列讲座(六)

VPN和防火墙

最常见的防火墙采用的是包过滤技术,用它来限制可用的服务,限制发出或接收可接受数据包的地址。IP包过滤技术提供了一种方法,让我们可以精确地定义什么样的IP数据流可以被允许通过防火

墙。当我们试图将企业内部网Intranet与公共网络如Internet相连时,IP包过滤技术作为一种行之有效的安全措施就显得非常重要。

一、VPN服务器和防火墙配置

VPN服务器和防火墙的结合使用可以分为以下两种情况:

·VPN服务器位于最前端,直接与Internet相连,防火墙放置于VPN服务器和企业内部网Intranet之间。

·防火墙作为第一道防线,位于最前端,直接与Internet相连,VPN服务器位于防火墙和企业内部网Intranet之间。

二、VPN服务器位于防火墙之前

图十七给出了VPN服务器位于防火墙之前的示意图,在这种情形下,需要在VPN服务器的Internet接口处添加包过滤器,从而限定只有VPN隧道数据流可以通过服务器的该接口。

图十七 VPN服务器位于防火墙之前

如图所示,从隧道传输来的数据流,首先经过VPN服务器的解密,然后转发至防火墙,防火墙再使用它的包过滤器,将数据流进一步转发到企业内部网Intranet。由于在这种方式下,限定VPN服务器能接收的唯一数据流发自授权VPN客户机,因此此处的防火墙过滤器,其作用主要是防止VPN用户访问特定的企业内部网资源,如某些企业内部敏感数据等。

将VPN服务器放置于防火墙之前,还有一个好处是,由于VPN服务器只接收来自VPN客户机的数据流,这种方法可以避免非VPN的Internet用户使用FTP登录企业内部服务器或者通过浏览器访问企业内部网的Web资源。

如上所提到的,为了做到只允许VPN数据流通过VPN服务器的Internet接口,我们需要在VPN服务器的Internet接口处添加包过滤器,下面以Windows 2000为例,分别就使用PPTP协议和L2TP协议两种情况,来看一下VPN服务器所需要配置的输入输出过滤器。

1)PPTP包过滤

在Windows 2000的输入过滤器配置中,将过滤器的action选项设置为Drop all packets except those that meet the criteria below(丢弃所有不符合以下标准的数据包):

·目标地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,TCP目标端口号 = 1723(0x06BB)。

该过滤条件确保隧道中的数据流,其源端发自PPTP客户机,目的端地址为PPTP服务器。

·目标地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,IP协议ID = 47(0x2F)。

该过滤条件确保从PPTP客户机发向PPTP服务器的是PPTP隧道化数据包。

·目标地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,TCP[established]源端端口号 = 1723(0x06BB)。

该过滤条件仅在路由器-对-路由器VPN连接中,当VPN服务器作为VPN客户机(即主叫路由器)时适用。

类似的,我们可以在Windows 2000中,配置输出过滤器,将过滤器的action选项设置为Drop all packets except those that meet the

criteria below(丢弃所有不符合以下标准的数据包):

·源端地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,TCP源端端口号 = 1723(0x06BB)。

该过滤条件确保隧道中的数据流是从PPTP服务器发向VPN客户机的。

·源端地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,IP协议ID = 47(0x2F)。

该过滤条件确保从PPTP服务器发向PPTP客户机的是PPTP隧

道化数据包。

·源端地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,TCP[established]目标端口号 = 1723(0x06BB)。

该过滤条件仅在路由器-对-路由器VPN连接中,当VPN服务器作为VPN客户机(即主叫路由器)时适用。

2)基于IPSec的L2TP包过滤

配置输入过滤器,同样地将将过滤器的action选项设置为Drop all

packets except those that meet the criteria below:

·目标地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,UDP目标端口号 = 500 (0x01F4)。

该过滤条件确保发向VPN服务器的是使用Internet密钥交换(IKE)协议的数据流即IPSec数据包。

·目标地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,UDP目标端口号 = 1701 (0x6A5)。

该过滤条件确保L2TP隧道数据流源端发自VPN客户机,目标端为VPN服务器。

配置输出过滤器,同样地将过滤器的action选项设置为Drop all

packets except those that meet the criteria below:

·源端地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,UDP源端端口号 = 500 (0x01F4)。

该过滤条件确保从VPN服务器发出的是使用Internet密钥交换(IKE)协议的数据流即IPSec数据包。

·源端地址 = VPN服务器的Internet接口IP地址,子网掩码 =

255.255.255.255,UDP源端端口号 = 1701 (0x6A5)。

该过滤条件确保L2TP隧道数据流从VPN服务器发向VPN客户机。

在对IPSec ESP数据流的过滤中,没有针对IP协议ID = 50的过滤要求。但在IPSec协议去除ESP报头后,需要使用路由及远程访问服务过滤器对数据包做进一步过滤操作。

三、VPN服务器位于防火墙之后

更常见的一种组网架构,如图十八所示,是防火墙作为第一道防线,直接与Internet相连,而VPN服务器作为另一种企业内部网资源位于DMZ(非军事区)。作为IP网络的一个组成部分,典型的DMZ通常包含可供Internet用户访问的资源,如Web服务器和FTP服务器等。在图十八的结构中,VPN服务器的一个接口在DMZ上,另一个接口在企业内部网Intranet。

图十八、VPN服务器位于防火墙之后

在这种方式中,防火墙的Internet接口必须配置输入和输出过滤器,从而可以将VPN隧道数据流转发至VPN服务器。此外,还必须在防火墙的Internet接口配置一些其他各式不同的过滤器,以便将不同类型的数据流转发至相应的Web服务器,FTP服务器或者是位于DMZ中的其他类型的服务器上。

需要格外指出的是,在如上图所示的架构中,存在着一个不安全的隐患。因为从安全角度出发,要求对VPN连接有个认证过程,从而可以拒绝通不过认证的非授权用户访问VPN服务器。然而,由于防火墙不具有VPN连接所需的加密密钥,因此它只能对隧道数据的明文报头进行过滤,这也意味着只要是隧道数据,无论它是否发自授权用户,均通过防火墙被转发至VPN服务器,这一点,对于VPN安全来说,是不利的。

下面还是以Windows 2000为例,来看一下如何使用防火墙包过

滤配置软件,在防火墙的Internet接口中,配置转发VPN隧道数据流所需的输入输出过滤器。

1)PPTP包过滤:

配置输入过滤器,将过滤器的action选项设置为Drop all packets

except those that meet the criteria below:

·目标地址 = VPN服务器的DMZ接口IP地址,TCP目标端口号

= 1723 (0x06BB)。

该过滤条件确保隧道中的数据流,其源端发自PPTP客户机,目标地址为PPTP服务器。

·目标地址 = VPN服务器的DMZ接口IP地址,IP协议ID = 47

(0x2F)。

该过滤条件确保从PPTP客户机发向PPTP服务器的是PPTP隧道化数据包。

·目标地址 = VPN服务器的DMZ接口IP地址,TCP [established]源端端口号 = 1723 (0x06BB)。

该过滤条件仅在路由器-对-路由器VPN连接中,当VPN服务器用作VPN客户机(即主叫路由器)时适用。

配置输出过滤器,将过滤器的action选项设置为Drop all packets

except those that meet the criteria below:

·源端地址 = VPN服务器的DMZ接口IP地址,TCP源端端口号

= 1723 (0x06BB)。

该过滤条件确保隧道中的数据流是从PPTP服务器发向VPN客户机。

·源端地址 = VPN服务器的DMZ接口IP地址,IP协议ID = 47

(0x2F)。

该过滤条件确保从PPTP服务器发向PPTP客户机的是PPTP隧道化数据包。

·源端地址 = VPN服务器的DMZ接口IP地址,TCP [established]目标端口号 = 1723 (0x06BB)。

该过滤条件仅在路由器-对-路由器VPN连接中,当VPN服务器用作VPN客户机(即主叫路由器)时适用。

2)基于IPSec的L2TP包过滤

配置输入过滤器,将过滤器的action选项设置为Drop all packets

except those that meet the criteria below:

·目标地址 = VPN服务器的DMZ接口IP地址,UDP目标端口号

= 500 (0x01F4)。

该过滤条件确保发向VPN服务器的是使用Internet密钥交换(IKE)协议的数据流即IPSec数据包。

·目标地址 = VPN服务器的DMZ接口IP地址,IP协议ID = 50

(0x32)。

该过滤条件确保从VPN客户机发向VPN服务器的是IPSec ESP

数据流。

配置输出过滤器,同样地将过滤器的action选项设置为Drop all

packets except those that meet the criteria below:

·源端地址 = VPN服务器的DMZ接口IP地址,UDP源端端口号

= 500 (0x01F4)。

该过滤条件确保从VPN服务器发出的是使用Internet密钥交换(IKE)协议的数据流即IPSec数据包。

·源端地址 = VPN服务器的DMZ接的IP地址,IP协议ID = 50

(0x32)。

该过滤条件确保从VPN服务器发向VPN客户机的是IPSec ESP数据流。

在对L2TP数据流的过滤中,没有针对UDP端口号 = 1701的过滤

虚拟专用网VPN系列讲座(七)

VPN和网络地址译码

网络地址译码器NAT是一个可以在转发数据包的同时进行IP地址和TCP/UDP端口号转换的IP路由器。为了更好地理解NAT以及NAT的功能,我们可以设想一家小公司,有好几台主机需要连到Internet上,在这种应用系统中,一种可能的解决办法是为每一台需要上网的主机申请一个公共IP地址,但这么做,一方面公司需要承受较高昂的费用,另一方面由于IP地址的匮乏,申请新地址也不容易。利用

NAT,这家公司则可以不必申请那么多公共IP地址,而是在公司内部网段上使用内部私用地址,当通过NAT路由器发送数据时,再使用NAT将私用地址转换成由ISP分配的合法注册的公共IP地址。通过这种方式,可以实现多台内部主机共享一个公共IP地址。

举例来说,假设这家小型公司有多台主机,在其内部网络中使用私用保留IP地址10.0.0.0/8,同时该公司申请了四个公共IP地址:w、x、y、z。那么当通过NAT路由器发送数据时,NAT可以采用静态方式或动态方式将10.0.0.0/8网络上所有私用IP地址映射成w、x、y、z这四个公共IP地址。

当有数据包需要外发时,源端IP地址和TCP/UDP端口号被映射成w、x、y、z和经过转换的TCP/UDP端口号。相反,当接收数据包时,目标IP地址和TCP/UDP端口号再被映射回私用IP地址和源TCP/UDP端口号。

在缺省情况下,NAT仅进行IP地址映射和TCP/UDP端口转换。某些协议数据流,如HTTP,其IP地址和端口信息只出现在IP报头和TCP/UDP报头中, NAT可以对其IP地址和端口号完成透明的的转换映射。

但是,另外有部分协议出于某些因素,将IP地址和TCP/UDP端

口信息封装在协议自身报头中,如FTP将IP地址封装在FTP报头中。在这种情况下,如果NAT不能对FTP报头中的IP地址进行正确转换的话,就会引起连接错误。更有甚者,还有一些协议根本不用TCP或UDP报头,而是使用其他报头的某些字段来标识数据流。

当NAT需要对以上使用非IP、TCP、UDP报头的负载进行地址和端口转换时,就要用到一个特殊的组件--NAT编辑器。NAT编辑器的作用是对使用非IP、TCP、UDP报头的数据流进行适当的修改,以便它们能通过NAT路由器,同时得到正确的路由转发。

以下就PPTP协议和基于IPSec的L2TP协议分析在VPN环境中,NAT的适用情况。

一、PPTP数据流

PPTP数据流包括一条维持隧道的TCP连接和由GRE封装的隧道数据。其中,TCP连接属于可转换部分,直接由NAT对源TCP端口号进行透明翻译;而由GRE封装的隧道数据则属于我们在上面分析过的,其地址转换需要用到特定的NAT编辑器。 在隧道数据中,隧道是通过被封装在GRE报头中的源IP地址和CALL ID字段来标识的。假设现在有某公司,当其内部网络中有多台主机同时需要作为PPTP客户机与远程同一台PPTP服务器建立隧道连接时,这多台PPTP客户

机经过NAT路由器,其内部不同的私有IP地址将被转换成同一个公共IP地址。同时,由于这些PPTP客户机本身意识不到它们的地址需要被转换,它们还可能在建立PPTP隧道时,采用相同的CALL ID。由此引发的后果是经过NAT转换后,发自多台不同PPTP客户机的隧道数据流具有完全相同的IP地址和CALL ID。

为了防止此类错误发生,针对PPTP协议的NAT编辑器必须对PPTP隧道的建立进行全程监控,并在每一台PPTP客户机的私用IP地址、CALL ID和公共IP地址以及PPTP服务器接收的CALL ID之间建立单独的映射关系。 NAT路由协议包含了一个PPTP编辑器,具有进行GRE报头中CALL ID转换功能,从而使得NAT在完成多私用地址到单公共地址的转换时,能在多条PPTP隧道之间进行有效区分。

二、基于IPSec 的L2TP数据流

基于IPSec 的L2TP数据流,其地址无法经NAT转换,因为UDP端口号经过加密处理,端口号的值受密码校验和的保护。不仅如此,由于以下两个因素,基于IPSec 的L2TP数据流甚至无法象PPTP数据流一样,通过特定编辑器来转译:

1)无法区分多路IPSec

ESP数据流 ESP报头中包含一个SPI--"安全参数索引"字段,该字段连接明文IP报头中的目标IP地址和诸如ESP 或认证报头AH 等IPSec安全协议,以此来标识某个IPSec安全关联SA。

对于经过NAT路由器出站的隧道数据,目标IP地址无须改变。相反,对于需要通过NAT路由器进入企业内部网的数据流,其目标地址必须映射成某个确定的私用IP地址,但此时我们会看到,进站的所有IPSec ESP数据流,其目标IP地址都是相同的,是同一个公共IP地址。为了能将多路IPSec ESP数据流彼此区分开,必须将目标IP地址和SPI映射成私有目标IP地址和SPI。但是,由于ESP认证报尾包含对ESP报头和有效载荷进行校验的密码校验和,如果修改SPI的话,会造成该密码校验和的失效,而不改变SPI,则无以区分多路IPSec ESP数据流。

2)无法改变TCP和UDP校验和

同样,在基于IPSec 的L2TP数据包中,UDP和TCP报头中也各自包含一个校验和,用于校验明文IP报头中源端和目标端IP地址。类似的,如果改变明文IP报头中地址,也会造成密码校验和的失效。而且,由于这两个密码校验和位于ESP有效载荷加密部分,因此我们无法试图在修改IP地址的同时,更新密码校验和。

由于上述原因,我们看到,使用基于IPSec 的L2TP协议的 VPN环境中,无法采用NAT实现网络地址转译。

结束语

随着经济全球化进程的日益加快,如今越来越多的公司、企业纷纷在全国各地乃至世界各地建立分支机构开展业务,开拓市场。办公场地和分支机构的分散化趋势,以及日渐庞大的移动办公大军的出现,使得所有这类企业都必须考虑同样一个问题:即如何在远程分部与公司总部以及用户之间建立快捷,安全、可靠的信息通信。

虚拟专用网VPN作为上述问题一个切实可行又经济节约的解决方案已经得到越来越广泛的重视和应用,这个系列讲座,对VPN的各个方面分别做了较详细的介绍,希望对想了解VPN的读者能有所帮助。


本文标签: 服务器 连接 客户机 隧道 进行