[学习笔记] - IPsec

传统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
2
3
|IP头|VPN头|数据|VPN尾|

|IP头|数据|

因为没有新增IP头,所以不能直接用于公网,使用场景一般为一下2种

  • 一般通过结合其他VPN使用(GRE)
  • 在大的内网里进行部署

隧道模式

  • IP包头被保护

简化传输流程

1
2
3
|新IP头|VPN头|IP头|数据|VPN尾|

|IP头|数据|

保护了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
2
3
4
5
6
R1(config)#  crypto isakmp policy 1
R1(config-isakmp)# encr 3des
R1(config-isakmp)# hash md5
R1(config-isakmp)# authentication pre-share
R1(config-isakmp)# group 2
R1(config-isakmp)# lifetime 86400
  • 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
2
R1(config)# ip access-list extended VPN-TRAFFIC
R1(config-ext-nacl)# permit ip 10.10.10.0 0.0.0.255 20.20.20.0 0.0.0.255
  • Create IPSec Transform
1
R1(config)# crypto ipsec transform-set TS esp-3des esp-md5-hmac
  • Create Crypto Map
1
2
3
4
R1(config)# crypto map CMAP 10 ipsec-isakmp
R1(config-crypto-map)# set peer 1.1.1.2
R1(config-crypto-map)# set transform-set TS
R1(config-crypto-map)# match address VPN-TRAFFIC
  • Apply crypto map to the public interface
1
2
R1(config)# interface FastEthernet0/1
R1(config- if)# crypto map CMAP

阶段二是为了创建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头

参考