IPSec

“Internet 协议安全性 (IPSec)”是一种开放标准的框架结构,通过使用加密的安全服务以确保在 Internet 协议 (IP) 网络上进行保密而安全的通讯。 它通过端对端的安全性来提供主动的保护以防止专用网络来自 Internet 的攻击。在通信中,只有发送方和接收方才是唯一必须了解 IPSec 保护的计算机。

IPSec 提供的服务

  1. 数据机密性

    • IPSec 发送方在通过网络传输包前对包进行加密
  2. 数据完整性

    • IPSec 接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改
  3. 数据来源认证

    • IPSec 在接收端可以认证发送IPSec 报文的发送端是否合法
  4. 放重放攻击

    • IPSec 接收方可以检测并拒绝过时或重复的报文

IPSec 优点

  1. 支持 IKE ,可以实现密钥的自动协商功能,减少密钥协商的开销。通过IKE建立和维护SA的服务

  2. 所有使用IP协议进行传输的应用系统和服务都可以使用IPSec,而不用对其进行任何修改

  3. 对数据包加密是已数据包为单位,而不是以整个数据流为单位,灵活且高安全性

IPSec 协议实现

IPsec协议不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构,包括网络认证协议AH(Authentication Header,认证头)、ESP(Encapsulating Security Payload,封装安全载荷)、IKE(Internet Key Exchange,因特网密钥交换)和用于网络认证及加密的一些算法等。其中,AH协议和ESP协议用于提供安全服务,IKE协议用于密钥交换。

IPsec协议中的AH协议定义了认证的应用方法,提供数据源认证和完整性保证;ESP协议定义了加密和可选认证的应用方法,提供数据可靠性保证。

  • ESP协议(IP协议号为50)提供加密、数据源认证、数据完整性校验和防报文重放功能。ESP的工作原理是在每一个数据包的标准IP包头后面添加一个ESP报文头,并在数据包后面追加一个ESP尾。与AH协议不同的是,ESP将需要保护的用户数据进行加密后再封装到IP包中,以保证数据的机密性。常见的加密算法有DES、3DES、AES等。同时,作为可选项,用户可以选择MD5、SHA-1算法保证报文的完整性和真实性。

  • AH协议(IP协议号为51)提供数据源认证、数据完整性校验和防报文重放功能,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。AH的工作原理是在每一个数据包上添加一个身份验证报文头,此报文头插在标准IP包头后面,对数据提供完整性保护,AH 认为源目IP 是不会变化的,因此在校验数据包时会将源目IP一起参与计算,因此无法穿越NAT。可选择的认证算法有MD5(Message Digest)、SHA-1(Secure Hash Algorithm)等。

在实际进行IP通信时,可以根据实际安全需求同时使用这两种协议或选择使用其中的一种。AH和ESP都可以提供认证服务,不过,AH提供的认证服务要强于ESP。同时使用AH和ESP时,设备支持的AH和ESP联合使用的方式为:先对报文进行ESP封装,再对报文进行AH封装,封装之后的报文从内到外依次是原始IP报文、ESP头、AH头和外部IP头。

安全联盟SA

SA是IPsec的基础,也是IPsec的本质。SA是通信对等体间对某些要素的约定,例如,使用哪种协议(AH、ESP还是两者结合使用)、协议的封装模式(传输模式和隧道模式)、加密算法(DES、3DES和AES)、特定流中保护数据的共享密钥以及密钥的生存周期等。建立SA的方式有手工配置和IKE自动协商两种。
SA是单向的,在两个对等体之间的双向通信,最少需要两个SA来分别对两个方向的数据流进行安全保护。同时,如果两个对等体希望同时使用AH和ESP来进行安全通信,则每个对等体都会针对每一种协议来构建一个独立的SA。

  • IKE SA

    • 双向

    • 决定了IKE协议处理相关细节

    • 默认有效期为一天

  • IPSec

    • 单向

    • 与封装协议相关

    • 决定了具体加密流量的处理方式

    • 默认有效期为一小时

