a. IPSec基础介绍
IPSec定义:(英语:Internet Protocol Security,缩写为IPsec),是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。
1. IPSec对等体
IPSec 用于在两个端点之间提供安全的 IP 通信,通信的两个端点被称为 IPSec 对等体。
2. 安全联盟
SA(Security Association)安全联盟是要建立IPSec隧道的通信双方对隧道参数的约定,包括隧道两端的IP地址、隧道采用的验证方式、验证算法、验证密钥、加密算法、加密密钥、共享密钥以及生存周期等一系列参数。
SA 是单向的,在两个对等体之间的双向通信,至少需要两个 SA。SA 由一个三元组来唯一标识,这个三元组包括安全参数索引 SPI(Security Parameter Index)、目的 IP 地址、安全协议名(AH 或 ESP)。
3. 协商方式
建立 SA 的方式有以下两种:
手工方式(manual):建立安全联盟比较复杂,安全联盟所需的全部信息都必须手工配置。但优点是可以不依赖 IKE 而单独实现 IPSec 功能。
IKE 动态协商(isakmp)方式:建立安全联盟相对简单些,只需要通信对等体间配置好 IKE协商参数,由 IKE 自动协商来创建和维护 SA。
4. IPSec封装模式
隧道模式。在隧道模式下,AH 或 ESP 插在原始 IP 头之前,另外生成一个新 IP 头放到 AH或 ESP 之前。
传输模式。在传输模式下,AH 或 ESP 被插入到 IP 头之后但在传输层协议之前。
隧道模式生成新的包头安全性比传输模式高,但隧道模式比传输模式占用带宽更多。
5. IPSec使用的认证算法和加密算法
认证算法IPSec可以使用三种认证算法:
MD5(Message Digest 5):MD5 通过输入任意长度的消息,产生 128bit 的消息摘要。
SHA-1(Secure Hash Algorithm):SHA-1 通过输入长度小于 2 的 64 次方比特的消息,产生 160bit 的消息摘要。
SHA-2:SHA-2 算法相对于 SHA-1 加密数据位数有所上升,安全性能要远远高于SHA-1。
加密算法
加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。
IPSec使用以下三种加密算法:
DES:使用 56bit 的密钥对一个 64bit 的明文块进行加密。
3DES:使用三个 56bit 的 DES 密钥(共 168bit 密钥)对明文进行加密。
AES:使用 128bit、192bit 或 256bit 密钥长度的 AES 算法对明文进行加密。
6. 通信保护协议
AH认证头协议:
协议号51。
定义于RFC 2402。
鉴别头AH:(不提供保密性,只对整个IP数据包提供保护)。
无连接数据完整性:通过哈希函数产生的校验来保证。
数据源认证:通过计算验证码时加入一个共享密钥来实现。
抗重放服务:AH报头中的随机序列号可以防止重放攻击。
可以用于隧道和传输两种模式中。
使用MD5/SHA-1。
提供如下的功能:
数据完整性;
数据源认证;
Anti-replay服务。
ESP封装安全载荷协议:
协议号50。
定义于RFC 2406。
除提供 AH 认证头协议的所有功能之外,还有数据保密和有限的数据流保护,ESP 协议允许对 IP 报文净荷进行加密和认证、只加密或者只认证,ESP 没有对 IP头的内容进行保护。
保密服务通过使用密码算法加密 IP 数据包的相关部分来实现。
数据流保密由隧道模式下的保密服务提供。
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
AH认证头协议,无法在穿越NAT的时候使用,因为AH协议会对IP包头进行校验。ESP协议可以。
可以用于隧道和传输两种模式中。
提供如下的功能:
数据完整性;
数据保密性;
数据源认证;
Anti-replay服务。
7. IPsec提供了两种安全机制:认证和加密
认证机制使 IP 通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。
加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。
b.1 IPSecVPN协商过程
b.2 主模式与野蛮模式对比
IKEv1建立IKESA的过程定义了主模式(Main Mode)和野蛮模式(Aggressive Mode)两种交换模式。
主模式包含三次双向交换,用到了六条信息:
消息①和②用于协商算法;
消息③和④用于密钥信息交换,DH算法;
消息⑤和⑥用于身份和认证信息交换。
野蛮模式只用到三条信息:
前两条消息①和②用于协商提议,消息③用于响应方认证发起方。
野蛮模式协商比主模式协商更快。主模式需要交互6个消息,野蛮模式只需要交互3个消息。
主模式协商比野蛮模式协商更严谨、更安全。因为主模式在5、6个消息中对ID信息进行了加密。而野蛮模式受到交换次数的限制,ID信息在1、2个消息中以明文的方式发送给对端。即主模式对对端身份进行了保护,而野蛮模式则没有。
两种模式在确定预共享的方式不同。主模式只能基于IP地址来确定预共享密钥。而野蛮模式是基于ID信息(主机名和IP地址)来确定预共享密钥。
c.1 IPSecVPN协商过程(主模式)
【第一阶段】
(1)主模式包交换解析(第一组报文)
第一阶段第一组报文1和2的主要任务:
加密算法
散列算法
DH组
认证方式
密钥有效期
完成以上内容的协商
注意:
第一阶段协商的策略不是真正用来加密两端互通的私网流量的策略,只用在第一阶段后面两组报文的使用上和第二阶段的协商过程中,第二阶段重新协商的策略才是真正加密流量的。
ISAKMP数据包通过UDP传输的,源目端口都是500。穿越NAT时用UDP 4500。
(2)主模式包交换解析(第二组报文)
IKE Phase 1 (Main Mode): Sending Message 3 and 4两部分内容要互相交换:Key Exchange和Nonce Payload:
Key exchange data是双方共同要告诉对方的。
Nonce(随机产生非常大的数字)是双方接下来验证需要的原材料之一。第二组的主要任务就是要交换双方的共享信息,产生一个密钥。
(3)主模式包交换解析(第三组报文)
预共享密钥认证:
IKE Phase 1(Main Mode): Sending Message 5
把Hash_l通过SKEYID_e进加密发送
IKE Phase 1 (Main Mode): Sending Message 6
把Hash_R通过SKEYID_e进加密发送
最后一组发送完毕后,使用SKEYID_e解密对方发送的数据,里面有原始数据ID_R和哈希值Hash_R,使用接收到的ID_R按照PRFE函数进行哈希,比较接收到的哈希值和自己产生的哈希值是否相等。
Hash_R ? = Self Hash_R
相等即可建立ISAKMP SA,IKE第一阶段完成。
【第二阶段】
(1)第1个包:
在IKE SA协商基础上形成新的KEY;
封装方式:AH、ESP;
加密方式:DES、3DES、AES...;
完整性算法:MD5、SHA-1;
IPSEC SA:默认1个小时;
两端保护子网。
(2)第2个包:包主要是接收端查看本地有没有一个IPSec SA策略与发起方的一样,如果有,并且认证成功,感兴趣流协商成功,那么接收端会把协商成功的IPSec SA策略发给发起端,同时也会把自己的认证KEY发给发启端来进行双向认证。
(3)第3个包:包主要是发起端对接收端发来的第二个包进行确认,协商成功进行业务访问。
c.2 IPSecVPN协商过程(野蛮模式)
野蛮模式同样包含三个步骤,但仅通过三个包进行传输,标示为aggressive 野蛮模式的三个包交换:
第1个交互包发起方建议SA,发起DH交换;
第2个交互包接收方接收SA;
第3个交互包发起方认证接收方,野蛮模式前两个报文是明文,第三个报文是密文。
d. IPSecVPN高级设置
d.1 IPSecVPN中NAT穿越(NAT-T)
在非NAT环境中,IPSec协商使用UDP 500端口进行协商。而VPN设备(私网出口地址)如果在NAT设备内部,NAT不会对ESP进行端口转换,此时需要NAT-T技术在ESP封装和外层IP报头之间插入8个字节的UDP报头,端口号为UDP 4500。
d.2 IPSecVPN Proxy-ID
Proxy ID(代理ID,即感兴趣流)用于在两个VPN端对端间交换策略,代表着需要获得安全服务的数据包,通常指两端内网地址,定义的地址必须对称。
若无填写,采用策略模式则需要在创建策略时填写对称的地址,即本地的源地址子网与对端的目的地址子网相同。
Proxy ID 常用于本端 Hillstone,对端第三方设备的场景。
Proxy ID 错误配置是 VPN 建立最常见的错误。
更多IPSecVPN及其他精彩内容请见: