百闻不如一见的IPSec VPN 靠什么保障安全?
因特网协议安全IPSec IETF定义一种开放标准的安全框架结构,通信双方在IP层通过加密、完整性校验、数据源认证等方式,可以用来保证IP数据报文在网络上传输的机密性、完整性和防重放;目前IPSec最主要的应用是构造虚拟专用网(VPN);企业远程分支机构可以通过使用IPSec VPN建立安全传输通道,接入到企业总部网络。
–私密性:指对数据进行加密保护,用密文的形式传送数据。
–完整性:指对接收的数据进行散列计算,以判定报文是否被篡改。
–防重放:指防止恶意用户通过重复发送捕获到的数据包所进行的攻击,即接收方会拒绝旧的或重复的数据包。
–防抵赖:指基于签名及签名验证,可以判断数据的发送方是真实存在的用户。
VPN技术的分类:
1、Peer-to-Peer VPN:例如MPLS-VPN,大部分配置在运营商的PE(Provider Edge)路由器上做,在内网CE(Customer Edge)路由器上做少量配置即可;此种是运营商提供的VPN解决方案,需要向运营商申请,费用较高。
2、Overlay VPN:例如GRE-VPN和IPsec-VPN;GRE-VPN可以支持任何路由选择协议和任意类型的数据流量;IPsec-VPN只能支持IPv4、路由器两端的参数需要完全匹配且只能支持单播流量;目前在两者基础上还有一种GRE over IPSec VPN,数据先通过GRE封装再通过IPSec进行封装,既保证了数据的兼容性又能保障了数据的安全性,是目前比较完善的VPN解决方案。
3、IPsec-VPN可分为Site-to-Site VPN和Remote-Access VPN。
–Site-to-Site VPN;一般部署在两个办公场点的边界路由器上。
–Remote-Access VPN/拨号VPN;一般用于实现单个PC和公司内网之间的通信;需要结合客户端软件使用(easy-vpn)。
▶散列算法:散列函数HASH哈希计算,进行数据帧的完整性校验
计算方法一:CRC(32bit)循环冗余校验 (Layer2的FCS校验)
计算方法二:MD5 (128bit) SHA-1(160bit) SHA-2(256bit)
计算方法三:HMAC散列信息验证码,原始数据 散列算法 (密钥/签名)
HASH的特点:1.不定长输入,定长输出 2.雪崩效应 3.计算不可逆
HMAC(HASH Message Authentication Code):散列信息认证码,用于保证流量的完整性,基于DATA和KEY进行计算;一般的HASH算法只针对DATA进行计算
MD5输出为128位,SHA-1的输出为160位,SHA-2输出为256位,但是IPSec只能携带前96位,存在着很大的漏洞。
▶加密算法:对称加密、非对称加密、数字签名和DH算法
1、对称加密:使用一把相同的密钥对数据进行加密和解密;加密速度快,报文紧凑,可以用于大流量数据的加密;如DES、3DES、AES(256bit以上);
2.1、非对称加密:使用一对密钥对数据进行加密和解密,使用公钥对数据集进行加密,使用私钥对数据进行解密;加密速度慢,密文不紧凑,通常只用于数据签名或加密一些小文件;如RSA、ECC(1024bit以上);
2.2、数字签名:私钥加密,公钥解密;先对完整数据数据做HMAC计算,再使用私钥进行加密,用于防数据篡改和用户身份认证;
3、DH算法:不用交互密钥本身,通过交互密钥的材料,生成一把相同的密钥;还可以周期性生成新的密钥并自动更换密钥。
IPSec架构:
IPSec体系结构主要由IKE/SA、AH和ESP协议套件组成。
▶IKE协议:包含三个协议的主要功能,用来完成第一阶段的自动协商加密算法、散列算法和设备身份认证;包含协商参数;产生KEY、交换KEY、更新KEY;对双方进行身份认证;对密钥进行管理;组成协议如下:
1.ISAKMP;定义了信息交换的体系结构/格式;基于UDP,源目端口都是500
2.SKEME;实现公钥加密认证的机制
3.Oakley;提供在两个IPsec对等体间达成相同加密密钥的基于模式的机制
▶安全联盟SA:指的一组对等体之间用来保护流量手段的集合,定义了IPSec通信对等体间使用的数据封装模式、认证和加密算法、密钥等参数;SA是单向的,两个对等体之间的双向通信至少需要两个SA,如果两个对等体希望同时使用AH和ESP安全协议来进行通信,则对等体针对每一种安全协议都需要协商一对SA。SA由一个三元组来唯一标识,包括安全参数索引SPI、目的IP地址、安全协议。
▶IKE动态协商方式:只需要通信对等体间配置好IKE协商参数,由IKE自动协商来创建和维护SA,动态协商方式建立安全联盟相对简单些;对于中、大型的动态网络环境中,推荐使用IKE协商建立SA。
▶AH协议:认证报头,协议号51;用来完成第二阶段提供的功能是数据源验证、数据完整性校验和防报文重放功能;AH可以对整个数据包做认证然而AH并不加密所保护的数据。
▶ESP协议:安全封装载荷,协议号50;用来完成第二阶段提供的功能是数据源验证、数据完整性校验和防报文重放功能;能提供AH的所有功能外,还可提供对数据的加密功能。
IPsec工作过程:
▶第一阶段:协商如何保护流量,协商加密算法、散列算法,使用哪个DH组、协商SA生存周期、协商设备认证方式;通过DH算法交互密钥,密钥供加密算法使用保护连接,此时形成一条双向SA;为了确保两个设备之间避免出现伪装者,在做IPsec的时候需要进行设备认证。
-预共享密钥(实验室环境中使用,不够安全)
-RSA加密的随机数(使用很少)
-RSA数字证书/签名(CA颁发的证书,使用范围较广)
第一阶段协商的具体内容:
1、 协商对等体之间采用何种方式做认证;预共享密钥/RSA加密的随机数/证书
2、 协商双方使用何种加密算法;AES/RSA/ECC
3、 协商双方使用何种散列算法;HMAC/MD5/SHA
4、 协商双方使用何种DH密钥组
5、 协商双方使用何种模式;主模式/野蛮模式
6、 协商SA的生存周期
第一阶段有两种工作模式:主模式和野蛮模式;
主模式:在三次交换中总共用到了六条消息,最终建立了SA;
主模式的好处:设备验证的步骤发生在安全的管理连接中,因为这个连接是在前两个步骤中构建的,因此,两个对等体需要发送给对方的任何实体信息都可以免受攻击;Site-to-Site VPN默认使用主模式。
野蛮模式(积极模式):对于两端IP地址不是固定的情况(如ADSL拨号上网),并且双方都希望采用预共享密钥验证方法来创建IKE SA,就需要采用野蛮模式。另外如果发起者已知回应者的策略,采用野蛮模式也能够更快地创建IKE SA。
注:使用Remote-Access VPN时就一定要用野蛮模式来协商,如果用主模式的话,就会出现根据源IP地址找不到预共享密钥的情况,以至于不能生成SKEY_ID。
两种模式的区别:
1、野蛮模式协商比主模式协商更快。主模式需要交互6个消息,野蛮模式只需要交互3个消息。
2、主模式协商比野蛮模式协商更严谨、更安全。主模式在5、6个消息中对ID信息进行了加密。野蛮模式由于受到交换次数的限制,ID信息在1、2个消息中以明文的方式发送给对端。即主模式对对端身份进行了保护,而野蛮模式则没有。
3、对NAT/PAT的支持:
①对预共享密钥认证:主模式不支持NAT转换,而野蛮模式支持。
②对于证书方式认证:两种模式都能支持。
4、 两种模式在确定预共享密钥的方式不同;主模式只能基于IP地址来确定预共享密钥;而野蛮'模式是基于ID信息(主机名和IP地址)来确定预共享密钥。
注:在按需链路中,可以启用IKE Keepalive特性,路由器会周期性10秒/次发送IKE Keepalive报文,用于检测路径的实时连通性;在单向启用即可。
▶第二阶段:协商使用哪一款安全协议加密数据(ESP或AH)、保护流量;使用ESP/AH的时候,选择哪一种加密算法和散列算法、协商是否需要再次进行DH算法生成新的密钥(PFS)、SA周期和IPSec封装模式;协商完毕形成两条单向SA。
第二阶段协商的具体内容:
1、协商双方使用何种封装模式;隧道模式/传输模式
2、协商双方使用何种加密算法;AES/RSA/ECC
3、协商双方使用何种散列算法;HMAC/MD5/SHA
4、协商双方使用何种DH密钥组
5、协商双方使用的密钥更新周期
第二阶段只有一种工作模式:快速模式;它定义了受保护数据连接是如何在两个IPsec对等体之间构成的;快速模式有两个主要的功能:
1.协商安全参数来保护数据连接。
2.周期性的对数据连接更新密钥信息.
快速模式需要交换3个报文,这些消息都是使用IKE进行保护,这意味着将使用IKE phase1中导出来的SKEYIDe和SKEYIDa对所有分组进行加密和验证。
注:针对Remote-Access VPN;思科还使用了一个1.5阶段,包含扩展认证Xauth和Mode config两种模式。
在这个阶段,如果启用了DPD特性,路由器会周期性发送DPD报文,用于检测路径的实时连通性;需要在双向启用。
IPSec封装模式:传输模式,适用于同一个园区网内的两台主机之间的安全连接
1、在IP报头和上层协议之间插入AH或ESP报头;对上层协议数据提供保护。
–在IP头部之后插入AH头,会对整个IP数据包进行完整性校验。
–在IP头部之后插入ESP头,在数据字段后插入尾部以及认证字段;只对IP数据包中的ESP报头,上层数据和ESP尾部进行完整性校验。
2、传输模式中的AH ESP:在IP头部之后插入AH和ESP头,在数据字段后插入尾部以及认证字段(可选的);对高层数据和ESP尾部进行加密,对整个IP数据包进行完整性校验。
3、在GRE over IPSec环境中必须使用传输模式,数据封装格式为:
Ethernet2|IPV4(新)|ESP|GRE|IPv4|TCP|HTTP|FCS
IPSec封装模式:隧道模式,适用于跨园区网的两台边界路由器间建立安全连接
1、AH或ESP头封装在原始IP报文头之前,并另外生成一个新的IP报头封装到AH或ESP之前;隧道模式可以完全地对原始IP数据报进行认证和加密,而且可以使用新的IP报头来隐藏内网主机的私有IP地址。
–在IP头部之后插入AH头,会对整个IP数据包进行完整性校验。
–在IP头部之后插入ESP头,在数据字段后插入尾部以及认证字段(可选的);只对IP数据包中的ESP报头,上层数据和ESP尾部进行完整性校验。
2、隧道模式中的AH ESP:对整个原始IP报文和ESP尾部进行加密,对除新IP头之外的整个IP数据包进行完整性校验。
注:ESP散列封装的是数据载荷,对新封装的IP报头不会保护,这种在NAT环境中不会影响正常使用,但是在PAT环境中因为四层接口被保护,就无法实现PAT端口转换;为了支持PAT,需要开启NAT穿越功能(IPSec NAT-T),在IPSec封装报文中添加UDP字段,默认端口号为4500,PAT路由器通过记录端口号来放行对应流量;封装格式:Ethernet2|IPV4(新)|UDP|ESP|GRE|IPv4|TCP|HTTP|FCS
通过ESP和AH做散列计算时是不包含三层报头中TTL和校验和字段;AH散列保护的是整个数据包,所以是不支持NAT和PAT。
推荐书籍:思科VPN完全配置手册
普通的IPsec-VPN主要适用于不同厂家VPN之间的对接,兼容性非常好,思科路由器和ASA可以和大部分非思科厂家的VPN设备进行IPsec-VPN对接。然而这种普通的IPsec-VPN并不适用于复杂的网络环境,主要存在如下问题:
1、由于没有虚拟隧道接口,不支持通过运行动态路由协议来实现路由互通;
2、由于没有虚拟隧道tunnel接口,不能对通信点之间的明文流量进行控制和监测(如ACL、QOS、NAT、Netflow等);
3、配置复杂,每增加一个站点或网段,都要增加许多感兴趣流,排错复杂。
为了解决IPsec-VPN存在的问题,思科提供的解决方案是GRE over IPsec
▶GRE Over IPsec 技术;通过GRE来建立虚拟隧道(tunnel口),运行动态路由协议来学习路由;通过在tunnel接口上配置ACL、QOS等技术来控制数据流,通过IPsec技术将GRE隧道中的数据进行保护。
首先在两个站点之间,使用GRE在两台路由器之间建立了一条隧道(tunnel口),GRE隧道的作用就是虚拟地把两个站点连接在一起,就像是拉了一根专线一样把站点A和站点B连接起来,中间没有其他设备;这样就可以在这根"线"两端的两个接口上配置IP地址,并且运行动态路由选择协议,使得两台路由器分别学习到对方身后网络的路由;然后在tunnel接口进行数据控制和采集,由于站点A和B分别使用的是两个站点的公网IP地址,即不管GRE封装之前的原始数据如何,封装之后的源IP都是A,目标IP都是B,也就是我们只需要将A到B和B到A的流量分别在A和B上配置为兴趣流量即可,这样就可以把所有的GRE流量都进行了加密;通过GRE over IPSec,即解决了安全问题,也解决了普通IPSEC VPN感兴趣流过多,配置复杂的问题。
注:GRE over IPSEC,加密点等于通信点,是一个典型的传输模式的IPsec-VPN,因此GRE over IPSEC推荐使用传输模式;如果使用隧道模式,就会增加一个20字节的IP头部,因此,GRE技术经过IPSEC加密使用传输模式更加优化。