安全策略数据库 SPD

  1. 用于存放IPSec_VPN的策略

    1. 源、目IP地址

    2. 源、目端口号

    3. 封装协议

    4. 工作模式

  2. 执行行为

    1. 旁路,数据包与策略不匹配,直接按路由表转发

    2. IPSec 加密,数据包与策略匹配,加密转发

    3. 丢弃,反向crypto-map详解

安全关联数据库SADB

  1. SPI
  2. 封装协议
    1. 加密算法
    2. 完整性算法
  3. 工作模式

认证算法

认证算法的实现主要是通过杂凑函数。杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。IPsec对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。IPsec使用两种认证算法

  • MD5:MD5通过输入任意长度的消息,产生128bit的消息摘要。

  • SHA-1:SHA-1通过输入长度小于2的64次方bit的消息,产生160bit的消息摘要。

加密算法

加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。目前设备的IPsec实现三种加密算法:

  • DES(Data Encryption Standard):使用56bit的密钥对一个64bit的明文块进行加密。

  • 3DES(Triple DES):使用三个56bit的DES密钥(共168bit密钥)对明文进行加密。

  • AES(Advanced Encryption Standard):使用128bit、192bit或256bit密钥长度的AES算法对明文进行加密。

安全协议

  • AH(Authentication Header) 协议。

    • 它用来向 IP通信提供数据完整性和身份验证,同时可以提供抗重播服务,IP协议号51。

    • 在 IPv6 中协议采用 AH 后, 因为在主机端设置了一个基于算法独立交换的秘密钥匙, 非法潜入的现象可得到有效防止, 秘密钥匙由客户和服务商共同设置。在传送每个数据包时,IPv6 认证根据这个秘密钥匙和数据包产生一个检验项。在数据接收端重新运行该检验项并进行比较,从而保证了对数据包来源的确认以及数据包不被非法修改。

    • 非红框部分,AH认为其内容在数据传输过程中不会发生改变,做了哈希验证IPSec - 图1

image.png

  • 下一报头字段指出AH报头后面是什么内容
    • 在传输模式下,这是上层协议的编号(TCP/UDP)
    • 在隧道模式下,这个值为4
  • 有效负载长度字段指出AH报头的长度
  • 保留字段未被使用
  • SPI和序列号与ESP中相同
  • AH将计算对整个分组计算验证数据
    • AH将排出以下内容,因为下面内容将在传输中发生变化
      • 服务类型(ToS)、标记、分段偏移、存活时间、报头校验和

image.png

  • ESP(Encapsulated Security Payload) 协议。

    • 提供私密性、数据完整性、源认证、防重放,IP协议号50。

image.png

image.png

image.png
IPSec - 图7
image.png

  • SPI 安全参数索引是一个32位的值,它与前面IP报头中的目标地址和协议一期指出了用于处理分组的安全关联SA。
  • SPI是目标对等体在INternet密钥交换协商期间随意选择的一个数字。类似索引号,可用在安全关联数据库(SADB)中查找SA。
  • 序列号是由发送方插入到ESP报头中的,它是一个唯一单调递增的数字。序列号和滑动窗口一期提供防重放攻击服务。这种机制是ESP和AH通用的。
  • 被保护的数据位于有效负载数据字段中。用来对有效负载进行加密的算法可能需要一个初始化向量(IV),它也放在有效负载数据字段中,对IV进行验证但不进行加密。
  • ESP报头中的填充字段用于增加ESP报头的位数,填充的位数取决于使用加密算法。填充长度指出了填充的字节数,以便解密使能够恢复原始数据。
  • “下一报头”指出了有效负载中的数据类型。
  • ESP报头中的验证摘要用于验证数据的完整性,因为验证总是在加密后进行的,所以收到数据包后应该先检查数据有效性,再解密数据包。

IPSec - 图9

IPSec 工作模式

