IPSec-VPN
简介
IPsec(IP Security,IP安全)是IETF制定的三层隧道加密协议,它为互联网上传输的数据提供了高质量的、基于密码学的安全保证,是一种传统的实现三层VPN(Virtual Private Network,虚拟专用网络)的安全技术。IPsec通过在特定通信方之间建立IPsec隧道,来保护通信方之间传输的用户数据。IPsec协议不是一个单独的协议,它为IP层上的网络数据安全提供了一整套安全体系结构,包括安全协议AH(Authentication Header,认证头)和ESP(Encapsulating Security Payload,封装安全载荷)、IKE(Internet Key Exchange,互联网密钥交换)以及用于网络认证及加密的一些算法等。其中,AH协议和ESP协议用于提供安全服务,IKE协议用于密钥交换。
IPsec提供了两大安全机制:认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。
IPsec为IP层的数据报文提供的安全服务具体包括以下几种:
数据机密性(Confidentiality):发送方通过网络传输用户报文前,IPsec对报文进行加密。
数据完整性(Data Integrity):接收方对发送方发送来的IPsec报文进行认证,以确保数据在传输过程中没有被篡改。
数据来源认证(Data Origin Authentication):接收方认证发送IPsec报文的发送端是否合法。
抗重放(Anti-Replay):接收方可检测并拒绝接收过时或重复的IPsec报文。
传输与协议
安全联盟(Security Association,SA)
IPsec在两个端点之间提供安全通信,端点被称为IPsec对等体。SA是IPsec的基础,也是IPsec的本质。SA是通信对等体间对某些要素的约定,例如,使用哪种协议(AH、ESP还是两者结合使用)、协议的封装模式(传输模式和隧道模式)、加密算法(DES、3DES和AES)、特定流中保护数据的共享密钥以及密钥的生存周期等。建立SA的方式有手工配置和IKE自动协商两种。SA是单向的,在两个对等体之间的双向通信,最少需要两个SA来分别对两个方向的数据流进行安全保护。同时,如果两个对等体希望同时使用AH和ESP来进行安全通信,则每个对等体都会针对每一种协议来构建一个独立的SA。
SA由一个三元组来唯一标识,这个三元组包括SPI(Security Parameter Index,安全参数索引)、目的IP地址、安全协议号(AH或ESP)。SPI是用于唯一标识SA的一个32比特数值,它在AH和ESP头中传输。在手工配置SA时,需要手工指定SPI的取值。使用IKE协商产生SA时,SPI将随机生成。
通过IKE协商建立的SA具有生存周期,手工方式建立的SA永不老化。IKE协商建立的SA的生存周期有两种定义方式:
基于时间的生存周期,定义了一个SA从建立到失效的时间;
基于流量的生存周期,定义了一个SA允许处理的最大流量。
生存周期到达指定的时间或指定的流量,SA就会失效。SA失效前,IKE将为IPsec协商建立新的SA,这样,在旧的SA失效前新的SA就已经准备好。在新的SA开始协商而没有协商好之前,继续使用旧的SA保护通信。在新的SA协商好之后,则立即采用新的SA保护通信。
安全协议
IPsec协议中的AH协议定义了认证的应用方法,提供数据源认证和完整性保证;ESP协议定义了加密和可选认证的应用方法,提供数据可靠性保证。
AH协议(IP协议号为51)提供数据源认证、数据完整性校验和防报文重放功能,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。AH的工作原理是在每一个数据包上添加一个身份验证报文头,此报文头插在标准IP包头后面,对数据提供完整性保护。可选择的认证算法有MD5(Message Digest)、SHA-1(Secure Hash Algorithm)等。
ESP协议(IP协议号为50)提供加密、数据源认证、数据完整性校验和防报文重放功能。ESP的工作原理是在每一个数据包的标准IP包头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾。与AH协议不同的是,ESP将需要保护的用户数据进行加密后再封装到IP包中,以保证数据的机密性。常见的加密算法有DES、3DES、AES等。同时,作为可选项,用户可以选择MD5、SHA-1算法保证报文的完整性和真实性。
在实际进行IP通信时,可以根据实际安全需求同时使用这两种协议或选择使用其中的一种。AH和ESP都可以提供认证服务,不过,AH提供的认证服务要强于ESP。同时使用AH和ESP时,设备支持的AH和ESP联合使用的方式为:先对报文进行ESP封装,再对报文进行AH封装,封装之后的报文从内到外依次是原始IP报文、ESP头、AH头和外部IP头。
认证加密算法
认证算法
认证算法的实现主要是通过杂凑函数。杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。IPsec对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。IPsec使用两种认证算法:
MD5:MD5通过输入任意长度的消息,产生128bit的消息摘要。
SHA-1:SHA-1通过输入长度小于2的64次方bit的消息,产生160bit的消息摘要。
MD5算法的计算速度比SHA-1算法快,而SHA-1算法的安全强度比MD5算法高。
加密算法
加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。目前设备的IPsec实现三种加密算法:
DES(Data Encryption Standard):使用56bit的密钥对一个64bit的明文块进行加密。
3DES(Triple DES):使用三个56bit的DES密钥(共168bit密钥)对明文进行加密。
AES(Advanced Encryption Standard):使用128bit、192bit或256bit密钥长度的AES算法对明文进行加密。
这三个加密算法的安全性由高到低依次是:AES、3DES、DES,安全性高的加密算法实现机制复杂,运算速度慢。对于普通的安全要求,DES算法就可以满足需要。
封装模式
IPsec有如下两种工作模式:
隧道(tunnel)模式:用户的整个IP数据包被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中。通常,隧道模式应用在两个安全网关之间的通讯。
传输(transport)模式:只是传输层数据被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被放置在原IP包头后面。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯。
IPsec虚拟隧道接口
IPsec虚拟隧道接口是一种支持路由的三层逻辑接口,它可以支持动态路由协议,所有路由到IPsec虚拟隧道接口的报文都将进行IPsec保护,同时还可以支持对组播流量的保护。使用IPsec虚拟隧道接口建立IPsec隧道具有以下优点:
简化配置:通过路由来确定对哪些数据流进行IPsec保护。与通过ACL指定数据流范围的方式相比,这种方式简化了用户在部署IPsec安全策略时配置上的复杂性,使得IPsec的配置不会受到网络规划的影响,增强了网络规划的可扩展性,降低了网络维护成本。
减少开销:在保护远程接入用户流量的组网应用中,在IPsec虚拟隧道接口处进行报文封装,与IPsec over GRE或者IPsec over L2TP方式的隧道封装相比,无需额外为入隧道流量加封装GRE头或者L2TP头,减少了报文封装的层次,节省了带宽。
业务应用更灵活:IPsec虚拟隧道接口在实施过程中明确地区分出“加密前”和“加密后”两个阶段,用户可以根据不同的组网需求灵活选择其它业务(例如NAT、QoS)实施的阶段。例如,如果用户希望对IPsec封装前的报文应用QoS,则可以在IPsec虚拟隧道接口上应用QoS策略;如果希望对IPsec封装后的报文应用QoS,则可以在物理接口上应用QoS策略。
隧道接口对报文的封装/解封装发生在隧道接口上。进入设备的报文被路由到应用了IPsec安全框架的隧道接口后,此隧道接口会对这些报文进行封装/解封装处理。隧道接口对报文进行封装的过程如下
Device将从入接口接收到的IP明文送到转发模块进行路由处理;
转发模块依据路由查询结果,将IP明文发送到隧道接口进行封装:原始IP报文加密后被封装在一个新的IP报文中,新IP头中的源地址和目的地址分别为隧道接口的源端地址和目的端地址。
隧道接口完成对IP明文的封装处理后,将IP密文再次送到转发模块进行路由处理;
转发模块根据新IP头中的目的IP地址进行第二次路由查询后,将IP密文通过隧道接口的实际物理出接口转发出去。
隧道接口对报文进行解封装的过程如下
Device将从入接口接收到的IP密文送到转发模块进行路由处理;
转发模块识别到此IP密文的目的IP地址为本设备隧道接口源端地址且IP协议号为AH或ESP时,会将IP密文送到相应的隧道接口进行解封装:将IP密文的外层IP头去掉,对内层IP报文进行解密处理。
隧道接口完成对IP密文的解封装处理之后,将IP明文重新送回转发模块进行路由处理;
转发模块根据IP明文的目的IP地址进行第二次路由查询后,将IP明文从隧道的实际物理出接口转发出去。
几种组合形式
协商过程
协商方式
手工方式(manual)配置比较复杂,创建SA所需的全部信息都必须手工配置,而且不支持一些高级特性(例如定时更新密钥),但优点是可以不依赖IKE而单独实现IPsec功能。
IKE自动协商(isakmp)方式相对比较简单,只需要配置好IKE协商安全策略的信息,由IKE自动协商来创建和维护SA
IKE
IKE(Internet Key Exchange,因特网密钥交换)协议用来建立SA,该协议建立在由ISAKMP(Internet Security Association and Key Management Protocol,互联网安全联盟和密钥管理协议)定义的框架上。IKE为IPsec提供了自动协商交换密钥、建立SA的服务,能够简化IPsec的使用和管理,大大简化IPsec的配置和维护工作。IKE不是在网络上直接传输密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥,并且即使第三者截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。
IKE安全机制
数据认证
身份认证:身份认证确认通信双方的身份。支持两种认证方法:预共享密钥(pre-shared-key)认证和基于PKI的数字签名(rsa-signature)认证。
身份保护:身份数据在密钥产生之后加密传送,实现了对身份数据的保护
DH(Diffie-Hellman,交换及密钥分发)
DH算法是一种公共密钥算法。通信双方在不传输密钥的情况下通过交换一些数据,计算出共享的密钥。即使第三者截获了双方用于计算密钥的所有交换数据,由于其复杂度很高,不足以计算出真正的密钥。所以,DH交换技术可以保证双方能够安全地获得公有信息
PFS(Perfect Forward Secrecy,完善的前向安全性)
FPS特性是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。对于IPsec,是通过在IKE阶段2协商中增加一次密钥交换来实现的。PFS特性是由DH算法保障的
IKE交换过程
第一阶段,通信各方彼此间建立了一个已通过身份认证和安全保护的通道,即建立一个ISAKMP SA。第一阶段有主模式(Main Mode)和野蛮模式(Aggressive Mode)两种IKE交换方法
主模式
一般情况下,IKE的主模式适用于两设备的公网IP固定、且要实现设备之间点对点的环境
策略协商(消息1、2):在第1个数据包的传输过程中,发送方发起一个包含cookie (记为:Ci ) 和SA(SAi,携带协商IKE SA的各项参数(5元组),包括IKE的散列类型如MD5;加密算法如DES、3DES等;认证方法如预共享、数字签名、加密临时值等;DH组;SA存活期)的数据包用来协商参数。接收方查看IKE策略消息,在本地寻找与发送方IP地址匹配的策略,找到后发回一条消息去响应。响应者发送一个cookie (记为:Cr)和SA(SAr,已经挑选的安全参数);如果没有可以挑选的参数,响应者会返回一个拒绝。
Diffie-Hellman交换(消息3、4):执行DH交换,发起者和接收者交换伪随机数,如nonce。nonce是计算共享秘密(用来生成加密密钥和认证密钥)所必需的。该技术的优势在于,它允许参与者通过无担保媒体创建秘密值。
对等体验证(消息5、6):ISAKMP/IKE阶段1主要任务就是认证,第三个步骤即在安全的环境下进行认证,前面两个步骤四个数据包的传输都是为了第三步骤的5、6号数据包交换的认证做准备。第1-2包交换为认证准备好策略(例如:认证策略、加密策略和散列函数等),第3-4包交换为保护5-6的安全算法提供密钥资源
野蛮模式
对于例如ADSL拨号用户,其获得的公网IP不是固定的,且可能存在NAT设备的情况下,采用野蛮模式做NAT穿越,同时,由于IP不是固定的,用name作为id-type,总部采用模板的方式接收分支的IPSEC接入
消息1:发起者发送5元组,DH公共值,辅助随机数nonce以及身份资料(IDi和IDr,为设备上配置域名字符串或用户名字符串,也有可能是IP地址)。响应者可以选择接受或者拒绝该建议。Diffie-Hellman 公开值、需要的随机数据和身份信息也在第一条消息中传送。
消息2:如果响应者接受发起者的建议,则回应一个选定的5元组,DH公共值,辅助随机数nonce,身份材料以及一个认证散列值。
消息3:由发起者发送一个认证散列值,该消息被验证,让应答方能够确定其中的散列值是否与计算得到的散列值相同,进而确定消息是否有问题。实际上,这个消息认证发起者并且证明它是交换的参与者。这个消息使用前两个消息交换的密钥信息生成的密钥进行加密
第二阶段,用在第一阶段建立的安全隧道为IPsec协商安全服务,即为IPsec协商具体的SA,建立用于最终的IP数据安全传输的IPsec SA
第二阶段交互过程
第二阶段的效果为协商出IPSec 单向SA,为保护IPsec数据流而创建。第二阶段整个协商过程受第一阶段ISAKMP/IKE SA保护。
快速模式交换通过三条消息建立IPsec SA。这3个包主要用来协商用于加密用户数据的安全策略(只有认证和加密方法和对应算法):前两条消息协商IPsec SA的各项参数值,并生成IPsec使用的密钥;第二条消息还为响应方提供在场的证据;第三条消息为发起方提供在场的证据
一些说明
兴趣流:IPSec是需要消耗资源的保护措施,并非所有流量都需要IPSec进行处理,而需要IPSec进行保护的流量就称为兴趣流,最后协商出来的兴趣流是由发起方和响应方所指定兴趣流的交集,如发起方指定兴趣流为192.168.1.0/24à10.0.0.0/8,而响应方的兴趣流为10.0.0.0/8à192.168.0.0/16,那么其交集是192.168.1.0/24ßà10.0.0.0/8,这就是最后会被IPSec所保护的兴趣流。
发起方:Initiator,IPSec会话协商的触发方,IPSec会话通常是由指定兴趣流触发协商,触发的过程通常是将数据包中的源、目的地址、协议以及源、目的端口号与提前指定的IPSec兴趣流匹配模板如ACL进行匹配,如果匹配成功则属于指定兴趣流。指定兴趣流只是用于触发协商,至于是否会被IPSec保护要看是否匹配协商兴趣流,但是在通常实施方案过程中,通常会设计成发起方指定兴趣流属于协商兴趣流。
响应方:Responder,IPSec会话协商的接收方,响应方是被动协商,响应方可以指定兴趣流,也可以不指定(完全由发起方指定)。
发起方和响应方协商的内容主要包括:双方身份的确认和密钥种子刷新周期、AH/ESP的组合方式及各自使用的算法,还包括兴趣流、封装模式等。
SA:发起方、响应方协商的结果就是曝光率很高的SA,SA通常是包括密钥及密钥生存期、算法、封装模式、发起方、响应方地址、兴趣流等内容
IKEV2
要建立一对IPSec SA,IKEv1需要经历两个阶段:“主模式+快速模式”或者“野蛮模式+快速模式”。前者至少需要交换9条消息,后者也至少需要6条消息。而IKEv2,正常情况使用2次交换共4条消息就可以完成一个IKE SA和一对IPSec SA,如果要求建立的IPSec SA大于一对时,每一对SA只需额外增加1次交换,也就是2条消息就可以完成。这比IKEv1要简化很多。
IKEv2定义了三种交换:初始交换、创建子SA交换以及通知交换
初始交换
IKE通信总是从IKE安全联盟初始交换(IKE_SA_INIT交换)和IKE认证交换(IKE_AUTH交换)开始。这2个交换通常由4条消息组成,在某些场景下消息数目可能会增加。所有使用IKE的通信都由请求/响应对组成。IKE安全联盟初始交换和IKE认证交换完成后可以建立一个IKE SA和第一对CHILD_SA(即IPSec SA)
第一个消息对(IKE_SA_INIT)这个消息对负责进行IKE安全联盟参数的协商,包括协商加密和验证算法,交换临时随机数(nonces)和DH交换。IKE_SA_INIT交换后可以生成一个共享密钥材料。通过这个共享密钥材料可以生成其他相关密钥。
第二个消息对(IKE_AUTH)从IKE_AUTH交换开始,所有报文都必须加密再交换。IKE_AUTH交换至少需要两个消息。在这两个报文的交互中完成了身份认证以及一个CHILD_SA的创建过程。IKEv2支持RSA签名认证、预共享密钥认证。RSA签名认证和预共享密钥认证方式下,认证载荷(AUTH载荷)的计算方式不同。在IKE_SA_INIT交换阶段,生成IPSec SA的密钥材料,并通过这个密钥材料衍生出IPSec SA的所有密钥。IKEv2除支持RSA签名和预共享密钥认证外,还支持扩展认证方法EAP(Extensible Authentication Protocol)。EAP认证是作为附加的IKE_AUTH交换在IKE中实现的。发起者通过在消息3中省去AUTH载荷来表明需要使用EAP认证。
创建子SA交换当一个IKE SA需要创建多对IPSec SA时,需要使用创建子SA交换来协商多于一对的SA。另外创建子SA交换还可以用于进行IKE SA的重协商。创建子SA交换包含一个交换两个消息。在IKEv1中这个交换称为阶段2交换(快速模式交换)。这个交换必须在IKE初始交换完成之后才能进行,交换的发起者可以是IKE初始交换的发起者,也可以是IKE初始交换的响应者。在交换中的两个消息需要由IKE初始交换协商的密钥进行保护。类似于IKEv1的PFS,创建子SA交换阶段可以重新进行一次DH交换,生成新的密钥材料。生成密钥材料后,子SA的所有密钥都从这个密钥材料衍生出来。
通知交换运行IKE协商的两端有时会传递一些控制信息,例如错误信息或者通告信息,这些信息在IKEv2中是通过通知交换完成的。通知交换必须在IKE SA保护下进行,也就是说通知交换只能发生在初始交换之后。
SSL-VPN
简介
何谓SSL VPN,首先要从SSL谈起,使用网络不能不提的是各个网站,浏览网站使用浏览器,网络上传送网页的协议叫HTTP,它是明文传播的,传播内容可以被黑客读取。而SSL全名叫Secure Session Layer(安全会话层),其最初目的是给HTTP加密使用的安全套件,使用SSL的HTTP,也就摇身一变成了HTTPS,端口也从HTTP的80变成了443。由于HTTPS具备安全性,也具备传输数据的能力,HTTPS可以用于组建VPN方案,于是SSL VPN技术就出现了。SSL保护的是应用层的数据,可以针对某个应用做具体保护(UDP/TCP),而IPSec VPN针对的是整个网络层。
SSL-VPN特点
采用B/S架构,远程用户无需安装额外软件,可直接使用浏览器访问内网资源。
SSL VPN可根据远程用户访问内网资源的不同,对其访问权限进行高细粒度控制。
提供了本地认证、服务器认证、认证匿名和证书挑战多种身份认证方式,提高身份认证的灵活性。
由于作用在应用层数据,无NAT穿越问题
流程
使用者只需要记住VPN的网站(通常是HTTPS),用浏览器打开该网站;
输入使用者的身份信息,身份信息可以是用户名、数字证书(如USB-Key)、静态口令、动态口令的至尊组合,确保身份不泄露、不假冒;
选择服务种类,其中WEB代理是最为简单的应用,也是控制粒度最细的SSL VPN应用,可以精确地控制每个链接;
端口映射是粒度仅次于WEB代理的应用,它通过TCP端口映射的方式(原理上类似于NAT内部服务器应用),为使用者提供远程接入TCP的服务,它需要专门的、与服务器配套的SSL VPN客户端程序帮忙;
IP连接是SSL VPN中粒度最粗的服务,但也是使用最广泛的,它实现了类似于L2TP的特性,所有客户端都可以从服务器获得一个VPN地址,然后直接访问内部服务器,它也需要专门的SSL VPN客户端程序帮忙;
SSL VPN由于处在TCP层,所以可以进行丰富的业务控制,如行为审计,可以记录每名用户的所有操作,为更好地管理VPN提供了有效统计数据;
当使用者退出SSL VPN登陆页面时,所有上述安全会话会统统释放。
以上7个步骤可以划分为三个阶段:阶段一是连接与验证、阶段二是VPN应用、阶段三是审计与退出
应用
WEB代理
简单讲就是一个反向代理的流程,客户端直接对SSL VPN服务器进行访问,SSL VPN服务器对内网发起访问,内网请求的结果返回给SSL VPN服务器,之后再返回给客户端。从流量的封装来看,就非常容易理解了
端口映射
端口映射和WEB代理非常类似,无非是WEB代理针对的是HTTP服务,端口映射就是TCP流量级别的,本质上是一回事
IP连接
用户登陆SSL VPN页面后,会建立HTTPS会话,服务器通过这个会话给用户自动加载SSL VPN客户端程序;
此时的SSL VPN客户端程序的目的是给用户PC创建一个虚拟网卡,以实现类似于L2TP那种到客户总部网络的VPN连接;
虚拟网卡创建好后,服务器会给该用户从地址池中取一个地址分配给该用户,同时下发路由、DNS等信息,服务器针对该地址池也会有一个服务器地址192.168.1.1,作为所有客户端程序虚拟网卡的网关;
此时SSL VPN客户端程序与服务器之间会建立一个全新的SSL会话,专门用来传输虚拟网卡与服务器之间的流量;
假设用户要访问DNS 10.6.16.1,根据路由的关系,PC会通过虚拟网卡将DNS请求(源192.168.1.2目的10.6.16.1)转发给SSL VPN服务器192.168.1.1;
PC上的SSL VPN客户端程序会将虚拟网卡发出的IP包封装至新的SSL会话中,通过互联网传送到服务器;
服务器进行解密,解封装后发现IP目的地址是10.6.16.1,那么就转发给DNS;
在SSL VPN的IP连接中,客户端访问内部服务器不再像WEB代理、端口映射那应该多个会话衔接而成,而是一个内部地址端到端会话,穿越互联网的时候直接会话被封装至SSL会话中,和L2TP Over IPSec非常类似
MPLS-VPN
如MPLS文中所述