问题描述
IPSec 是在两个端点之间提供安全通信,端点被称为 IPSec 对等体。IPSec 能够允许系统、网络的用户或管理员控制对等体间安全服务的粒度;
例如,某个组织的安全策略可能规定来自特定子网的数据流应同时使用 AH 和 ESP 进行保护,并使用 3DES 进行加密;另一方面,策略可能规定来自另一个站点的数据流只使用 ESP 保护,并仅使用 DES 加密;
解决方案
SA(Security Association,安全联盟),是通信对等体间对某些要素的约定,帮助 IPsec 对特定要素进行约定,SA 定义 IPSec 通信对等体间将使用的 数据封装模式、认证和加密算法、密钥 等等参数;
例如,使用哪种安全协议、协议的操作模式(传输模式和隧道模式)、加密算法(DES 和 3DES)、特定流中保护数据的共享密钥以及密钥的生存周期等;
通过 SA,IPSec 能够对不同的数据流提供不同级别的安全保护,在建立 IPSec Tunnel 过程中,需要完成 SA 的建立;
通信的双方符合 SA 约定的内容,就可以完成 SA 的建立。SA 是 IPSec 的基础,也是 IPSec 的本质;
特性特征
SA 是单向的逻辑连接(IPSec SA,但注意 IKE SA 是双向的),所以:
1)两个 IPSec 对等体间的双向通信(即建立一条 IPSec 隧道),至少需要两个 SA 来分别对两个方向(出向、入向)的数据流进行安全保护;
2)如果两个对等体希望同时使用 AH 和 ESP 安全协议来进行通信,则对等体针对每种安全协议都需要协商一对 SA,一个用于 AH,另个用于 ESP;
SA 通过三元组来标识,该三元组包括:
- 安全参数索引(SPI,Security Parameter Index),是为了唯一标识 SA 而生成的一个 32-bit 的数值,它在 AH 和 ESP 头中传输;在手工配置 SA 时,需要手工指定 SPI 的取值;当使用 IKE 协商产生 SA 时,SPI 将随机生成;
- 目的网络地址(DST-IP-ADDR)
- 安全协议号(AH 或 ESP)
生成方式
IPsec 技术在数据加密,数据验证,数据封装等方面有多种实现方式或算法,两端的设备使用 IPsec 进行通信时需要保证一致的加密算法,验证算法等。因此需要一种机制帮助两端设备协商这些参数;
生成 SA 的方式通常有两种:
- 通过管理员配置,来指定 SA 中的各个参数;
- 通过 IKE 协议,来自动协商生成 SA 中的各个参数;
手工方式
SA 所需的全部信息都必须手工配置;
特性特征:
- 缺点:手工方式建立 SA 比较复杂;手工方式建立 IPsec SA 管理成本很高,加密验证方式需要手工配置,手工刷新 SA,且 SA 信息永久存在安全性较低
- 优点:不依赖其他服务,便能单独实现 IPSec 功能;
应用场景:
- 当对等体设备数量较少时,
- 或在小型静态网络环境中,手工配置 SA 是可行的;
IKE 动态协商方式
只需要通信对等体间配置好 IKE 协商参数,由 IKE 自动协商来创建和维护 SA;
特性特征:
动态协商方式建立 SA 相对简单些;IKE 方式建立 IPsec SA 管理成本比较低,加密验证方式通过 DH 算法生成,SA 信息有生成周期,且 SA 动态刷新,适用于小型,中大型网络;
应用场景:
- 针对中、大型的动态网络环境中,推荐使用 IKE 协商来完成 SA 建立;
保存位置
IPSec 设备会把 SA 的相关参数放入 SPD(Security Policy Database)里面,SPD 里面存放着“什么数据应该进行怎样的处理”这样的消息;
在 IPSec 数据包出站和入站的时候会首先从 SPD 数据库中查找相关信息并做下一步处理;