问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

IPSec VPN技术分析

创作时间:
作者:
@小白创作中心

IPSec VPN技术分析

引用
CSDN
1.
https://blog.csdn.net/weixin_41943385/article/details/144130746

IPSec VPN(虚拟专用网络)是一种基于IPSec协议的安全通信技术,广泛应用于企业网络、远程办公等场景。本文将详细介绍IPSec VPN的核心概念、协议簇安全框架、通信保护协议、工作模式、密钥交换管理协议、安全联盟SA的建立过程,以及实际配置和高级设置等内容。

IPSec 概要

传统的安全技术(如HTTPS)以及无线安全技术(如WEP/WPA),往往采用固定的加密和散列函数。当这些固定的加密算法或散列函数存在重大漏洞时,依赖于这些加密算法或散列函数的技术也会被淘汰。

IPSec提供了一个框架式架构,每次对接使用到的加密算法、散列函数、封装协议、密钥等等都是通过协商决定,当某个加密算法出现问题时,可以及时切换。

IPSec 协议簇安全框架

几个概念:

  • IPSec对等体:建立起的隧道的两端。
  • 安全联盟:可以简单理解为VPN隧道,建立起来SA就是建立起来隧道。
  • 预共享密钥PSK:类似于一种通信暗号。

IPSec通信保护协议

IPSec的安全特性是由安全协议提供的,使用这些安全特性时需要用到密钥,由IKE协议簇提供。IPSec VPN通信安全协议包括AH协议和ESP协议。

ESP通信保护协议

ESP(Encapsulation Security Payload封装安全负载)它的对象是用户数据。对用户数据进行封装,提供数据保密性、数据完整性、数据源认证等服务,使用IP协议号是50,可用于隧道模式和传输模式。

序列号的作用是防止重放,当有相同序列号重放到达时,舍弃该数据。

SPI的作用用于寻找密钥。

认证数据用于存放数据的hash散列值。分为ESP头和ESP尾,其中尾部又分为ESP tail 和 认证数据,tail主要是填充字段部分,因为某些加密算法有加密数据固定长度或最小长度的要求。

AH通信保护协议

AH(Authentication Header认证头)它的对象是业务数据。对业务数据进行封装,使用MD5/SHA-1,只提供数据完整性、数据源认证和防报文重放等服务,不对数据加密,使用IP协议号是51,可用于隧道模式和传输模式。

IPSec通过AH和ESP这两个安全协议来实现数据报文在网络上传输时的私有性、完整性、真实性和防重放。

IPSec 两种工作模式

即封装模式,标识数据包进入隧道的模式。分为传输模式和隧道模式。

传输模式

在传输模式下,IPSec头被插入到IP头之后但在所有传输层协议之前,或所有其它IPSec协议之前。

传输模式示意图:

传输模式一般用在隧道是自己直接使用的,不能传入局域网IP,例如防火墙间通信等,本身就能ping通,用IPSec的原因只是想要引入IPSec一系列安全保护功能。

隧道模式

在隧道模式下,IPSec头插在原始IP头之前,另外生成一个新的报文头放到AH或ESP之前。

隧道模式示意图:

认证范围是指根据多长数据计算散列值存在协议尾部认证数据字段处。

这里的ESP Tail就是上文所说的填充字段,保证数据能够满足加密长度要求被正确加密。

由于AH协议的认证范围是全部,当穿过NAT时,会对New IP Header做地址转换,这使得到对端后,hash比对不同。因此AH加密协议的数据不同穿过NAT。ESP由于认证范围不包括New IP Header,因此不存在这种问题。

由此可以看出,AH协议既不能加密,又不能穿越NAT,目前使用较少。

隧道模式从端到端,传输模式从点到点。二者的区别在于会不会引入新的IP头,并且隧道模式由于创建新封装的原因,会稍微多消耗一些带宽。

IPSec 密钥交换管理协议(IKE)

IKE(Internet Key Exchange)它的对象是密钥。为IPSec提供了自动协商密钥、建立安全联盟。通过数据交换来计算密钥。包括Skeme协议、Oakley协议和Isakmp协议。

SKEME协议

主要功能为计算密钥。内部封装了DH算法,可通过DH算法创建独一无二的密钥。

Oakley协议

内部封装了各种加密算法和散列算法技术。

ISAKMP协议

实现消息交换(密钥交换)。

IPSec 安全联盟SA

用IPSec保护一个数据包之前,必须先建立一个安全联盟SA,可以手工创建或动态建立。

安全联盟是要建立IPSec隧道的通信双方对隧道参数的约定,包括隧道两端的IP地址,隧道采用的验证方式(AH还是ESP)、验证算法、验证密钥、加密算法、加密密钥、共享密钥以及生存周期等一些列的参数,从而决定了保护什么、如何保护以及谁来保护。IPSec对等体之间通过IPSec安全传输数据的前提是在对等体之间成功建立SA。

