IPSec框架
IPSec是一个框架,它不是具体指某个协议,而是定义了一个框架,由各种协议组和协商而成。该框架涉及到的主要有加密算法、验证算法、封装协议、封装模式、密钥有效期等等。
散列函数
主要算法包含MD5与SHA-1,主要任务是验证数据完整性。
主要使用HMAC(密钥化散列信息认证代码)方式
这项技术不仅能够实现完整性校验,还能完成源认证的任务,例如:ip ospf message-digest-key 1 md5 cisco 命令,配置预共享密钥cisco,这种加上与共享密钥一起进行散列计算的技术叫做HMAC。
特点:
- 散列值长度固定
MD5:128bit
SHA1:160bit - 雪崩效应
- 不可逆
- 唯一性
加密算法
对称加密:DES,3DES,AES,RC4
非对称加密:RSA,DH(IPSEC 产生密钥资源的主要协议),ECC
对称加密算法
特点
对称秘钥算法:用相同的秘钥进行加减密。
加解密过程
加密:明文数据 -----共享秘钥加密 --------密文数据
解密:密文数据 -----共享秘钥解密 --------明文数据
对称加密算法优点
- 速度快
- 安全
- 紧凑
对称加密算法缺点
- 明文传输共享秘钥,容易出现中途劫持和窃听的问题。
- 秘钥数量是以参与者数量平方的速度增长。即指数增长 。
- 因为数量过多,所以管理和存储会有很大问题。
- 不支持数字签名和不可否认性。
- 适用做大数据加密。
常见对称算法
- DES,数据加密标准DES(Data Encryption Standard)它使用56位的密钥对一个64位的明文块进行加密。
- 3DES,3DES(Triple Data Encryption Standard),3DES是一种增强型的DES标准,它在需要保护的数据上使用3次DES,即使用三个不同的56位的DES密钥(共168位密钥)对明文进行加密。
- AES, 先进加密标准AES(Advanced Encryption Standard)
- AES被设计用来替代3DES,提供更快和更安全的加密功能。AES可以采用三种密钥:AES-128、AES-192和AES-256,其密钥长度分为128位、192位、256位。
随着密钥长度的提升,加密算法的保密及安全性要求越高,但计算速度也越慢。一般情况下128bit就可以充分满足安全需求。
非对称加密算法
特点
非对称秘钥算法,一对密钥,公钥和私钥。公钥加密,私钥解密。
用私钥加密,公钥解密叫做数字签名。
仅仅只用于密钥交换(加密密钥)和数字签名(加密散列)。
非对称加密算法的优点
- 安全
- 因为不必发送密钥给接受者,所以非对称密钥不必担心密钥被中途截获的问题。
- 密钥数目和参与者数目一样。
- 不需要事先在各参与者之间建立关系以交换密钥。
- 技术支持数字签名和不可否认性。
非对称加密算法的缺点
- 非常非常慢。
- 密文会很长。
- 适用于小数据加密。
常见非对称加密算法
- RSA, 512/768/1024/2048bit ro lager。
- DH,768,、102/1536bit or lager。只适用于虚拟专用网 。
IPSec解决方案
- 通过非对称加密算法加密(对称加密算法)的密钥
- 再用对称加密算法加密(实际要传输的数据)
封装协议
AH
- AH是一种基于IP的传输层协议,协议号为51。
- 只能支持认证 ,不支持数据加密 。
- 对整个头部进行认证。
其对IP头部进行认证,导致数据包不允许经过NAT
ESP(这个是比较常用的)
- 是一种基于IP的传输层协议,协议号为50。
- 其工作原理是在每一个数据包的标准IP报头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾(ESP Tail和ESP Auth data)。
- 与AH不同的是,ESP将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但ESP没有对IP头的内容进行保护。
AH | ESP验证 | ESP加密 |
---|---|---|
ah-md5-hmac ah-sha-hmac | esp-md5-hmac esp-sha-hmac | esp-null esp-des esp-3des esp-aes 128 esp-aes 192 esp-aes 256 |
封装模式
传输模式
传输模式在AH、ESP处理前后IP头部保持不变,主要用于End-to-End的应用场景。
- 保留原始IP头部
- 效率高
- 无法直接在互联网上面传输
隧道模式
实现站点到站点保护
隧道模式则在AH、ESP处理之后再封装了一个外网IP头,主要用于Site-to-Site的应用场景
- 保护原始IP头部
- 重写IP,可直接在互联网上传输
- 效率较低
密钥有效期
- cisco设备默认每一个小时就要更新一次密钥
- 加密的数据多,有效期就应该短
- 加密的数据越少,它的有效期就可以长
PFS是更新密钥的方式 - 默认不启用
- crypto map WORD 10 set pfs group2
IKE(互联网密钥交换协议)
特点
- 对建立的IPSec的双方进行认证(需要预先协商认证方式)
- 通过密钥交换,产生用于加密和HMAC的随机密钥
- 协商协议参数(加密算法、验证算法、封装协议、封装模式、密钥有效期)
- IKE协议是一个混合协议由三个部分组成:SKEME、Oakley、ISAKMP
两个阶段
第一阶段
通信各方彼此间建立了一个已通过身份验证和安全保护的通道,用于传输第二阶段的对称密钥,此阶段的交换生成了一个ISAKMP SA(也可称为IKE SA)
这个时候有两种模式
主模式(Main Mode)
MSG1 :发起方提供加密和验证算法
MSG2 :响应方回应接受的提案
MSG3 :发起方的DH公共值和随机数
MSG4 :响应方的DH公共值和随机数
MSG5 :发起方的签名,个人信息和密钥
MSG6 :响应方的签名,个人信息和密钥
主动(野蛮)模式
1.包发起方建议SA,发起DH交换。
2.包接收方接受SA。
3.包发起方认证接受方。
IPSec主模式和野蛮模式的区别包含如下几点:
- 交换的消息:主模式为6个,野蛮模式为3个。
- NAT支持:对预共享密钥认证:主模式不支持NAT转换,而野蛮模式支持。而对于证书方式认证:两种模式都能支持。
- 对等体标识:主模式只能采用IP地址方式标识对等体;而野蛮模式可以采用IP地址方式或者Name方式标识对等体。这是由于主模式在交换完3、4消息以后,需要使用预共享密钥来计算SKEYID,当一个设备有多个对等体时,必须查找到该对等体对应的预共享密钥,但是由于其对等体的ID信息在消息5、6中才会发送,此时主模式的设备只能使用消息3、4中的IP报文源地址来找到与其对应的预共享密钥;如果主模式采用Name方式,Name信息却包含在消息5、6中,而设备必须在消息5、6之前找到其对等体的预共享密钥,所以就造成了矛盾,无法完成Name方式的标识。
而在野蛮模式中,ID消息在消息1、2中就已经发送了,设备可以根据ID信息查找到对应的预共享密钥,从而计算SKEYID。但是由于野蛮模式交换的3个消息没有经过加密,所以ID信息也是明文的,也相应造成了安全隐患。 - 提议转换对数量:在野蛮模式中,由于第一个消息就需要交换DH消息,而DH消息本身就决定了采用哪个DH组,这样在提议转换对中就确定了使用哪个DH组,如果第一个消息中包含多个提议转换对,那么这多个转换对的DH组必须相同(和DH消息确定的DH组一致),否则消息1中只能携带和确定DH组相同的提议转换对。
- 协商能力:由于野蛮模式交换次数的限制,因此野蛮模式协商能力低于主模式。
- 在主动模式中数据包是在明文中进行交换的,不提供身份保护
配置主模式
Router(config)#crypto isakmp policy 10
Router(config-isakmp)#hash md5 //完整性校验算法为md5
Router(config-isakmp)#authentication pre-share //配置认证模式
Router(config-isakmp)#group 5 //DH组为5
Router(config-isakmp)#exit
Router(config)#crypto isakmp key 6 cisco address 10.0.25.5 //设置密码和对端地址
第二阶段
双方协商IPSec安全参数,称为变换集transform set ,建立一个供数据传输的安全通道 。 此阶段的交换生成了IPsec SA
Router(config)#crypto ipsec transform-set Trans esp-des esp-md5-hmac //配置第二阶段策略,命名为Trans esp(加密头部) 加密方式为des 完整性校验为md5定义封装模式
Router(cfg-crypto-trans)#mode tunnel //指定模式
抓取感兴趣流
Router(config)#ip access-list extended ipsecvpn
Router(config-ext-nacl)#permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255 //定义一个扩展的ACL
Router(config-ext-nacl)#crypto map mapcisco 10 ipsec-isakmp/ /定义一个map(名称等本地有效)
Router(config-crypto-map)#set transform-set Trans //关联第二阶段的策略
Router(config-crypto-map)#set peer 10.0.25.5 //指定对端地址
Router(config-crypto-map)#match address ipsecvpn //关联ACL
Router(config-crypto-map)#exit
Router(config)#interface e0/0
Router(config-if)#crypto map mapcisco //使用map
SA(安全关联)
协商完成后的结果就叫安全关联(SA)
SA一共有两种类型
- IKE SA
安全防护协议的细节 - IPSec SA
安全防护实际用户流量的细节
配置
从历史上来说存在两个版本的IKE分别是IKEv1和IKEv2,由于IKEv1已经没多少使用,这里下面的配置是IKEv2.
点对点配置
R1
Router(config)#crypto isakmp policy 10
Router(config-isakmp)#hash md5 //完整性校验算法为md5
Router(config-isakmp)#authentication pre-share //配置认证模式
Router(config-isakmp)#group 5 //DH组为5
Router(config-isakmp)#exit
Router(config)#crypto isakmp key 6 cisco address 10.0.25.5 //设置密码和对端地址
Router(config)#crypto ipsec transform-set Trans esp-des esp-md5-hmac //配置第二阶段策略,命名为Trans esp(加密头部) 加密方式为des 完整性校验为md5定义封装模式
Router(cfg-crypto-trans)#mode tunnel //指定模式
抓取感兴趣流
Router(config)#ip access-list extended ipsecvpn
Router(config-ext-nacl)#permit ip 1.1.1.0 0.0.0.255 2.2.2.0 0.0.0.255 //定义一个扩展的ACL
Router(config-ext-nacl)#crypto map mapcisco 10 ipsec-isakmp/ /定义一个map(名称等本地有效)
Router(config-crypto-map)#set transform-set Trans //关联第二阶段的策略
Router(config-crypto-map)#set peer 10.0.25.5 //指定对端地址
Router(config-crypto-map)#match address ipsecvpn //关联ACL
Router(config-crypto-map)#exit
Router(config)#interface e0/0
Router(config-if)#crypto map mapcisco //使用map
R2
Router(config)#crypto isakmp policy 10
Router(config-isakmp)#hash md5 //完整性校验算法为md5
Router(config-isakmp)#authentication pre-share //配置认证模式
Router(config-isakmp)#group 5 //DH组为5
Router(config-isakmp)#exit
Router(config)#crypto isakmp key 6 cisco address 10.1.21.1 //设置密码和对端地址
Router(config)#crypto ipsec transform-set Trans esp-des esp-md5-hmac //配置第二阶段策略,命名为Trans esp(加密头部) 加密方式为des 完整性校验为md5定义封装模式
Router(cfg-crypto-trans)#mode tunnel //指定模式
抓取感兴趣流
Router(config)#ip access-list extended ipsecvpn
Router(config-ext-nacl)#permit ip 2.2.2.0 0.0.0.255 1.1.1.0 0.0.0.255 //定义一个扩展的ACL
Router(config-ext-nacl)#crypto map mapcisco 10 ipsec-isakmp/ /定义一个map(名称等本地有效)
Router(config-crypto-map)#set transform-set Trans //关联第二阶段的策略
Router(config-crypto-map)#set peer 10.1.21.1 //指定对端地址
Router(config-crypto-map)#match address ipsecvpn //关联ACL
Router(config-crypto-map)#exit
Router(config)#interface e0/0
Router(config-if)#crypto map mapcisco //使用map
远程接入配置
R1
Router(config)#crypto isakmp policy 10
Router(config-isakmp)#hash md5 //完整性校验算法为md5
Router(config-isakmp)#authentication pre-share //配置认证模式
Router(config-isakmp)#group 5 //DH组为5
Router(config-isakmp)#exit
Router(config)#crypto isakmp key 6 cisco address 0.0.0.0 //这里什么对端是任意的地址
Router(config)#crypto ipsec transform-set Trans esp-des esp-md5-hmac
Router(cfg-crypto-trans)#mode tunnel //指定模式
Router(config)#crypto dynamic-map DMAP 10 //配置成动态map
Router(config-crypto-map)#set transform-set Trans //关联传输集
Router(config-ext-nacl)#crypto map MAP 10 ipsec-isakmp dynamic DMAP/ /因为创建动态map无法在接口下面调用,所以设置一个MAP映射DMAP 给接口调用
Router(config)#interface e0/0
Router(config-if)#crypto map MAP
远程接入
Router(config)#ip access-list extended ipsecvpn
Router(config-ext-nacl)#permit ip 2.2.2.0 0.0.0.255 1.1.1.0 0.0.0.255 //定义一个扩展的ACL
Router(config)#crypto isakmp policy 10
Router(config-isakmp)#hash md5 //完整性校验算法为md5
Router(config-isakmp)#authentication pre-share //配置认证模式
Router(config-isakmp)#group 5 //DH组为5
Router(config)#crypto isakmp key 6 cisco address 10.1.21.1
Router(config)#crypto ipsec transform-set Trans esp-des esp-md5-hmac
Router(cfg-crypto-trans)#mode tunnel
Router(config-ext-nacl)#crypto map mapcisco 10 ipsec-isakmp/ /定义一个map(名称等本地有效)
Router(config-crypto-map)#set transform-set Trans //关联第二阶段的策略
Router(config-crypto-map)#set peer 10.1.21.1 //指定对端地址
Router(config-crypto-map)#match address ipsecvpn //关联ACL
Router(config-crypto-map)#exit
Router(config)#interface e0/0
Router(config-if)#crypto map mapcisco //使用map
测试
查看配置的协商信息
Router#show crypto isakmp key
Keyring Hostname/Address Preshared Key
default 10.0.25.5 (encrypted)
查看协商的sa的IKE部分
Router#show crypto isakmp sa detail
Codes: C - IKE configuration mode, D - Dead Peer Detection
K - Keepalives, N - NAT-traversal
T - cTCP encapsulation, X - IKE Extended Authentication
psk - Preshared key, rsig - RSA signature
renc - RSA encryption
IPv4 Crypto ISAKMP SA
C-id Local Remote I-VRF Status Encr Hash Auth DH Lifetime Cap.
1001 10.0.25.5 10.1.21.1 ACTIVE des md5 psk 5 23:11:44
Engine-id:Conn-id = SW:1
IPv6 Crypto ISAKMP SA
查看协商的sa的IPSec部分
interface: Ethernet0/0
Crypto map tag: mapcisco, local addr 10.0.25.5
protected vrf: (none)
local ident (addr/mask/prot/port): (1.1.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (2.2.2.0/255.255.255.0/0/0)
current_peer 10.1.21.1 port 500
PERMIT, flags={origin_is_acl,}
#pkts encaps: 9, #pkts encrypt: 9, #pkts digest: 9
#pkts decaps: 9, #pkts decrypt: 9, #pkts verify: 9
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 0, #pkts compr. failed: 0
#pkts not decompressed: 0, #pkts decompress failed: 0
#send errors 0, #recv errors 0
local crypto endpt.: 10.0.25.5, remote crypto endpt.: 10.1.21.1
plaintext mtu 1446, path mtu 1500, ip mtu 1500, ip mtu idb Ethernet0/0
current outbound spi: 0x6870E09B(1752227995)
PFS (Y/N): N, DH group: none
inbound esp sas:
spi: 0x7E16D7F7(2115426295)
查看接口状态
Router#show crypto engine connections active
Crypto Engine Connections
ID Type Algorithm Encrypt Decrypt LastSeqN IP-Address
1 IPsec DES+MD5 0 9 9 10.0.25.5
2 IPsec DES+MD5 9 0 0 10.0.25.5
1001 IKE MD5+DES 0 0 0 10.0.25.5