隧道(tunnel)模式
在隧道模式下,原始IP分组被封装成一个新的IP数据报,并在内部报头和外部报头之间插入一个新的IPSec报头(HA/ESP)。由于这种新的封装包含一个新的外部IP报头,因此隧道模式可以被用于在站点之间提高安全服务,站点代表了网管路由器后面的IP节点。另外这种模式也可以用于远程办公人员通过终端主机连接到站点中的IPSec网关。
IPSec - 图10
IPSec - 图11
传输(transport)模式
在这种模式中,IP报头与原始IP分组中IP报头相同,只是IP协议字段被改为ESP(50)或AH(51),并重新计算IP报头的校验和。这种情况下IPSec假定IP端点是可达的。在这种模式下,IPSec源端点不会修改IP报头中的目标地址。因此这种模式只能用于IP端点和IPSec端点相同的情况。
从IPSec VPN的角度看,这种模式需要保护的是两台主机之间的流量,如果在VPN网关之间使用GRE IP隧道,仍可以使用IPSec 隧道模式。
IPSec - 图12
image.png
传输模式的另一种局限性是不能同时对IPSec 对IPSec对等体之间的分组进行NAT转换。并且对于大多数硬件加密引擎来说,在传输模式下加密的效率比在隧道模式下低,因为传输模式要求移动IP报头,为ESP或AH报头腾出空间。

IPSec 工作原理

IPsec虚拟隧道接口对报文的加封装/解封装发生在隧道接口上。用户流量到达实施IPsec配置的设备后,需要IPsec处理的报文会被转发到IPsec虚拟隧道接口上进行加封装/解封装。
IPSec - 图14

  1. Router将从入接口接收到的IP明文送到转发模块进行处理;

  2. 转发模块依据路由查询结果,将IP明文发送到IPsec虚拟隧道接口进行加封装:原始IP报文被封装在一个新的IP报文中,新IP头中的源地址和目的地址分别为隧道接口的源地址和目的地址。

  3. IPsec虚拟隧道接口完成对IP明文的加封装处理后,将IP密文送到转发模块进行处理;

  4. 转发模块进行第二次路由查询后,将IP密文通过隧道接口的实际物理接口转发出去。

IPsec虚拟隧道接口对报文进行解封装的过程如下:
IPSec - 图15

  1. Router将从入接口接收到的IP密文送到转发模块进行处理;

  2. 转发模块识别到此IP密文的目的地为本设备的隧道接口地址且IP协议号为AH或ESP时,会将IP密文送到相应的IPsec虚拟隧道接口进行解封装:将IP密文的外层IP头去掉,对内层IP报文进行解密处理。

  3. IPsec虚拟隧道接口完成对IP密文的解封装处理之后,将IP明文重新送回转发模块处理;

  4. 转发模块进行第二次路由查询后,将IP明文从隧道的实际物理接口转发出去。

从上面描述的加封装/解封装过程可见,IPsec虚拟隧道接口将报文的IPsec处理过程区分为两个阶段:“加密前”和“加密后”。需要应用到加密前的明文上的业务(例如NAT、QoS),可以应用到隧道接口上;需要应用到加密后的密文上的业务,则可以应用到隧道接口对应的物理接口上。

IKE

IKE为IPsec提供了自动协商交换密钥、建立SA的服务,能够简化IPsec的使用和管理,大大简化IPsec的配置和维护工作。 IKE不是在网络上直接传输密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥,并且即使第三者截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。

IKEv1

  • 主模式

    • 该模式阶段一有六个包,三次交互来完成阶段一的协商

    • 思科设备默认模式

  • 主动模式

    • 该模式阶段一有三个包,三次交互来完成阶段一的协商

    • 安全性低于主模式,协商特性少于主模式,不提供对等体认证

    • 不推荐

IKE 安全机制

IKE具有一套自保护机制,可以在不安全的网络上安全地认证身份、分发密钥、建立IPsec SA。

  1. 数据认证

    • 身份认证:确认通信双方的身份。支持两种认证方法:预共享密钥(pre-shared-key)认证和基于PKI的数字签名(rsa-signature)认证。

    • 身份保护:身份数据在密钥产生之后加密传送,实现了对身份数据的保护。

  2. DH

    • DH(Diffie-Hellman,交换及密钥分发)算法是一种公共密钥算法。通信双方在不传输密钥的情况下通过交换一些数据,计算出共享的密钥。即使第三者(如黑客)截获了双方用于计算密钥的所有交换数据,由于其复杂度很高,不足以计算出真正的密钥。所以,DH交换技术可以保证双方能够安全地获得公有信息。
  3. PFS

    1. PFS(Perfect Forward Secrecy,完善的前向安全性)特性是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。对于IPsec,是通过在IKE阶段2协商中增加一次密钥交换来实现的。PFS特性是由DH算法保障的。