安全联盟是单向的,两个对等体之间的双向通信,至少需要两个SA。

SA由三元组来唯一标识,包括:安全参数索引号(SPI用来唯一标识SA,一个32bit数值)、目的IP地址、安全协议号(AH-51,ESP-50)。

建立SA的方式:

手工方式:SA所需的全部信息都必须手工配置,比较复杂,适合对等体较少或小型静态环境。

IKE动态协商方式:只需要对等体间配置好IKE协商参数,由IKE自动协商来创建和维护SA。

两种建立SA方式的对比示意图:

IKE建立在Internet安全联盟和密钥管理协议ISAKMP定义的框架上,是基于UDP的应用层协议。它为IPSec提供自动协商密钥、建立IPSec安全联盟的服务,能够简化IPSec的配置和维护工作,根本目的是建立起隧道,即IPSec SA。简单说,就是建立隧道之前,需要协商一下隧道的参数是怎么样的。

分为IKEv1、IKEv2,后者比前者效率高。相对简单,适合中、大型的动态网络环境中。

IKEv1第一阶段

分为主模式和野蛮模式,目的是建立起IKE SA,作用是预先交换参数信息,对建立IPSec SA有保护作用。

主模式

主模式/PSK认证示意图:

IKE HEADER即IKE头部,包括发起者cookie和应答者cookie(相当于ID号的作用)。

包1和包2为协商参数的过程。ISAKMP SA PROPOSAL的作用为与对端协商,询问某加密算法、哈希算法、身份认证算法以及DH组(用来生成密钥,不同组密钥长度不同)是否可以。

包3和包4生成密钥和密钥交换的过程。对称加密通过DH算法生成密钥,用于在一个不安全的环境,生成安全的密钥。DH组数越高,位数越多,一般组数为2时,位数为1048位。

所以,3包和4号协商过程中的,DHKEY EXCHANGE表示的就是X和Y的交换过程。Ni和Nr可以看成一个时间戳随机数,起到对X和Y的加密的作用。

交换后,两边各自开始计算密钥。计算的密钥一般为四种:

种子密钥SKEYID:PRF(psk, Ni|Nr) PRF是一个伪随机功能的哈希函数。

SKEYID_d:PRF(SKEYID, g^ir|CKY-i|CKY-r) gir为前文提到的两端计算出来的Z。CKY-i/CKY-r是两端的cookie值。此密钥用于计算最终密钥的素材。

SKEYID_a:PRF(SKEYID, SKEYID_d|g^ir|CKY-i|CKY-r) 用于第二阶段哈希的密钥。

SKEYID_e:PRF(SKEYID, SKEYID_a|g^ir|CKY-i|CKY-r) 用于加密第一阶段第五、第六个包,以及第二阶段的三个包。

由此可以看出,3包4包阶段主要用于交换密钥素材,并且计算相应密钥。

包5和包6进行双方的身份验证。IDii/IDir在主模式下为双端IP地址。

HASH_I/HASH_R为双方用于身份验证的哈希值。

可用psk进行身份验证,表现为HASH_R + PSK = HASH_I。当此公式成立时,表示双端种子密钥相同,进而表示双端PSK相同,身份验证完毕,IKESA建立完成。

野蛮模式

野蛮模式把主模式的数据合到一起,分成三个报文发送出去,因此野蛮模式效率更高。但是主模式ID是加密的,野蛮模式ID是不加密的,主模式更加安全。主模式的ID只能是IP,野蛮模式ID类型支持IP、DN等,因此野蛮模式适用于动态IP场景。

第一个报文和第二个报文不加密,第三个报文加密。

野蛮模式ID支持放域名等其它信息,主模式通过IKE报文的网络层源IP来找参数,而野蛮模式是通过IKE报文的ID载荷来找参数的。数据过来后,本端根据网络层的源IP来匹配IKE peer参数中的remote-address地址,进而命中里面所有的策略。如果对端地址发生变化,本段找不到IKE peer,则无法完成协商,因此主模式不支持动态IP。当然也可以实现,将remote-address配置成any也可以实现动态IP。

IKEv1第二阶段

只有快速模式,在第一阶段提供的环境的基础之上,建立起IPSec SA,即IPSec通信隧道。

如果IPSec SA时交通载具时,IKESA为制作载具的车间,能使制作交通载具的过程被保护。IKESA是为IPSec SA服务的,为IPSec提供了自动协商密钥、建立IPSec SA的服务。

紧紧跟随第一阶段,第二阶段进入快速模式,第二阶段的工作流程:

HDR*表示后面的数据被加密。

HASH(1)表示对数据进行完整性校验,通过第一阶段计算出来的密钥进行哈希。

SA表示IPsec SA提议(内部包括:如何保护业务数据、数据封装模式、安全协议、加密算法、哈希算法等)。

KE可选:表示新增加一次DH交换。

IDi2|Idr2:表示感兴趣流,对哪些流量做加密,通过此方式匹配出来,匹配方式某些设备上需要互为镜像。

