传统TCP/IP协议缺乏有效的安全认证和保密机制,而IPsec目标在于给IPv4和IPv6提供可互操作的,高质量,基于加密的安全保障。IPsec是一系列安全业务,包括
- Access Control
- 访问控制
- Connectionless Integrity
- 无连接完整性
- Data Origin Authentication
- 数据起源认证
- Detection and rejection of replays
- 抗重播和拒绝
- Confidentiality
- 机密性
- Limited Traffic Flow Confidentiality
- 有限的流量保护
以上的服务都在IP层提供,保护所有利用IP层的协议,包括IP协议自身
大部分安全服务通过Authentication Header(AH)和Encapsulating Security Payload(ESP)提供。其中AH可以和ESP同时使用,AH只提供验证服务,不提供加密,而ESP同时提供验证和加密服务。
VPN
VPN建立保护网络实体之间的WAN通信
- 使用加密技术防止数据被偷听
- 数据完整性验证防止数据被破坏,篡改
- 通过认证机制确认身份,防止数据被截获,回放
IPsec组成
- ESP
- AH
- IKE
模式
IPsec有2种模式。
安全特性 | AH | ESP |
---|---|---|
协议号 | 51 | 50 |
数据完整性校验 | 支持(验证整个IP报文) | 支持(不验证IP头) |
数据源验证 | 支持 | 支持 |
数据加密 | 不支持 | 支持 |
防报文重放攻击 | 支持 | 支持 |
IPSec NAT-T(NAT穿越) | 不支持 | 支持 |
传输模式
- 封装模式相对简单
- 传输效率较高
- IP包头未被保护
简化传输流程
1 | |IP头|VPN头|数据|VPN尾| |
因为没有新增IP头,所以不能直接用于公网,使用场景一般为一下2种
- 一般通过结合其他VPN使用(GRE)
- 在大的内网里进行部署
隧道模式
- IP包头被保护
简化传输流程
1 | |新IP头|VPN头|IP头|数据|VPN尾| |
保护了IP头,可以直接在公网上进行传输,但是传输效率较低。经常用于一下场景
- 网关 - 网关
- 客户端 - 网关
- 网关作为代理
IPsec可作为IPsec 网关在路由器之间建立连接。或者
加密技术
用加密算法来保证数据安全性
- 对称加密算法
- DES(Data Encryption Standard)
- 3DES
- AES(Advanced Encryption Standard)
- 非对称加密算法
- Diffie-Hellman
- 密钥交换
连接开始的时候,利用非对称加密算法共享密钥,然后利用共享的密钥进行对称加密算法来通信。
NAT穿透
AH不支持NAT穿越,ESP支持一对一NAT穿越。在IP头|ESP头之间插入8个字节的UDP报头,端口号为4500,这样可以用这部分代替原先在IP部分做的验证。
1 | |新IP头|UDP头|VPN头|IP头|数据|VPN尾| |
数据报文验证
利用HMAC实现一下服务
- 实现数据完整性验证
- 实现身份验证
对加密的数据进行签名,把签名和加密的数据一起发送,然后重新对加密数据进行签名,对比签名是否一致
HMAC: 数据+key进行hash,数据签名也可以是实现相同功能 (PSK验证模式)
- 保障完整性
- 实现源认证
HMAC算法:
- 双方共享执行hash算法的秘钥key。
- 路由器A的用户数据与共享秘钥key通过hash算法得到数字签名。
- 路由器A将数字签名和用户数据一同传输给路由器B。
- 路由器B执行相同的算法过程得到数字签名。
- 路由器B比对数字签名是否一致
建立连接
建立IPsec VPN连接需要3个步骤
- 流量触发IPsec
- 建立管理连接
- 建立数据连接
阶段一
这个阶段总共有6个报文。前4个报文为明文传输,从第五个数据报文开始为密文传输,前4个数据包通过各种算法最终产生的密钥用于5,6个数据包以及以后的加密
- 第1,2个数据包用于协商对等体间的管理连接使用何种安全策略
- 第3,4个数据包通过DH算法产生并交换加密算法和HMAC功能所需要的密钥
- 第5,6个数据包使用预共享密钥等方式执行对等体间的身份验证
1 | R1(config)# crypto isakmp policy 1 |
- 3DES - The encryption method to be used for Phase 1.
- MD5 - The hashing algorithm
- Pre-share - Use Pre-shared key as the authentication method
- Group 2 - Diffie-Hellman group to be used
- 86400 – Session key lifetime. Expressed in either kilobytes (after x-amount of traffic, change the key) or seconds. Value set is the default value.
阶段一是为了创建ISAKMP SA
协商采用何种方式建立管理连接
使用传输集进行协商
- 加密算法
- HMAC功能
- 设备验证的类型
- DH密钥组
- 管理连接的生存周期
通过DH算法共享密钥信息
使用IKE进行密钥交换
对等体彼此进行身份验证
IPsec有多种认证方式,这里介绍共享密钥的认证方式
- 使用密钥加密用户身份信息
- 使用密钥和用户信息通过hash算法计算数字签名
- 对方对比数字签名确认身份
NAT检测
在第一阶段IKE协商中使用NAT-D负载用于发现是否存在NAT,简单来说就是对地址和端口做hash,传输到对面后进行对比,如果不同,则说明存在NAT。
若存在NAT设备,在发送5,6个包的时候,就会加上UDP包头
阶段二
- Create extended ACL
1 | R1(config)# ip access-list extended VPN-TRAFFIC |
- Create IPSec Transform
1 | R1(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac |
- Create Crypto Map
1 | R1(config)# crypto map CMAP 10 ipsec-isakmp |
- Apply crypto map to the public interface
1 | R1(config)# interface FastEthernet0/1 |
阶段二是为了创建IPsec SA
定义对等体间需要保护何种流量
定义ACL触发VPN的建立
定义用来保护数据的安全协议
- AH(认证头协议)
- 数据完整性服务
- 数据验证
- 防止数据回房攻击
- ESP(封装安全载荷协议)
- 验证
- esp-md5-hmac
- esp-sha-hmac
- 加密
- esp-null
- esp-des
- esp-3des
- esp-aes 128
- esp-aes 192
- esp-aes 256
- 验证
定义连接模式
- 隧道模式
- 传输魔术
定义数据连接的生存周期以及密钥刷新的方式
安全联盟SA
安全关联(SA)是一个定义在对等体之间没有方向的合约,规定了其用在安全连接里的方法(数据封装模式,认证和加密算法)和参数(密钥)等等。SA是单向的,双向的连接需要至少2个SA,每个方向一个SA。
SA由三元组来唯一标识
- 安全参数索引SPI(Security Parameter Index)标识VPN
- 32位连接标识符
- 使用IKE协商产生SA时,SPI将随机生成
- 安全协议
- 加密的密钥
- 鉴别使用的密钥
- 完整性检测的类型
- 安全协议类型
- IKE
- AH
- ESP
- 目的IP地址
SA的建立方法
- 手动
- IKE自动
- 密钥生成方式不同
- IKE:DH算法
- 生存周期不同
- 手动:永久
- IKE:协商决定
SA的存放
SA存放在IPsec的一个重要构件里面,叫做安全关联数据库SAD,当主机要发送IP安全数据报时,就要在SAD中查找响应的SA,以便获取必要的信息,来对该IP安全数据报实施安全保护。同样在接受的时候也要使用SAD来进行验证
IKEv2
IKE是一个非常复杂的协议,其最新版本是IKEv2,以三个协议为基础
- Oakley:密钥生成协议
- 安全密钥交换机制SKEME:用于密钥交换的协议,利用公钥加密来实现密钥交换协议中的实体鉴别
- 互联网安全关联和密钥管理协议ISAKMP:用于实现IKE中定义的密钥交换,使IKE的交换能够以标准化,格式化的报文创建安全关联SA
IKE的目的是建立SA(提供自动协商密钥、建立SA)
IKE的三个组件
- SKEME:实现公钥加密认证的机制
- Oakley:基于到达两个对等体间的加密密钥的机制
- ISAKMP:在两个实体间进行分组格式及状态转换的消息交换的体系结构。
GRE
不加密,速度快,俗称Tunnel技术(隧道技术),隧道技术就是源IP包前加IP头