IKE 交换过程

IKEv1 6+3 / 3+3

IPSec - 图16
6个包的主模式,统一封装到UDP 500号端口

  • 前两个包用于协商管理连接策略

    • 发起方发送自己的所有策略

      • 加密算法

      • 散列算法

      • DH组选择

      • 验证方法

      • 生存时间

    • 应答方基于SAr字段回复所挑选的协商结果

    • 数据包为明问发送

IPSec - 图17
IPSec - 图18

  • 用于DH协商加密密钥

    • 交换完成后产生一条双向的IKE安全关联

    • 数据包为明问交互

IPSec - 图19
IPSec - 图20

  • 对等体验证

    • 从第五个包开始,传输将被执行加密和完整性校验

    • 通过后,即可进入下一阶段协商

IPSec - 图21
IPSec - 图22

快速模式

  • 工作在UDP500号端口

  • 由第一阶段协商的策略进行保护

  • 协商完成后生成两条IPSec安全关联

  • 协商数据传输保护的策略

IPSec - 图23
IPSec - 图24

  • 确认隧道建立,开始加密传输

IPSec - 图25

  • 数据传输报文

IPSec - 图26

抓包分析

ikev1.zip

IKEv1 IOS and ASA

IPSec - 图27
原本以为ASA与IOS建立VPN和IOS互相建立邻居结果相同,但是通过抓包发现一些问题:

  • 双方会通过Information 交互信息,类似于IKEv2

  • 当一方清理掉安全关联后,另一方也会收到通知,迅速清理掉安全关联

IPSec - 图28
IPSec - 图29
IPSec - 图30

IKEv2

简介

  • 思科统一称为“FLEX_VPN”,名字为思科私有,技术为公有标准

  • 不兼容IKEv1

  • 运行在UDP500/UDP4500端口

  • 提供私密性、完整性、源认证服务

  • 优势

    • 统一的命令行

    • 统一的架构

      • 都使用点对点隧道接口
    • 统一的特性

      • 多种特性可以直接部署使用,如3A
    • 可以实现多厂商兼容

IKEv1 IKEv2 区别

  • IKEv1 第一阶段有主模式和主动模式

  • IKEv2 第一阶段为初始包交互(initial_Exchange)

  • IKEv1 第二阶段为快速模式

  • IKEv2 第二阶段为创建子SA(Create_child_SA)

  • IKEv1 无法抵御DOS攻击

  • IKEv2 可以抵御DOS攻击

  • IKEv1 SA 有效期为1小时,1小时后需要生成新的key,创建新的SA

  • IKEv2 无上述机制

  • IKEv2 有确认机制,IKEv1 没有确认机制

IPSec - 图31

IKEv2 抓包分析

初始包交互

IPSec - 图32
IPSec - 图33

创建子SA

IPSec - 图34
IPSec - 图35

ikev2.zip

VPN与ASA出现的问题

  • 默认情况下ASA有自己的访问策略

  • 建立VPN后,所有策略都将被放行

  • 是由于下面命令放行了VPN流量

  • 可以no 掉该命令通过继续ACL放行

IPSec - 图36

配置参考

image.png
IPSec Ikev1

  • Cisco IPSec 配置步骤
    1. 首先解决路由问题(双方加密点需要能够互通,通讯点也需要有对方的路由(不需要通,路由正确即可))

IOS 下 Ikev1 配置

第一阶段配置

crypto isakmp policy 10 encr aes (加密算法 默认为DES) hash sha512 (完整性校验的散列算法使用SHA512 默认为SHA-1) authentication pre-share (认证方式为预共享密钥,默认为数字签名方式)

  1. group 2 (DH交换使用GROUP21024位)

crypto isakmp key 6 cisco address 30.1.1.10 (6 为加密密钥,0为未加密密钥,俩端除ip地址外都应该相同)

ip access-list extended vpn (感兴趣流,用于抓流量)

  1. permit ip host 1.1.1.1 host 2.2.2.2

第二阶段配置

crypto ipsec transform-set Trans esp-3des esp-md5-hmac (设置转换集)

  1. mode tunnel