HASH(3)起到ACK应答的作用。

如此,IPSec SA建立完成,即表示IPSec隧道建立完成。

IPSec VPN实际配置

配置流程如图所示:

  1. 配置主机、网关和防火墙的接口IP,以及防火墙的安全区域。

  2. 配置公网的静态路由,是流量能通过。

ip route 1.1.1.1 32 2.2.2.254
  1. 配置IKE PROPOSAL,内容有加密算法、认证算法、认证方式(PSK)以及DH组。
ike proposal 1
dh group2
authentication-algorithm md5
authentication-method pre-share
integrity-algorithm hmac-sha2-256
prf hmac-sha2-256
  1. 配置IKE peer,包括ipsec版本、对端ip地址、交换模式(主模式、野蛮模式)、IKE PROPOSAL和预共享密钥。
ike peer fw1
undo version 2 # 默认是2,撤销即为1
pre-shared-key balabalabalaba
ike-proposal 1
remote-address 2.2.2.2 # 这里穿越NAT时有所不同
  1. 配置IPSEC PROPOSAL,包括封装模式、安全协议、ESP加密算法和ESP认证算法。
ipsec proposal 2
esp authentication-algorithm sha2-256
esp encryption-algorithm aes-256
  1. 配置感兴趣流ACL,指明哪些流量需要送入隧道。某些防火墙感兴趣流要互为镜像。原因是老版本IKE协商时不协商ACL,IDi2和IDr2是ACL的哈希值,不可逆,两边无法知道对端的感兴趣流,所以必须配置镜像。现在部分厂商讲IDi2和IDr2存入明文,解决此问题。
acl number 3000
rule 5 permit ip source 10.1.1.0 0.0.0.255 destination 192.168.1.0 0.0.0.255
  1. 配置IPSec 策略,调用感兴趣流、对等体和ipsec侧策略。
ipsec policy tech 5 isakmp
security acl 3000
ike-peer fw2
proposal 2
  1. 配置接口调用IPSec策略。注意接口是建隧道的接口,是公网接口不是私网接口。
interface ethernet 1/0/0
ipsec policy tech
  1. 引流路由。让凡是走防火墙去对端私网的流量,从1/0/0接口处走,不是其它接口,以查找IPSec策略,进而进行IPSec协商。接口模式配置下:
ip route-static 192.168.1.0 24 1.1.1.254

表示去往192.168.1.0的流量从1/0/0接口走,这里最好配置下一跳,原因有待查找。

高级设置

NAT-T

首先,AH协议数据不可能穿越NAT。

ESP协议数据也有可能在传输模式下穿越不了。由于穿越NAT后,IP头的源IP可能发生变化,到对端TCP的checksum值校验不过。传输层以下的数据可以正常穿到对端,例如ICMP。

ESP在隧道模式下,生成新的IP头,此时穿越NAT由于端口和IP都会发生变化,原始数据没有存放端口的头部,所以也不能穿越NAT。此时,在IKE协商阶段,会协商随单是否穿越NAT,根据结构选择开启NAT-T功能,原理是在IP头部后加一个UDP头部(端口号4500),用来表示改变后的端口。

此时,配置FW2的remote-address时,需要配置2.254,否则找不到IKE peer。1包2包开始协商是否穿越NAT,由于5包6包要匹配IP,所以FW2也需要特别指定FW1的IP。

remote-address 2.2.2.254
remote-addresss authentication-address 1.1.1.1

NAT-T功能是默认开启的。

完美向前保密PFS

上图为display IKE SA 时的信息。

IPSec对等体通信基于端口号为500的UDP协议进行,当然如果穿越NAT设备,IP和端口有可能发生变化。如果隧道穿越NAT设备,两端通信则是基于端口号为4500的UDP协议进行,4500是一个标志,用来区分是否穿越NAT设备以进行IPSec适配。

RD表示隧道成功建立,ST表示本设备就是隧道的发起者,A表示单机建立的隧道的意思。

Conn-ID 1表示IKE SA,2表示IPSec SA。

实际上内部建立了两条隧道,不同方向分别有一条隧道。两条隧道的SPI和密钥是不同的,出对入。

同网段下,新添加设备,更改ACL的情况下,重新建隧道不使用主模式,复用旧隧道。基于此情况,虽然是不同的IPSec SA,但是加密密钥都是由相同的_d密钥推算出来,一条隧道的泄漏容易导致另一条泄漏。KE值可以解决这个问题,让数据通信时额外再做一次DH计算,生成DH公开值,PFS用来选择DH额外计算的算法,称作完美向前保密。

刚开始建立时,一层一层查找,通过接口找策略(VPN的报文出去的时候不用看策略,因此不需要配置本地数据出去的策略),通过策略找感兴趣流、SA等等,进行协商。之后直接查找本地VPN,有的情况下看是否命中感兴趣流。

可以针对某些情况,做完全针对化部署,更加安全。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号