简介
IPSec协议族是IETF制定的一系列安全协议,它为端到端IP报文交互提供了基于密码学的、可互操作的、高质量的安全保护机制。IPSec VPN是利用IPSec隧道建立的网络VPN。
IPSec协议体系
IPSec通过验证头AH和封装安全荷载ESP两个安全协议实现IP报文的安全保护。
- AH是报文头验证协议i,主要提供数据源验证、数据完整性验证和防报文重放功能,不提供加密功能。
- ESP是封装安全荷载协议,主要提供加密、数据源验证、数据完整性验证和防报文重放功能。
- AH和ESP协议提供的安全功能依赖于协议采用的验证、加密算法。
- IPSec加密和验证算法所使用的密钥可以手工配置,也可以通过因特网密钥交换IKE协议动态协商。
IPSec基本概念
IPSec安全协议—AH
- 提供数据源验证、完整性校验和抗重放
- 不提供数据加密功能
- AH用IP协议号51来标识
IPSec安全协议—ESP
- 提供数据真实性、数据完整性-抗重放、数据机密性
- ESP用IP协议号来标识
IPSec安全联盟
- IPSec安全传输数据的前提是在IPSec对等体之间成功建立安全联盟SA。
- SA是通信的IPSec对等体间对某些要素的约定。例如:对等体之间使用何种安全协议、需要保护的数据流特征、对等体间传输数据的封装模式、协议采用的加密算法、验证算法、对等体间使用何种密钥交换和IKE协议,以及SA的生存周期等。
- SA由三元组来唯一标识,这个三元组包括安全参数索引SPI、目的IP地址和使用的安全协议号(AS或ESP)。
- SA是单向的:In和Out方向各需要一个SA。
封装模式—传输模式
在传输模式中,AH头或ESP头被插入到IP头与传输协议头之间,保护TCP/UDP/ICMP负载。
封装模式—隧道模式
在隧道模式下,AH头或ESP头被插到原始IP头之前,另外生成一个新的报文头放到AH头或ESP头之前,保护IP头和负载。
- 传输模式下IPSec头被插到IP头之后但在所有传输协议之前,或者所有其他IPSec协议之前。
- 在隧道模式下,IPSec头被插到原始IP头之前,另外生成一个新的报文头放到AH或ESP之前。
IPSec协议封装模式对比
封装模式对比:
- 安全性:隧道模式隐藏原IP头信息,安全性更好。
- 性能:隧道模式有一个额外的IP头,隧道模式比传输模式占用更多带宽。
- 具体选择哪种封装模式,需要在性能和安全之间做权衡。
IKE介绍
因特网密钥交换IKE协议建立在Internet安全联盟和密钥管理协议ISAKMP定义的框架上,是基于UDP的应用层协议。它为IPSec提供了自动协商密钥、建立IPSec安全联盟的服务,能够简化IPSec的使用和管理,大大简化IPSec的配置和维护工作。
IKE的安全机制
IEK具有一套自保护机制,可以在不安全的网络上安全地认证身份、分发密钥、建立IPSec SA。
IKE的安全机制—身份认证
确认通信双方的身份,包括:
- 预共享密钥PSK认证
- 数字证书RSA认证
- 数字信封认证
IKE的安全机制—身份保护
- 身份数据在密钥产生之后加密传送,实现了对身份数据的保护。
- 支持的加密算法:
-DES(56bit->64bit) -3DES(3个56bit->64bit) -AES(128、192、256) -国密算法SM1、SM4
IKE的安全机制—DH密钥交换算法
- 发起方和响应方利用ISAKMP消息的Key Exchange和nonce荷载交换彼此的密钥材料。
-Key Exchange 用于交换DH公开值。 -nonce用于传递临时随机数。 - 由于DH算法中IKE Peer双方只交换密钥材料,并不交换真正的共享密钥,即使黑客窃取了DH值和临时值也无法计算出共享密钥,这一点正是DH算法的精髓所在。从抓包可以看到IKE Peer双方交换密钥材料。
DH密钥交换算法
IKE SA
IKE SA是为IPSecSA服务的,为IPSec提供了自动协商密钥、建立IPSec安全联盟的服务。
- 因特网密钥交换IKE协议建立在Internet安全联盟和密钥管理协议ISAKMP定义的框架上,是基于UDP的应用层协议,可为数据加密提供所需的密钥,能够简化IPSec的使用和管理,大大简化了IPSec的配置和维护工作。
- 对等体之间建立一个IKE SA完成身份验证和密钥信息交换后,在IKE SA的保护下,根据配置的AH/ESP安全协议等参数协商出一对IPSec SA。此后,对等体间的数据将在IPSec隧道中加密传输。
IKE协商
IKE协议分IKEv1和IEKv2两个版本。
- IKEv1
IKEv1使用两个阶段为IPSec进行密钥协商并建立IPSec SA。
- 第一阶段,通信双方协商和建立IKE本身使用的安全信道,建立一个IKE SA。
- 第二阶段,利用这个已通过了认证和安全保护的安全通道,建立一对IPSec SA。
- IKEv2
- IKEv2则简化了协商过程。
- 在一次协商中可直接产生IPSec的密钥,生成IPSec SA。
IKEv1协商的两个阶段
- 采用IKEv1协商联盟主要分为俩个阶段:
- 第一阶段,通信双方协商和建立IKE协议本身使用的安全通道,即建立一个IKE SA;
- 第二阶段,利用第一阶段已通过认证和安全保护的安全通道,建立一对用于数据安全传输的IPSec安全联盟。
-IKEv1协商阶段1的目的是建立IKE SA,IKE SA建立后对等体间的所有ISAKMP消息都将通过加密和验证,这条安全通道可以保证IKEv1阶段2的协商能够安全进行。 - 两个对等体间只建立一个IEK SA,它是一个双向逻辑连接。
- IKEv1协商阶段1支持两种协商模式:
- IKEv1协商阶段2的目的就是建立用来安全传输数据的IPSec SA,并为数据传输衍生出密钥。
- IEKv1协商阶段2采用快速模式。该模式使用IKEv1协商阶段1中生成的密钥SKEYID_a对ISAKMP消息的完整性和身份进行验证,使用密钥SKEYID_a对ISAJMP消息进行加密,故保证了交换的安全性。
主模式和野蛮模式协商过程图
主模式保护三次双向交换,用到了六条ISAKMP信息,这三次交换分别是:
- 消息①和②用于协商对等体之间使用的IKE安全提议。
- 发送方发起一个或多个IKE安全提议。
- 响应方对发起方的IKE安全提议进行协商。在协商时将从优先级最高的提议开始匹配,协议双方必须至少有一条匹配的IKE安全提议才能协商成功。匹配的原则则为协商双方具有相同的加密算法、认证算法、认证方法和Diffie-Hellman组标识。
- 响应方响应ISAKMP消息,携带经协商匹配的安全提议及参数。
- 消息③和④使用DH算法交换与密钥相关的信息,并生成密钥。
- 双方交换Diffie-Hellma公共值和nonce值,并产生IKE SA的认证和加密密钥。
- 消息⑤和⑥用于身份和认证信息交换,双方进行身份认证和对整个主模式交换内容的认证。
主模式和野蛮模式区别
- 交换的消息:
主模式为6个,野蛮模式为3个。 - 身份保护:
主模式的最后两条消息由加密,可以提供身份保护功能;而野蛮模式消息集成度过高,因此无身份保护功能。 - 对等体标识:
主模式只能采用IP地址方式标识对等体;而野蛮模式可以采用IP地址方式或者Name方式标识对等体。
野蛮模式使用场景
与主模式相比,野蛮模式减少了交换信息的数目,提高了协商的速度,但是没有对身份信息进行加密保护。虽然野蛮模式不提供身份保护,但它可以满足某些特定的网络环境需求。
- 当IPSec隧道中存在NAT设备时,需要启用NAT穿越功能,而NAT转换会改变对等体的IP地址,由于野蛮模式不依赖于IP地址标识身份,使得采用预共享密钥验证方法时,NAT穿越只能在野蛮模式中实现。
- 如果发现方的IP地址不固定或者无法预先知道,而双方都希望采用预共享密钥验证方法来创建IKE SA,则只能采用野蛮模式。
- 如果发起方已知响应方的策略,或者对响应方的策略有全面的了解,采用野蛮模式能够更快地创建IKE SA。
快速模式协商过程图
KEv2密钥协商和交换
- IKEv2保留了IKEv1的大部分特性,IKEv1的一部分扩展特性作为IKEv2协议的组成部分被引入到IKEv2框架中。
- 采用IKEv2协商安全联盟比IKEv1协商过程要简化的多,正常情况使用2次交换共4条消息就可以完成一对IPSec SA的建立。
- IKEv2中所有消息都以“请求-响应”的形式成对出现,响应方都要对发起方发送的消息进行确认,如果在规定的时间内没有收到确认报文,发起方需要对报文进行重传处理,提高了安全性。
- IKEv2定义了三种交换:
IKEv2初始交换过程图
- IKEv2通过初始交换就可以完成一个IKE SA和第一对IPSec SA的协商建立,如果要求建立的IPSec SA大于一对时,每一对SA值只需要额外增加一次创建子SA交换。
- IKEv2初始交换对应IKEv1的第一阶段,初始交换包含两次交换四次消息。
- 消息①和②属于第一次交换。以明文方式完成IKE SA的参数协商,包括协商加密和验证算法,交换临时随机数和DH交换。IKE_SA_INIT交换后生成一个共享密钥材料,通过这个共享密钥材料可以衍生出IPSec SA的所有密钥。
- 消息③和④属于第二次交换,以加密方式完成身份认证,对前两条信息的认证和IPSec SA的参数协商。
- 创建子SA交换包含两条消息,用于一个IKE SA创建多个IPSec SA或IKE的重协商,对应IKEv1的第二阶段。该交换必须在初始交换完成后进行,交换消息由初始交换协商的密钥进行保护。如果启用PFS,创建子SA交换需要额外进行一次DH交换,生成新的密钥材料。生成密钥后,子SA的所有密钥都从这个密钥材料衍生出来。该交换的发起者可以是初始交换的协商发起方,也可以是初始交换的协商响应方。
IKEv2通知交换过程图
IPSec VPN部署逻辑顺序
IPSec加密及验证过程
- IPSec采用对称加密算法对数据进行加密和解密。
- 验证指IP通信的接收方确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。
- IPSec采用HMAC(Keyed-Hash Message Authentication Code)功能进行验证。HMAC功能通过比较数字签名进行数据包完整性和真实性验证。
IKE与IPSec的关系
NAT-T技术
IPSec VPN技术与NAT技术在网络中有着广泛的应用。因为技术本身的特点,IPSec与NAT同时工作会有冲突而影响业务报文的正常转发。 IPSec NAT穿越场景 在IPSec VPN部署中,如果发起者位于私网内部,而它希望与FW_A之间建立一条IPSec隧道,这种情况下NAT会对部署IPSec VPN网络造成障碍。 IPSec NAT穿越分析
- AH无法穿越NAT:
- ESP穿越NAT的问题:
- 支持一对一的NAT。
- ESP会加密原始数据包的传输层端口信息,所有不支持PAT。
IPSec NAT穿越原理 NAT-T技术在ESP封装和外层IP报头之间插入8个字节的UDP报头,端口号为4500。
- 添加了一个新的UDP报头,端口号是4500,有了端口号后,NAT就可以正常进行转发了。
- NAT设备对私网用户来说是不可见的,这里就有个问题,网络设备怎么知道是否有NAT的存在,什么时候该添加UDP报头,什么时候不该添加。
- IPSec一般要先经过IKE协商,交互密钥之后才能发送数据。NAT-T技术在IKE协商阶段通过某种机制来发现是否有NAT的存在。有NAT存在的时候添加UDP报头,没有NAT的时候就不添加。
IPSec vpn 配置感兴趣流 在公网口调用ipsec policy策略 隧道模式
ipsec vpn nat-t 配置感兴趣流 在公网口调用ipsec policy策略 在IKE-peer中开 启nat traversal 隧道模式
gre over ipsec 不配置感兴趣流 在隧道口调用ipsec prefile策略 传输模式
gre over ipsec nat-t 不配置感兴趣流 在隧道口调用ipsec prefile策略 隧道模式 在IKE-peer中开启nat traversal 必须野蛮模式
dsvpn 不配置感兴趣流 在隧道口调用ipsec prefile策略 传输模式/隧道模式
dsvpn nat-t 不配置感兴趣流 在隧道口调用ipsec prefile策略 隧道模式 在IKE-peer中开启nat traversal 远端身份信息和本端身份信息需要一致 必须野蛮模式
|