crypto map cry-map 10 ipsec-isakmp (设置crypto map 关联已有ACL,transform,peer)

  1. set peer 30.1.1.2
  2. set transform-set Trans
  3. match address vpn

interface Ethernet0/0 (接口下调用crypto map)

  1. crypto map cry-map

ASAv 下 IKev1 配置

第一阶段配置

crypto ikev1 enable Outside (基于接口激活ISAKMP)

crypto ikev1 policy 10 (策略配置)

  1. authentication pre-share
  2. encryption 3des
  3. hash md5
  4. group 5

tunnel-group 10.1.1.1 type ipsec-l2l (配置对端IP 类型L2L)

tunnel-group 10.1.1.1 ipsec-attributes (配置加密方式及预共享密钥)

  1. ikev1 pre-shared-key *****

access-list vpn extended permit ip host 2.2.2.2 host 1.1.1.1 (抓去感兴趣流)

crypto ipsec ikev1 transform-set Trans esp-3des esp-md5-hmac (抓取感兴趣流)

crypto map cry-map 10 match address vpn (配置Crypto map)

crypto map cry-map 10 set peer 10.1.1.1

crypto map cry-map 10 set ikev1 transform-set Trans

crypto map cry-map interface Outside (接口下调用)

IPSec 相关show 命令:

IOS:

show crypto engine connections active

show crypto isakmp sa

show crypto ipsec sa

ASA:

show crypto isakmp sa detail

IPSec 清理安全关联命令:

IOS:

clear crypto isakmp

clear crypto sa

ASA:

clear crypto ikev1 sa

IPSec Ikev2

  • IPSec Cisco 配置步骤
    1. 首先解决路由问题(双方加密点需要能够互通,通讯点也需要有对方的路由(不需要通,路由正确即可)

      IOS 下 Ikev2 配置

第一阶段策略配置

crypto ikev2 proposal Outside (配置策略)

  1. encryption 3des
  2. integrity md5
  3. group 5
  4. crypto ikev2 policy Outside-policy
  5. proposal Outside

crypto ikev2 keyring Outside-key (配置第一阶段对端IP以及密钥)

peer ASAv

address 10.1.1.2

pre-shared-key cisco

第二阶段策略配置

crypto ikev2 profile pro (配置Profile)

  1. match identity remote address 10.1.1.2 255.255.255.255
  2. identity local address 10.1.1.1
  3. authentication remote pre-share
  4. authentication local pre-share
  5. keyring local Outside-key

ip access-list extended vpn (抓取感兴趣流量)

  1. permit ip host 1.1.1.1 host 2.2.2.2

crypto ipsec transform-set Trans esp-3des esp-md5-hmac (配置转换集)

  1. mode tunnel

crypto map cry-map 10 ipsec-isakmp (配置crypto map 调用已有策略)

  1. set peer 10.1.1.2
  2. set transform-set Trans
  3. set ikev2-profile pro (调用Profile)
  4. match address vpn

interface Ethernet0/0 (接口调用)

  1. crypto map cry-map

ASA 下 Ikev2 配置

第一阶段配置

crypto ikev2 enable Outside (基于接口开启 ikev2 )

crypto ikev2 policy 10 (配置第一阶段策略)

  1. encryption 3des
  2. integrity md5
  3. group
  4. prf md5
  5. lifetime seconds 86400

tunnel-group 10.1.1.1 type ipsec-l2l (配置IPsec第一阶段类型)

tunnel-group 10.1.1.1 ipsec-attributes (配置IPsec第一阶段属性)

  1. ikev2 remote-authentication pre-shared-key *****
  2. ikev2 local-authentication pre-shared-key *****

第二阶段配置

access-list vpn ex tended permit ip host 2.2.2.2 host 1.1.1.1 (抓取感兴趣流量)

crypto ipsec ikev2 ipsec-proposal Proposal (相当于第一阶段转换集)

  1. protocol esp encryption 3des
  2. protocol esp integrity md5

crypto map cry-map 10 match address vpn (crypto map 关联策略并调用)

crypto map cry-map 10 set peer 10.1.1.1

crypto map cry-map 10 set ikev2 ipsec-proposal Proposal

crypto map cry-map interface Outside