IPSec原理

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

Ah报文

ESP(这个是比较常用的)
  • 是一种基于IP的传输层协议,协议号为50。
  • 其工作原理是在每一个数据包的标准IP报头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾(ESP Tail和ESP Auth data)。
  • 与AH不同的是,ESP将数据中的有效载荷进行加密后再封装到数据包中,以保证数据的机密性,但ESP没有对IP头的内容进行保护。

ESP报文

AHESP验证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
    IKE协议

两个阶段

第一阶段

通信各方彼此间建立了一个已通过身份验证和安全保护的通道,用于传输第二阶段的对称密钥,此阶段的交换生成了一个ISAKMP SA(也可称为IKE SA)
这个时候有两种模式

主模式(Main Mode)

MSG1 :发起方提供加密和验证算法
MSG2 :响应方回应接受的提案
MSG3 :发起方的DH公共值和随机数
MSG4 :响应方的DH公共值和随机数
MSG5 :发起方的签名,个人信息和密钥
MSG6 :响应方的签名,个人信息和密钥

主动(野蛮)模式

1.包发起方建议SA,发起DH交换。
2.包接收方接受SA。
3.包发起方认证接受方。

IPSec主模式和野蛮模式的区别包含如下几点:

  1. 交换的消息:主模式为6个,野蛮模式为3个。
  2. NAT支持:对预共享密钥认证:主模式不支持NAT转换,而野蛮模式支持。而对于证书方式认证:两种模式都能支持。
  3. 对等体标识:主模式只能采用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信息也是明文的,也相应造成了安全隐患。
  4. 提议转换对数量:在野蛮模式中,由于第一个消息就需要交换DH消息,而DH消息本身就决定了采用哪个DH组,这样在提议转换对中就确定了使用哪个DH组,如果第一个消息中包含多个提议转换对,那么这多个转换对的DH组必须相同(和DH消息确定的DH组一致),否则消息1中只能携带和确定DH组相同的提议转换对。
  5. 协商能力:由于野蛮模式交换次数的限制,因此野蛮模式协商能力低于主模式。
  6. 在主动模式中数据包是在明文中进行交换的,不提供身份保护

配置主模式

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
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值