IPsec是什么
IPsec(IP Security)是一系列为IP通信提供安全性的协议和服务的集合,工作在IP层,可以为上层协议和应用提供透明的安全服务。IPsec提供两种安全机制:认证和加密。
认证机制
使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。
加密机制
通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。
IPsec提供的安全保护包括:
- 用户数据加密,通过加密算法提供好数据私密性。
- 消息完整性验证,通过摘要认证确保数据在传输路径上未经修改。
- 防御特定类型攻击,通过序列号防数据重放、通过认证防中间人攻击。
- 提供设备之间安全算法和秘钥的协商能力,提供安全的在线秘钥生成机制。
- 提供隧道和安全两种模式,满足不同的网络结构需求。
IPsec出现的原因
- 网络安全问题日益严重,需要保证数据在网络上的传输是安全的。
- 大多数保证数据安全的协议或技术都是在应用层,如SSL协议可以为WEB或FTP提供安全连接,但对于ping、Telnet、SNMP等无效。
- 需要在IP层提供安全性的方法,可以使在传输层上层的所有协议受益。
IPsec相关概念
- SA(Security Association,安全关联):为安全目的创建的一个单向逻辑连接,所有经过同一个SA的数据流会使用相同的安全处理协议(AH或ESP)。对同一个数据流同时使用AH和ESP时需要两个嵌套的SA。双向的数据流需要通信实体之间维护一对出入彼此呼应的SA。
SPD(Security Association Database,安全关联数据库):用于存放与SA关联的所有状态数据的存储结构。
SPI(Security Parameters Index,安全参数索引):一个被携带在AH或ESP报文头中的32bit数值,用于在接收端识别数据流到SA的绑定关系。
SPD(Security Policy Database,安全策略数据库):指明所有IP数据报文应该使用何种安全服务,以及如何获得这些服务的数据结构。SPD是一个有序的结构,用访问控制列表来描述数据流特性。
AH(Authentication Headers,认证头协议):提供数据来源认证,数据完整性校验,保护通信免受篡改,但不能防止窃听,适合于传输非机密数据。AH协议使用事先协商好的算法和密钥计算报文
数据部分
的摘要值,然后作为报文完整性的证据保存在AH的头结构中。ESP(Encapsulating Security Payloads,封装安全载荷协议):提供加密,数据源校验,数据完整性校验。ESP协议将
原始报文
加密后作为负载携带在报文中。IKE(Internet Key Exchange,因特网密钥交换协议):用于动态建立SA,SA有生命周期,如果安全策略要求建立安全、保密的连接,但又不存在与该连接相应的SA,IPSec会立刻启动IKE来协商SA。
ISAKMP(Internet Security Association Key Management Protocol,安全联盟密钥管理协议):定义了协商、建立、修改和删除SA的过程和包格式,只是提供了一个通用框架,并没有定义具体的SA格式,与IKE独立,可以被不同的密钥交换协议使用。
IKE使用ISAKMP消息来协商并建立SA。
注:AH使用较少,原因是AH协议无法提供数据加密,所有数据都是明文传输,另外由于AH提供数据来源确认,一旦源IP地址改变,AH校验失败,无法穿越NAT。
IPsec的工作原理
封装模式
- 传输模式:只对IP数据报的数据部分进行加密,在原始IP报文头部与上层协议之间插入AH或ESP协议头。适用于主机到主机方式报文的处理。
隧道模式:对整个IP数据报进行加密,增加新IP头部而将原始IP数据包包括头部都作为负载。适用于转发设备上做封装处理的场景。
AH保护
ESP保护
工作流程
两个IPsec实体之间的IKE协商分为两个阶段:
- 第一阶段:建立ISAKMP SA
- 两种模式:
- 主模式(main mode):6条ISAKMP消息交互
- 积极模式(aggressive mode):3条ISAKMP消息交互
- ISAKMP SA为第二阶段的ISAKMP消息提供安全保护
第二阶段:建立IPsec SA
- 一种模式:
- 快速模式(quick mode):3条ISAKMP消息交互
- IPSec SA为IP数据提供安全保护
ISAKMP报文头格式
cookie: 用于帮助通信双方确认一个ISAKMP报文是否真的来自对方,对于一个SA,cookie是唯一的,即在协商过程中,cookie不能改变。cookie由各自实体的机密信息生成,该机密信息不能通过cookie推到出来。
交换类型:表示该报文所属的交换类型,通常为主模式或积极模式。
标志 :加密位(encryp):如果是1,表示ISAKMP头部后的所有载荷都被加密了;如果是0,表示是载荷是明文,没有被加密。
提交位(commit):用于确保在发送被保护的数据之前完成协商。
IPsec配置步骤
- 定义协商第一阶段ISAKMP策略
- 定义ISAKMP消息的保护策略,包括加密算法、验证算法、验证方式等。
- 定义协商第二阶段IPsec SA策略
- 定义IP数据的保护策略,协议是使用ESP还是AH、加密算法、验证算法、封装模式是隧道模式还是传输模式等。
- 定义要被IPsec保护的数据。
- 定义crypt to map
- 定义IPsec SA对端通信实体,并配置协商第二阶段IPsec SA策略和保护数据。
在出接口上调用crypt to map
- 确保路由表中的路由能将被保护的数据从配置了crypt to map的出接口转发出去。
数据包经过IPsec实体时有三种处理方式:IPsec保护、丢弃或旁路(自由穿越,不受保护)。