1.3 虚拟专用网络
组织机构通过部署VPN,可以实现数据的完整性、认证及数据加密方面的保障,这使数据包在通过不受保护的网络或Internet进行发送时,也能够确保自身的机密性。VPN的设计初衷就是节省不必要的租用线路。
实施VPN可使用很多不同的协议,包括:
- 点对点隧道协议(PPTP);
- 第2层转发(L2F)协议;
- 第2层隧道协议(L2TP);
- 通用路由封装(GRE)协议;
- 多协议标签交换(MPLS)VPN;
- Internet协议安全(IPSec);
- 安全套接层(SSL)。
注释:
L2F、L2TP、GRE及MPLS VPN不会提供数据完整性保障、认证及加密功能。因此,用户可以将L2TP、GRE和MPLS与IPSec结合使用来提供这些功能。许多组织机构都更愿意使用IPSec协议,因此它能够实现上述三项功能。
VPN的实施可以分为两类。
- 站点到站点VPN——使组织机构能够在位于不同站点的多个网络架构设备之间建立VPN隧道,使这些站点能够在共享媒介(如Internet)上通信。许多组织机构使用IPSec、GRE和MPLS VPN作为站点到站点的VPN协议。
- 远程访问VPN——使用户能够在远程(如家中、酒店及其他地点)开展工作,而且使他们如同直接与公司网络相连一样。
注释:
一般来说,站点到站点VPN隧道都是以多个网络架构设备作为端点的,而远程访问VPN则是由一台VPN头端设备和一台终端工作站或硬件VPN客户端构成的。
图1-6所示为一个在两个站点(公司总部和分支办公室)之间建立的站点到站点IPSec隧道。
1.3.1 IPSec技术概述
IPSec使用IKE(Internet密钥交换)协议进行协商,并建立安全的站点到站点或远程访问VPN隧道。IKE是一个由ISAKMP(Internet安全关联和密钥管理协议)及另外两个密钥管理协议(名为Oakley和安全密钥交换机制[SKEME])的部分内容所构成的框架。
注释:
IKE定义在RFC 2409,“The Internet Key Exchange (IKE)”中。而IKEv2(IKE第2版)则定义在RFC 5996,“Internet Key Exchange Protocol Version 2 (IKEv2)”中。
ISAKMP有两个阶段。阶段1用来在IPSec对等体之间创建一条安全的双向通信隧道。这条隧道叫做ISAKMP SA(ISAKMP安全联盟)。阶段2则用于协商IPSec SA。
1.IKE阶段1
在阶段1的协商中,双方会交换很多属性,包括:
- 加密算法;
- 散列算法;
- DH组;
- 认证方式;
- 一些特定厂商的属性。
图1-7所示为一个远程访问VPN的示例。在这个例子中,一位远程用户在酒店使用SSL VPN连接到了公司总部,同时另一位远程办公人员则使用IPSec VPN连接到了公司总部。
典型的加密协议如下。
- 数据加密标准(DES):长度为64比特。
- 3DES:长度为168比特。
- 高级加密标准(AES):长度为128比特。
- AES 192:长度为192比特。
- AES 256:长度为256比特。
散列算法包括:
- 安全散列算法(SHA);
- 消息摘要算法5(MD5)。
常用的认证方式为预共享密钥(对等体使用一个共享的密钥来彼此进行认证)和使用公钥基础设施(PKI)的数字证书。
注释:
一般来说,小型及中型企业会使用预共享密钥作为它们的认证机制。而许多大型企业出于扩展性要求、集中管理需要及其他安全机制,而选择使用数字证书。
用户可以在主模式或主动模式下建立阶段1 SA。
在主模式下,IPSec对等体会通过3轮信息交互,并交换6个数据包来协商ISAKMP SA,而主动模式的对等体则会相互交换3个数据包来协商SA。如果使用了预共享密钥,那么主模式就可以提供身份保护功能。但只在部署了数字证书的情况下,主动模式才能提供身份保护功能。
注释:
就支持IPSec的Cisco产品而言,它们一般会使用主模式来建立站点到站点的隧道,而使用主动模式来建立远程访问VPN隧道。在使用预共享密钥作为认证手段的情况下,这是设备的默认行为。
图1-8所示为主模式协商中6个数据包的交换过程。
在图1-8中,管理员将两个Cisco ASA部署为它们之间那条VPN隧道的端点。标记为ASA-1的Cisco ASA是协商的发起方,而标记为ASA-2的则是响应方。以下为图1-8中所示的步骤。
第1步 ASA-1(发起方)配置了2个ISAKMP请求(proposal)。在第1个数据包中,ASA-1将它配置的请求发送给了ASA-2。
第2步 ASA-2对接收到的请求进行评估。由于该ASA有一个请求与发起方相匹配的请求,因此ASA-2会通过第2个数据包将请求接受消息发回给ASA-1。
第3步 开始进行DH交换和运算工作。DH是一个密钥协商协议,它使两位用户或设备能够通过对方预共享的密钥来相互认证,而又无须在不安全的媒介中传输该密钥。ASA-1发送密钥交换(KE)负载并随机生成一个值,称为nonce(随机值)。
第4步 ASA-2收到信息,对公式进行逆向运算,使用请求的DH组/交换信息来创建SKEY ID。SKEY ID是一个从加密信息中推倒出来的字符串,而相应的加密信息只有主动参与到信息交换中的设备才能获得。
第5步 ASA-1发送它的身份信息。第5个数据包用从SKEY ID中推导出的密钥进行加密。图1-8中的星号表示该数据包为加密数据包。
第6步 ASA-2验证ASA-1的身份,同时ASA-2也会将自己的身份信息发送给ASA-1,这个数据包也是加密数据包。
注释:
IKE使用UDP端口5000进行通信。该端口用来发送所有前面步骤中提到过的数据包。
2.IKE阶段2
阶段2用来协商IPSec SA。这一阶段也称为快速模式(quick mode)。ISAKMP的作用是保护IPSec SA,因为所有负载信息都会被加密,除了ISAKMP头部信息以外。
单独的IPSec SA协商总是要创建两个安全关联(SA)—一个入向、一个出向。每个SA都被分配了一个独一无二的安全参数索引(SPI)值—一个由发起方分配,另一个则由响应方分配。
提示:
安全协议(AH或ESP)是3层协议,所以没有4层的端口信息。因此,如果IPSec对等体位于一个PAT设备后方,那么ESP或AH数据包就会被丢弃。为了解决这个问题,许多厂商(包括Cisco公司)都使用了一种称为IPSec直通(pass-through)的技术。支持IPSec直通技术的PAT设备会通过查看数据包的SPI值来创建一个4层转换表。
许多厂商(包括Cisco公司)实施了另一种新的特性叫做NAT-T(私网穿透)的技术。通过这项技术,VPN对等体就可以动态地发现是否在它们之间存在地址转换设备。如果它们检测到了NAT/PAT设备,就会使用UDP端口4500来对数据包进行封装,于是NAT设备就可以成功地转换和发送数据包了。
另外还有一点值得关注,那就是如果VPN路由器需要和多个网络通过隧道建立连接,它就需要和各个IPSec SA都进行两次协商。请记住,IPSec是单向的,因此如果有三个本地子网需要通过隧道连接远程网络,那么就需要协商出6条IPSec SA。IPSec SA可以通过业已建立好的ISAKMP(IKE阶段1)SA来使用快速模式协商出这些阶段2的SA。不过,如果源和/或目的网络是经过汇总的网络,那么IPSec SA的数量也会相应得到减少。
在快速模式中需要协商许多不同的IPSec属性,如表1-2所示。
除了创建密钥资料之外,快速模式也会协商身份信息。阶段2身份信息用来指明哪个网络、协议、和/或端口需要进行加密。因此,这里的“身份”可以在大到整个网络,小到一台主机上,支持特定的协议和端口。
图1-9所示为刚刚完成阶段1的两台路由器正在进行阶段2的协商。
以下为图1-9中的步骤。
第1步 ASA-1发送身份信息、IPSec SA请求及nonce载荷。如果部署了PFS(完全正向保密)的话,还要发送密钥交换(KE)载荷(可选)。
第2步 ASA-2将接收到的请求与其配置请求进行对比,然后将请求接受消息发回给ASA-1,一起发送的还有它的身份信息、nonce载荷和可选的密钥交换(KE)载荷。
第3步 ASA-1对ASA-2的请求进行评估,并发送确认信息,确认IPSec SA已经通过协商成功建立起来。于是,设备就会启动加密的进程。
IPSec使用两个不同的协议在VPN隧道上封装数据。
封装安全载荷(ESP):IP协议50。
认证头协议(AH):IP协议51。
注释:
ESP定义在RFC 4303,“IP Encapsulating Security Payload (ESP)”中。而AH定义在RFC 4302,“IP Authentication Header”中。
无论使用AH还是ESP,IPSec都可以使用两种模式:
传输模式——保护上层协议、如用户数据报协议(UDP)和TCP;
隧道模式——保护整个IP数据包。
传输模式用来在对等体之间加密和认证数据包。典型的例子是GRE over IPSec隧道。当IP数据包来自VPN设备身后的主机时,可以使用隧道模式来加密和认证这些IP数据包。隧道模式会给数据包添加IP头部,如图1-10所示。
图1-10所示为传输模式和隧道模式主要的区别。其中包含了封装进GRE中的IP数据包及传输模式和隧道模式在加密方面的区别。如图1-10所示,与传输模式相比,隧道模式会增加数据包的总大小。
注释:
Cisco IPSec设备的默认模式是隧道模式。
3.IKEv2
IKE版本2(IKEv2)定义在RFC 5996中,这一版的IKE提升了动态密钥交换及对等体认证的功能。IKEv2对密钥交换流量进行了简化,同时沿用了IKEv1中那些修正通信漏洞的措施。IKEv1和IKEv2协议都分为两个步骤。IKEv2的交换过程更加简单,也更加高效。
IKEv2中的阶段1为IKE_SA,由IKE_SA_INIT消息对组成。IKE_SA与IKEv1的阶段1相似。IKE_SA阶段中的参数定义在了密钥交换策略(Key Exchange Policy)当中。IKEv2中的阶段2为CHILD_SA。第一条CHILD_SA为IKE_AUTH消息对,这一步类似于IKEv1的阶段2。另一个CHILD_SA消息对的目的是发送更新密钥和一些信息类的消息。CHILD_SA中的参数定义在数据策略(Data Policy)中。
IKEv1和IKEv2拥有以下两项区别。
IKEv1阶段1包含两种可能的消息交换:主模式交换和主动模式交换。而IKEv2的IKE_SA阶段只会交换一对消息。
IKEv2在CHILD_SA阶段要交换两个消息对。IKEv1在阶段2至少要交换三对消息。
1.3.2 SSL VPN
基于SSL的VPN应用了SSL协议。SSL也称传输层安全(TLS),这是一个成熟的协议,自从20世纪90年代初期就已经问世。互联网工程任务组(IETF)创建TLS是为了将各厂商的版本合并为一个通用的公开标准。
SSL VPN最重要的特性之一是它能够使用浏览器(如Google Chrome、Microsoft Internet Explorer或Firefox)轻松地连接到VPN设备的地址,这与运行独立的VPN客户端程序来建立IPSec VPN相比简单得多。在大多数实施环境中,SSL VPN都可以使用无客户端的解决方案。用户几乎在任何地点都能访问公司的Intranet站点、入口及email(哪怕用户在机场的小卖部都没问题)。因为大多数人的防火墙都会放行SSL流量(TCP端口443),因此也没有必要为其开放其他的端口。
由于World Wide Web大行其道,因此在SSL基础上运行得最成功的应用协议堪称HTTP。几乎时下所有流行的Web浏览器都能够支持HTTPS(HTTPS over SSL/TLS)。鉴于这种协议无处不在,因此如果将其应用于远程访问VPN,那么它的价值一定能够得到更淋漓尽致的体现。
使用加密算法来保护通信——HTTPS/TLS可以提供机密性、完整性和认证。
无处不在——由于SSL/TLS无处不在,因此它就有可能使VPN用户可以从任何位置、使用任何PC来访问公司资源,而无须预先在PC上安装任何远程访问VPN客户端。
较低的管理成本——由于不需要安装客户端就可以实现这类远程访问VPN,因此它的管理成本很低,而且在终端一侧也不存在任何维护问题。这对于IT管理人员来说是一个巨大的利好,否则,这些IT管理人员就必须使用大量资源来部署、维护他们的远程访问VPN解决方案。
高效操作防火墙和NAT——SSL VPN使用的端口与HTTPS相同(TCP/443)。通过预配置,很多Internet防火墙、代理服务器和NAT设备都能够正确地处理TCP/443端口的流量。因此,要想在网络上传输SSL VPN流量也就没有必要进行什么额外的配置。这一点已经被视为实现本地IPSec VPN(用IP协议50[ESP]或51[AH])的一大优势,因为在很多情况下,管理员都需要在防火墙或NAT设备上执行特殊的配置才能使其放行IPSec流量。
由于SSL VPN通过升级而满足了远程访问VPN的另一重大需求,这一需求就是为其他应用提供支持,在这些属性当中,有一部分已经不能实现,它取决于VPN用户所选择的SSL VPN技术。不过总而言之,近些年来,这些属性是使得SSL VPN大行其道的主要推动力量,同时这些属性也是被SSL VPN厂商宣传为用这项技术来取代IPSec的主要原因。
当今的SSL VPN技术使用SSL/TLS作为保护传输,并综合多种远程访问技术的协议。这些远程访问技术包括反向代理(reverse proxy)、建立隧道、终端服务等,综合这些技术能够为用户提供不同类型的访问手段,也能使SSL VPN更好地适应各类不同的环境。在下面章节中,本书将会对一些常见的用于SSL VPN的技术进行介绍,如:
反向代理技术;
端口转发技术与Smart隧道;
SSL VPN隧道技术(AnyConnect Secure移动客户端);
集成终端服务。
HTTPS可以在浏览器和支持HTTPS的Web服务器之间实现安全的Web通信。SSL VPN将其扩展为能够使VPN用户访问公司内部Web应用或其他公司的应用服务器(无论这些服务器是否支持HTTPS,甚至它们不支持HTTP也无所谓)。SSL VPN是通过很多技术实现这一点的,这些技术共同被称为反向代理技术。
反向代理是指一台位于应用服务器(通常是Web服务器)前方的代理服务器,它的作用是为想要访问公司内部Web应用资源的Internet用户充当入口。对于外部客户来说,反向代理服务器就是一台真正的Web服务器。它在自己收到的用户Web请求之后,会将这些请求转发给内部Web服务器,然后代表用户接收这些内容,最后再这些Web内容转发给用户。对于这些被转发给用户的内容来说,反向代理服务器有可能会进行修改,但也有可能原封不动地发送用户。
很多Web服务器都支持反向代理。反向代理的例子之一就是Apache的mod_proxy模块。在反向代理技术得到了如此广泛的应用之后,用户也许质疑为什么想要实现这些功能还需要用到SSL VPN解决方案。答案是,SSL VPN可以提供比传统反向代理技术多得多的功能。
SSL VPN能够对复杂的Web及一些非Web应用进行转换,而这些应用是简单的反向代理服务器所无法处理的。这种转换内容的过程有时被人们称为Web化(webification)。比如,SSL VPN解决方案可以使用户访问Windows或UNIX文件系统。要实现这一点,SSL VPN网关必须能够与内部的Windows或UNIX服务器进行通信,并且将其文件系统Web化,使其通过一种能够被Web浏览器显示出来的格式呈现在用户面前。
SSL VPN支持大量的商业应用。对于那些无法被Web化的应用来说,SSL VPN可以使用其他资源访问手段来对它们提供支持。对于想要实现最大程度访问的用户来说,SSL VPN还能够提供网络层的访问,即直接将远程系统连接到公司网络中,这一方法与IPSec VPN相同。
SSL VPN还提供了真正的远程访问VPN套包(package),其中包括用户认证、资源访问权限管理、日志记录与审计、终端安全及用户经验等功能。
SSL VPN的反向代理模式也称为无客户端Web访问或无客户端访问,因此它不需要在客户端一侧的设备上安装任何应用。基于客户端的SSL VPN提供的解决也与此类似,用户只需使用自己的Web浏览器连接Cisco ASA就可以连接到企业网络,同样无须在计算机的系统上安装任何其他的软件。