最近几年,许多企业都部署了VPN解决方案,通常可以分为三类:
首先是PPTP和L2TP VPN,这类方案采用了一项名为通用路由封装(Generic Routing Encapsulation,GRE)的技术。它是一种因特网协议,可以让发往某个网络的数据包经加密后,一个包接一个包地发送到可信服务器。然后,服务器拆开数据包,重新发送到专用网上。微软推出的PPTP/GRE方案就利用了GRE,并采用微软的算法对数据进行加密。
另一种是IPSec VPN,它也依靠GRE(IPSec/GRE)以及另一种名为封装安全载荷(Encapsulating Security Payload,ESP)的协议,IP数据包进行封装和加密处理。不过,与PPTP和L2TP相比, IPSec方案更安全、更可靠,这归功于IPSec选择及支持的加密算法。
第三类是SSL VPN方案,它只允许通过安全的Web浏览器,访问某几种具有Web功能的应用。它只能访问使用标准Web创作工具如HTML和JavaScript的应用。这项技术可以分析每个网页,确保从该网页引出的程序化的导航路径通过安全连接,转发到SSL VPN服务器。
胖客户机VPN存在重大缺陷
PPTP/L2TP和IPSec两种VPN解决方案因彼此相似而常常被归为一类,因为它们都使用客户软件,并依赖GRE。不过,两者都存在一些重大缺点,首先,IPSec、PPTP和L2TP(下文统称为IPSec)解决方案需要使用胖客户机,这给企业带来了很多管理难题和高昂的支持费用。胖客户机解决方案需要企业动用庞大的支持队伍,帮助终端用户安装、维护及排除故障。
另外,GRE不能透过NAT(网络地址转换)防火墙。NAT防火墙是一种常用的网络设备,它可以为企业建立专用网,那样专用网上的计算机就可以跟公共(或者外部)网络建立连接、收发数据,但来自外部的连接通常无法实现。NAT防火墙提供了安全性,隐藏了内部计算机,从而保护企业免受入侵以及对专用信息的未授权访问。
许多防火墙无法通过隧道传送GRE和ESP有效载荷,就算它们能够通过隧道传送这些数据包,系统管理员也往往会关闭NAT防火墙中的这项特性,以防止员工在本地可信专用网和客户机准备远程接入的另一个专用网之间建立一条隧道(下面会解释其中原因)。
此外,GRE还可以为专用网上的计算机分配专用网的IP地址,而这个IP地址对该计算机所连的专用网来说是可见的,因而带来了重大安全漏洞。如图1所示,企业B里面的计算机X将与企业A建立GRE连接。潜伏在企业A里面的蠕虫现在就能通过GRE隧道,复制到计算机X上,因为该IP地址对企业A的专用网(已被感染)来说是可见的。现在,蠕虫再通过计算机X,就能感染企业B里面的其他计算机,这是很可怕的。
在图中,企业B的专用网地址为10.10.0.0,企业A的专用网地址为192.168.1.0。计算机X建立了通向企业A的GRE隧道后,现在就获得了企业A的专用IP地址,即192.168.1.0。所以,计算机X现在属于两个专用网,能够在两个网络之间充当网桥。蠕虫(图中所示的虚线)现在可以到达IP地址:192.168.1.0(计算机X),进而可以到达10.10.0.0网络上的其他机器。最后还有一个问题就是IPSec VPN不允许从公共计算机如信息亭(kiosk)接入专用网。
SSL VPN带来新问题
为了克服与IPSec VPN存在的问题, SSL VPN应运而生。但实质上,这项技术只允许访问Web应用,这只是远程访问解决方案的一小部分功能。SSL VPN通过在请求得到服务时,实时分析及重构网页,重建Web应用的导航路径,从而允许访问某几种专用的Web应用。其实,SSL VPN解决方案提供了一种网络门户,以便访问某几种Web应用。
虽然SSL VPN主要与基于Web的应用配合使用,但有几家SSL VPN厂商编写了定制的连接件,这样也可以访问数量有限的客户机/服务器应用。SSL VPN厂商出售的定制连接件通常面向拥有标准(无法定制的)客户软件的应用。微软Outlook就是这样一种应用,它拥有标准客户软件。换句话说,微软Outlook 2000服务包(SP)3客户软件对公司A和对公司B或者对其他任何公司来说都是一样的。而没有标准客户软件的一个例子就是针对特定客户而定制的应用,譬如销售队伍自动化(SFA)、客户关系管理(CRM)、企业资源规划(ERP)以及Siebel、Oracle、Remedy、Clarify和SAP等公司提供的其他应用。这些应用针对特定公司进行定制,换句话说,公司A实施的Siebel应用与B公司或者其他任何公司实施的Siebel应用大不相同。
对支持访问数量有限的客户机/服务器应用的SSL VPN厂商(为数不多)而言,它们对这两种应用的处理方法有所不同。对于拥有标准客户软件的应用(如上述的Outlook),它们就使用装在用户PC上的客户软件。这种方法存在一些问题,表1中有逐一解释。
而对没有标准客户软件的应用而言,SSL VPN厂商可以开发定制连接件,或者请专业服务企业对产品进行“网络化”(Webify)。为了收回开发定制连接件的成本,该连接件就要能够卖给更多顾客。而这些应用针对特定企业而定制,所以,SSL VPN厂商会要求用户使用其自家的专业服务企业,对应用进行网络化,因为面向定制应用的定制连接件无法为更多顾客所利用。表2列出了在这个网络化过程当中及之后存在的问题。 遗憾的是,SSL VPN除了上述缺陷以外,它也无法与企业中一些特殊Web应用配合使用。SSL VPN实际上是一种代理技术,所以要分析及重写链接,提供对内部Web应用的访问。这意味着,SSL VPN只能处理可以分析的Web结构。而Java applet、ActiveX、Flash及其他Web结构却是可执行的二进制代码,因而无法加以分析,也就无法加以访问。就算SSL VPN可以分析Java applet,Java的安全模型也会起到阻止作用,因为Java applet必须从其驻留的服务器上启动,并运行。若使用SSL VPN,Java applet可以启动,但却运行不了。另外,即使对可以结合SSL VPN使用的Web应用而言,也会出现性能大幅下降的问题。就那些采用SSL VPN访问的每个内部应用而言,SSL VPN必须把网页分析成文档对象模型(DOM)表示、确认导航路径(如URL),然后重新创建所有网页。这个过程还需要分析SSL VPN服务器上的客户端脚本,因为导航路径可以通过程序计算出来。另外,这个技术不是总能奏效,因为SSL VPN服务器并不总是拥有计算返回正确URL所需的全部信息。这种情况下,还得有劳专业服务企业。
总结起来,SSL VPN解决方案适用于大多数计算机,甚至是在各种配置的防火墙后面,但它不是一个全面的远程接入解决方案(见表3)。其局限使得SSL VPN远程接入技术远远满足不了所有远程接入的需求。
IPSec VPN与SSL VPN的对比到现在为止,安全远程接入方案归结为两种选择: IPSec VPN(第一代)和SSL VPN(第二代),两者各有其优缺点。
SSL VPN主要让远程设备可以访问基于浏览器的应用。不过,通常说来,应用种类越多,SSL VPN的吸引力也就越小。这涉及到IPSec客户软件安全和SSL VPN定制间的取舍。
哪些应用能够或者应当“网络化”,对SSL VPN来说是个未知数。开发定制Java/ActiveX插件所需的时间和精力可能会超过支持IPSec VPN的工作量。
另外,“免客户端”(clientless)一词对SSL VPN来说并不完全正确。虽然SSL VPN隧道从用户的浏览器开始建立,但往往必须下载桌面代理——Java applet或者ActiveX控件,以便访问瘦客户机、客户机/服务器,或者其他并不适合于网页表示的应用。
所以,IPSec VPN的强项恰恰是SSL VPN的弱项,而SSL VPN的强项恰恰是 IPSec VPN的弱项。许多厂商认识到了这点,为顾客提供两种解决方案。这样一来,这些供应商就可以为顾客提供结合了两种VPN产品各自优点、没有多少缺点的全面解决方案。
现在,企业面临的压力就是接受不足之处,只部署IPSec VPN或者SSL VPN,或者实施及维护两种VPN解决方案。如果两种VPN解决方案一起实施,企业不仅要实施及维护每个PC上的客户软件,还要解决SSL VPN产品在前面详细讨论的不足之处。正如SSL VPN的所有问题和已知缺点所证实的那样,部署SSL VPN的企业仍要部署IPSec VPN。实际上,许多SSL VPN厂商进行总体拥有成本(TCO)方面的调查,以证明SSL VPN比IPSec VPN节省成本,但它们提供的产品仍包括一定数量的IPSec VPN。如果SSL VPN是全面的解决方案,就不会这样了。
对企业来说,理想情况就是利用解决所有上述问题的一个产品,取代上面两种产品。
“完美”VPN展露苗头
在上述基础上,一些厂商提出了集IPSec VPN和SSL VPN之所长于一体的解决方案。IPSec、L2TP或者PPTP VPN等解决方案提供了网络层接入和加密;SSL VPN则提供了应用层接入和加密,而这种新的方案运用混合技术结合了网络层接入和应用层接入,这就能改善最终用户的体验,降低IT安全管理员的支持费用和安全风险。这种方案支持各种本地形式的应用、胖客户机/服务器,或者适合行业应用的Web应用,它支持多种协议、可以穿越防火墙、隐藏远程网络的IP地址、遏制蠕虫传播。这样企业只要部署一个产品,就能满足安全远程接入的需求。下面以美国加利福尼亚州Net6公司的Net6 Hybrid-VPN Gateway解决方案为例介绍这类方案的工作原理,如图2所示。
Net6 Hybrid-VPN Gateway可以在客户机和安装在目标专用网的非军事区(DMZ)的Net6 Hybrid-VPN Gateway之间建立一条虚拟TCP链路,它属于两个网络: 专用网和具有公共可路由IP地址的公共网络。虚拟TCP链路本身采用公认的技术如安全套接层(SSL)和传输层安全(TLS)进行加密。发往专用网的所有数据包都通过这条链路加以传输。启动Net6 VPN Remote
客户机只要访问安全的URL,就可以启动Net6 VPN Remote接入工具,Net6 Hybrid-VPN Gateway会提示用户通过HTTP 401 Basic、Digest或者NTLM进行验证。随后,Net6 Hybrid-VPN Gateway会通过企业的登录服务器(如LDAP或者RADIUS)对这些证书进行验证。如果证书正确,就完成与客户机PC的握手。
建立安全隧道
一旦VPN Remote得以启动,它会通过HTTPS端口443(或者Net6 Hybrid-VPN Gateway上的任何其他配置端口),采用TLS或者SSL加密法,建立一条安全隧道,然后Net6 Gateway就会把配置信息发送到远端,配置信息描述了要保护安全的网络,如果管理员允许IP地址可以看见,可能还会描述IP地址。
通过SSL或者TLS经由隧道向目的地专用地址传送流量
验证完毕,VPN Remote就会在客户机当中启动。客户机获取发往某个专用网的所有网络流量(可以对逐个用户或者企业加以配置)后,通过安全隧道重定向至Net6 Hybrid-VPN Gateway。
值得一提的是,不管使用哪种协议,所有IP数据包都用这种方式获取,并通过安全链路传送出去。这样一来,这类解决方案其实提供了类似IPSec的功能。以TCP连接为例:从客户机上的本地应用通过安全隧道,连接至Net6 Hybrid-VPN Gateway,在这地方,与目标服务器重新建立连接,目标服务器则认为连接是从专用网上的本地Net6 Hybrid-VPN Gateway发出的,因而隐藏了客户机的IP地址(逆向NAT)。在本地的客户机上,与连接有关的所有流量(如SYN-ACK、PUSH、ACK和FIN等数据包)由Net6 VPN Remote重新生成,就好像是来自目标服务器。
终结安全隧道、重新生成专用网上的数据包
Net6 Hybrid-VPN Gateway终结SSL隧道,并接收发往专用网的任何入站数据包。如果数据包满足授权和访问控制方面的要求,就先进行整理(重新生成IP报头,好像来自专用网的IP地址范围,或者是客户机分配的专用IP地址),随后发送到网络上。对面向链路的连接而言,Net6 Hybrid-VPN Gateway维护着端口映射的NAT表,这样就可以对连接进行匹配,通过隧道把数据包发回到拥有正确端口号的客户机,以便提供给相应的应用。
通过NAT防火墙和代理系统的工作
NAT防火墙维护着NAT转换表,而Net6 Hybrid-VPN Gateway维护着逆向NAT表。图3表示了借助Net6 Hybrid-VPN Gateway的VPN工作方式。Hybrid-VPN Gateway隧道的建立采用了行业标准的连接建立技术,如HTTPS、代理HTTPS和SOCKS等。这样一来,隧道就能穿透NAT防火墙,从而允许计算机从其他企业的防火墙后面接入专用网,而不会带来其他问题(现在这些NAT防火墙可以创建映射表,NAT防火墙就可以把来自Hybrid-VPN Gateway的安全数据包发回至客户机)。
譬如说,只要向中间代理系统发出CONNECT HTTPS命令,就可以通过中间代理系统如HTTP代理系统建立连接。转而,从最终用户处获得中间代理系统请求的任何证书(通过使用单次签名信息,或者请求来自最终用户的信息),然后提供给中间代理服务器。一旦HTTPS会话建立完毕,会话的有效载荷就进行加密,随后把安全数据包传送到Hybrid-VPN Gateway。(沈建苗 译)(计算机世界报 2005年04月04日 第12期 C6、C7)