×

IPSec VPN原理与配置详解

hqy hqy 发表于2024-11-28 00:34:45 浏览42 评论0

抢沙发发表评论

mportant;">目录

一.TCP/IP 协议的缺点

二.IPsec诞生背景 

  IPsec可提供安全服务

三.IPsec协议簇

DH算法 

DH算法的基本原理涉及以下步骤:

 IPsec的两种工作模式

传输模式

隧道模式:

IPsec的安全协议  

AH 协议:鉴别头协议

AH提供的安全服务:

AH协议身份验证过程如下:

AH报文:

 传输模式AH封装范围

ESP协议:封装安全载荷协议 

 AH与ESP对比

 AH+ESP报文:

 四.IPsec建立过程 

安全参数索引

安全联盟SA

手工建立SA

动态建立SA

IKE协议产生背景

IKE协议用途


密钥交换管理协议 IKE 

主模式协商:

野蛮模式:

VPN黑洞

五.IPSec安全数据库

安全策略数据库SPD

安全关联数据库SAD 

六.IPSec-VPN的部署场景

网关部署

NAT下的VPN部署场景

NAT-T技术

五.IKE 配置

手工配置

一.TCP/IP 协议的缺点

  1. IP层不校验数据完整性:原始的IP协议(IPv4)不检查数据包的完整性。当数据包在网络中传输时,中间的路由器或交换机不会验证数据包的内容是否被篡改。这意味着,如果攻击者能够访问到网络中的数据流,他们就有可能篡改数据包的内容而不被发现。

  2. 缺乏端到端的校验:虽然TCP协议在其传输层提供了校验和机制来验证报文在传输过程中是否出现错误,但如果黑客修改了报文,并重新计算,填入校验和字段,则接收方无法判断报文是否被修改。

  3. 缺少数据加密:原始的TCP/IP协议不提供数据加密功能。这意味着,除非用户自己实现加密机制,否则在网络上传输的所有数据都是明文的,可以被任何能够访问网络的人读取。

二.IPsec诞生背景 

        IPSec(IP Security)是一组开放的网络安全协议,是对IP的安全性补充,其工作在IP层,为IP网络通信提供透明的安全服务。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合,这些协议和服务包括认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两个安全协议、密钥交换和用于验证及加密的一些算法等。

  IPsec可提供安全服务

1. 数据加密:IPsec协议使用加密技术对数据进行加密,确保数据在传输过程中的机密性。它提供了两种加密方式:ESP(Encapsulating Security Payload)和AH(Authentication Header)。ESP协议负责数据的加密,而AH协议则提供数据的完整性校验和源验证功能。通过这些加密技术,IPsec可以保护TCP/IP协议簇中传输的数据,防止数据被窃取或篡改。
2. 认证机制:IPsec协议提供了认证机制,用于验证数据的完整性和来源。AH协议通过在每个数据包中添加一个认证头来实现这一功能。认证头包含了用于验证数据完整性的哈希值和用于验证数据来源的公钥或预共享密钥。通过验证认证头,接收方可以确保接收到的数据是完整且来自可信的发送方。
3. 防止重放攻击:IPsec协议通过使用序列号和时间戳来防止重放攻击。每个IPsec数据包都包含一个唯一的序列号,接收方可以检查序列号的连续性来识别重放的数据包。此外,时间戳也可以用来验证数据包的时效性,确保数据包不是在过去某个时间截取的。
4. 访问控制:IPsec协议支持访问控制功能,可以根据策略规则来允许或拒绝特定的通信连接。通过配置IPsec策略,可以实现基于源IP地址、目标IP地址、端口号等条件的访问控制,增强网络的安全性。

三.IPsec协议

DH算法 

DH算法的基本原理涉及以下步骤:
  1. Alice和Bob首先同意使用一个大的质数p和它的原根g。这两个数是公开的,不需要保密。

  2. Alice选择一个私有的随机数x,并计算X = | g^x | /P (图中=8)。她将X发送给Bob。

  3. Bob选择一个私有的随机数y,并计算Y = | g^y | / p (图中=4 )他将Y发送给Alice。

  4. Alice计算共享密钥Z = |Y^x | /p(图中=9),而Bob计算共享密钥S = |X^y |/p(图中=9)。

假设,图中需要传输的内容为X=8 ,Y=4 以及公开数 g p;以上为黑客能够知道的所有信息,即使黑客知道共享密钥的算法如:Z = |Y^x | /p  如果黑客不知道x则无法算出共享密钥,而x未经过传输是私有数,因此黑客无法获知共享密钥。

 IPsec的两种工作模式

注:不同的工作模式代表不同的数据包封装方式

传输模式

  •  封装方式:不改变原有的IP头部,在原始IP包头包头后面插入IPsec包用于将原来的数据封装成被保护的数据(网络层+传输层+应用层数据)。

  • 应用场景:用于私网内部主机与主机之间通信

  • 原因:若数据包被黑客截获由于原始IP包头包含私网主机IP地址且未被加密,黑客极有可能篡改IP报文冒充客户端向服务器发送信息。

隧道模式:

  •  封装方式:在原始IP包人前插入一个IPsec包头,原始IP包头作为载荷的一部风受到IPSec保护。

  • 应用场景:经常用于私网与私网之间跨越公网通信,建立安全的 VPN通道。

  • 原因:与传输模式不同,隧道模式添加的新IP包头仅包含公网IP不包含私网IP,尽管被黑客截获,黑客也无法冒充客户端向服务器发送信息。

IPsec的安全协议  
AH 协议:鉴别头协议

AH(Authentication Header)协议是一种为IP数据包提供数据完整性验证和数据源身份认证的安全协议。协议号:51

AH提供的安全服务:
  1. 数据源验证:AH协议通过验证数据包的完整性和身份来确保数据来自可信的源。它使用公钥加密或预共享密钥来对数据包进行加密和签名,以验证发送方的身份和数据包的完整性。

  2. 数据完整性校验:AH协议使用哈希算法(如MD5或SHA-1)来计算数据包的哈希值,并将该哈希值附加在数据包的AH头认证数据字段中。接收方在接收到数据包后,使用相同的哈希算法重新计算哈希值,并与数据包中的哈希值进行比较,以验证数据包的完整性。

  3. 防报文重放:AH协议通过序列号和时间戳等机制来防止重放攻击。每个AH数据包都包含一个唯一的序列号,接收方可以检查序列号的连续性来识别重放的数据包。此外,时间戳也可以用来验证数据包的时效性,确保数据包不是在过去某个时间截取的。

AH协议身份验证过程如下:
  1. 发送方生成一个身份验证值,使用共享密钥和AH头部中的其他字段进行计算。

  2. 发送方将生成的身份验证值填充到AH头部的身份验证数据字段中。

  3. 发送方将AH头部添加到待发送的IP包中,并将IP包发送给接收方。

  4. 接收方使用相同的共享密钥和接收到的IP包中的AH头部字段计算一个身份验证值。

  5. 接收方将计算得到的身份验证值与接收到的IP包中的AH头部中的身份验证数据字段进行比较。

  6. 如果两者相等,则验证成功,否则验证失败。

AH报文:

Next Header:指定AH头后面的协议头类型,例如ESP、TCP或UDP等。
Payload Length:表示AH头后面的数据负载长度(不包括AH头本身)。
Reserved:保留字段,通常为0。
Security Parameters Index (SPI):安全参数索引,用于标识通信双方需要协商的安全参数。
                                 如:工作模式类型;协议类型
Sequence Number:序列号,用于防止重放攻击和数据包的乱序到达。
Authentication Data:认证数据,包含了用于验证数据完整性和身份的哈希值。
 传输模式AH封装范围

 隧道模式下AH封装范围:

ESP协议:封装安全载荷协议 

         ESP(Encapsulating Security Payload)协议是IPsec协议族中的一个重要组件,主要用于为IP数据包提供加密、数据源认证、数据完整性校验和防报文重放等功能。与AH协议不同,ESP协议主要关注数据的机密性,通过加密技术来保护数据的内容不被泄露。协议号:50

ESP提供的安全服务:


  1. 数据机密性保护:ESP协议使用对称加密算法(如DES、3DES、AES等)对IP数据包的内容进行加密,确保数据在传输过程中不被未授权访问。加密后的数据以密文形式传输,只有拥有正确密钥的接收方才能解密并获取原始数据。这提供了数据的机密性保护,防止了数据的泄露和非法获取。

  2. 数据源认证:ESP协议还提供了数据源认证功能,用于验证数据包的来源。这通过使用公钥加密或预共享密钥来生成认证标签(通常是哈希值)实现。发送方在生成ESP报文时,会将认证标签附加在ESP尾中。接收方收到报文后,会使用相同的密钥和算法重新计算认证标签,并与报文中的标签进行比较。如果两者一致,则说明数据包来自可信的发送方,没有被篡改。

  3. 数据完整性校验:ESP协议使用哈希算法(如MD5或SHA-1)来计算数据包的哈希值,并将其附加在ESP尾中。这个哈希值用于校验数据包的完整性,确保数据在传输过程中没有被篡改。接收方在收到数据包后,会使用相同的哈希算法重新计算哈希值,并与报文中的哈希值进行比较。如果哈希值一致,则说明数据包的内容没有被篡改,保持了数据的完整性。

  4. 防报文重放:ESP协议通过序列号机制来防止报文的重放攻击。每个ESP数据包都包含一个唯一的序列号,接收方可以检查序列号的连续性来识别重放的数据包。这种机制确保了每个数据包都是新鲜的,没有被重复发送,从而防止了重放攻击。

注意:ESP尾部主要目的是进行数据的填充。因为数据进行加密主要使用的对称加密算 法,而其中分组加密需要针对固定长度的分组进行加密,如果最后分组的长度不足, 则需要填充。满足加密的条件。还有就是下一头部因为包含数据信息,所以,也放在 尾部进行保护,因为负载部分和尾部部分是会进行加密的。

 ESP在传输模式下封装:

ESP在隧道模式下封装:

 AH与ESP对比

 AH+ESP报文:

传输模式:

 隧道模式:

 四.IPsec建立过程 

安全参数索引

SPI的主要作用是在IPSec通信中唯一地标识一个特定的安全联盟(Security Association,SA)。

具体来说,SPI与IP目的地址和安全协议号三者结合起来,共同构成三元组,以唯一标识一个特定的安全联盟。这个三元组确保接收系统能够对收到的数据包选择正确的SA进行处理。

每个SA在建立时都会分配一个唯一的SPI值,这个值在通信过程中保持不变。当发送方使用ESP协议对数据包进行加密时,它会将SPI值放入ESP头部。接收方在收到加密的数据包后,会根据ESP头部中的SPI值选择正确的SA进行解密。这样,即使在网络中存在多个并行的SA,接收方也能够准确地识别出每个数据包应该使用哪个SA进行解密。

此外,SPI值还在IKE(Internet Key Exchange)协议中用于协商和建立SA。当使用IKE协商产生安全联盟时,SPI值会随机生成,以确保其唯一性。

安全联盟SA

        IPsec SA(Security Association,安全关联)在IPsec协议中起到了至关重要的作用。它是两个IPSec通信实体之间经过协商建立起来的一种共同协定,规定了通信双方使用哪种IPSec协议保护数据安全、应用的算法标识、加密和验证的密钥取值以及密钥的生存周期等安全属性值。

SA特点:

1. 安全联盟SA是IPSec提供安全服务数据流的一个单向逻辑关系。因为SA是单向的,所以对于双向通信,需要两个SA。SA是通信对等方之间对某些要素的一种协定,这些要素包括使用何种安全协议、需要保护的数据流特征、传输的数据的封装模式、协议采用的加密和验证算法,以及用于数据安全转换、传输的密钥和SA的生存周期等。

2. 在IPSec对等体(即运行IPSec协议的两个端点)之间成功建立安全联盟后,IPSec可以对传输的数据进行加密和/或完整性验证,以确保数据的安全性。每个SA都由一个三元组来唯一标识,这个三元组包括安全参数索引(SPI)、目的IP地址和使用的安全协议号(如AH或ESP)

手工建立SA

 

动态建立SA
IKE协议产生背景
  • IPsec保护数据包的前提是建立安全联盟(SA)

  • 手工配置繁琐且易错

IKE协议用途
  • IKE用于动态地建立和管理IPsec SA

  • 负责进行密钥交换和协商,以生成用于IPsec加密和认证的密钥

密钥交换管理协议 IKE 
  • 阶段一:使用DH算法获得能够加密通信双方建立SA过程中需要协商参数的密钥并建立IKE SA(双向通道)用于双方身份认证。点击此处了解DH算法

  • 阶段二:基于已建立的安全通道来协商IPsec SA的安全参数

 阶段一:协商过程

  • 主模式协商:
  • IP地址作为身份标识

第一次交换:

  • Ci/Cr:进程标识 

  • SAi/SAr:协议带IKE SA五元组:DH密钥的加密算法,哈希算法,身份认证方式(预共享密钥/数字证书),DH组类别,SA存活期

第二次交换(消息3和消息4):DH密钥交换

  • 1:NI,Nr--- 代表的是随机数

  • 2:X,Y --- DH算法中需要公开的参数

第三次交换(消息5和6):对等体验证

ISAKMP/IKE阶段1主要任务就是认证,第三阶段即在安全的环境下进行认证,前面两个步骤四个数据包的传输都是为了第三阶段第5和第6个数据包交换的认证做铺垫。第1-2包交换为认证准备好策略(例如:认证策略、加密策略和散列函数等),第3-4包交换为保护5-6的安全算法提供密钥资源

野蛮模式:

阶段二: 

基于已经建立的安全通道,来协商建立IPSEC SA的安全参数,完成后,则标 志着IPSEC SA的建立。---快速模式(Quickmode)---UDP 500

需要协商的安全参数:

  • 加密算法---正式传输数据时使用的加密算法(加密算法协商完成后,会计算密钥

  • 第一阶段计算出来的推导密钥会加入到该密钥的计算中)

  • HASH算法--- 正式传输数据时进行完整性校验的算法

  • 安全协议---AH/ESP 封装模式---传输模式/隧道模式 存活时间 

VPN黑洞

隧道建立之后,如果其中一段的设备异常重启,另一端还在有效期内,则他发 送的数据将有去无回,就形成了VPN黑洞。 解决方法---DPD死亡对等体检测。 类似于心跳检测机制---采用空闲计时器原理---两边同时开启一个固定时间的计时 器,期间数据值直接发过去,如果计时器超时,则数据发送前,先发送一个DPD检测 报文,如果收到对方的DPD应答报文,则将重置计时器。如果没有收到,并且,连续 5次都没有收到,则将拆掉安全通道

五.IPSec安全数据库

安全策略数据库SPD

        IPSec中的安全策略数据库(Security Policy Database,SPD)的作用是存储和管理与IPSec相关的安全策略信息。SPD中包含了一系列规则,用于定义如何对特定的网络流量进行加密、认证和访问控制。

        SPD用于指定哪些流量需要被保护,哪些流量需要被拒绝,以及如何对这些流量进行处理。通过配置SPD,管理员可以定义允许或禁止特定的IP地址、协议、端口等相关信息,以确保网络流量的安全性。

具体来说,SPD的作用包括:

1. IP选择:SPD可以定义哪些IP地址或地址范围可以被接受或拒绝。

2. 安全协议选择:SPD可以指定所使用的加密和认证协议,如ESP(Encapsulating Security Payload)和AH(Authentication Header),以保护IPSec通信。

3. 安全服务选择:SPD可以定义要应用的安全服务,如加密、认证和完整性保护。

4. 流量筛选:SPD可以基于源IP地址、目标IP地址、协议类型、端口号等参数对网络流量进行筛选和匹配。

5. 流量处理:SPD可以定义对匹配规则的流量的处理方式,如允许通过、拒绝、加密、解密等。

安全关联数据库SAD 

在IPSec协议中,安全关联数据库(SAD)存放了与IPSec安全通信相关的关键信息。这些信息对于确保通信的安全性和完整性至关重要。以下是SAD中存放的主要信息:

1. 安全关联(SA)条目:每一个安全关联在SAD中都有唯一的记录。这些记录包括SPI(安全参数索引)、目的IP地址和安全协议等标识信息,用于定位特定的安全关联。

2. 密钥信息:这是SAD中最关键的信息之一,包括用于加密和解密的密钥,以及用于完整性验证的密钥。这些密钥是在通信双方建立安全关联时协商确定的,用于保障数据的机密性和完整性。

3. 算法信息:SAD存储了当前安全关联所使用的加密算法和完整性校验算法。这些算法的选择对于通信的安全级别和性能有重要影响。

4. 包序列号:为了防止重放攻击,IPSec使用包序列号来确保每个数据包都是新鲜且未被篡改的。SAD中存储了每个安全关联的当前包序列号,以便在接收数据包时进行验证。

5. 安全关联的生命周期:这包括安全关联的开始时间和结束时间,以及可能的软/硬限制(如数据包数量或字节数限制)。当安全关联达到其生命周期的终点或超过限制时,它将被视为无效,需要进行重新协商或更新

六.IPSec-VPN的部署场景

网关部署

        VPN设备安置在内网和公网的边界位置,这种方式最为简单,就是数据来到出口后,判 断是否需要走VPN隧道,匹配上的流量则通过VPN隧道安全的传输到对端私网中。(两边 的私网网段需要区分开,否则将导致地址冲突) 网关部署的问题:不太安全,因为边界设备将承载很多攻击行为,而VPN设备只是保证 业务数据安全的设备。

解决方案:

  • 1,使用防火墙在边界充当VPN设备(但是,一台设备需要承担太多的功能,可能 导致性能不足) 分区20240121防御保护寒假班 的第4 页

  • 2,VPN设备下沉到内网中---VPN的单臂部署(NAT下的VPN部署场景)

NAT下的VPN部署场景

  •  问题一:

        企业一般会采用NAPT的方式来进行NAT转换,而 在IKE协商中,源目端口号必须是UDP 500,否则可能导致协商失败。所 以,在NAPT的环境下由于端口号的改变会导致协商失败。

解决方案:NAT -T技术   

  • 问题二:   

        IKE协议的第一阶段将主机IP作为身份认证的标识,而NAT技术或将数据包的源IP和目标IP改为公网IP,这样会导致身份认证失败

解决方案:使用野蛮模式

  • 问题三:

        NAT转换会将IP地址改变,这将导致AH协议使用哈希算法进行完整性校验时与数据包中的身份标识不一致导致身份认证失败。

解决方案:使用ESP协议

  • 问题四:

        四层封装的时候,里面存在伪头部校验。所谓伪头部就是传输层的协议 在进行封装的时候,也需要进行完整性校验,但是,这个完整性校验的 时候,还需要包含三层IP头部中的部分数据一起进行校验。这些数据 中,就包含了IP地址的信息。在正常的NAT中环境,数据进行NAT转换 (转换IP地址或者端口号)数据包中传输层的伪头部校验也会重新计算,但是,在ESP选择传输模式的封装下,传输层的内容已加密了,所以,NAT转换后也无法修改校验和,所以,导致对方在 接受的时候,会出现校验和不匹配的问题,导致通信中断。所以,ESP 在传输模式也时无法通过NAT环境了。

        一方面:ESP的加密范围仅包括(原始IP包头)而不包括隧道模式下新添加的IP包头;第二方面,无论从加密范围或认证范围都不包含新IP包头,因此,NAT技术将新IP包头转换后对完整性验证也无任何影响。 

NAT-T技术

        NAT-T(Network Address Translation - Traversal)是一种用于在网络中传输IPsec流量的技术。在传统的IPsec网络中,IPSec协议中 IKE协商阶段一严格要求使用UDP500端口,而NAPT的端口号是随机值,这使得IPsec流量无法通过执行网络地址转换(NAT)的设备

        协议阶段结束后,原始数据包的TCP协议中携带的端口号被加密,导致NAPT技术无法转换端口号,因此NAT-T技术可以为ESP协议增加一个新的UDP头部,用于更改端口号。

作用:

  • NAT-T技术运用在IPSec协议中,在IKE协商阶段允许源端口为非500

  • NAT-T协议为ESP协议增加了新的UDP头部,从而解决数据传输过程中经过防火墙后无法进行端口复用的问题

五.IKE 配置

手工配置

步骤一:定义需要保护的兴趣流

[r1]acl 3000
[r1-acl-adv-3000]rule permit ip source 192.168.1.0 0.0.0.255 
destination 192.168.2.0 0.0.0.255

 步骤二:配置IKE安全提议

[r1]ike proposal 1
#定义加密算法
[r1-ike-proposal-1]encryption-algorithm aes-cbc-128
#定义完整性校验算法
[r1-ike-proposal-1]authentication-algorithm md5 
#定义身份认证方式
[r1-ike-proposal-1]authentication-method pre-share
#定义DH算法的组别
[r1-ike-proposal-1]dh group2
#定义SA老化时间
[r1-ike-proposal-1]sa duration 86400

 步骤三:配置IKE对等体

#创建ike对等体并声明版本
[r1]ike peer aa v1
#关联ikean安全协议
[r1-ike-peer-aa]ike-proposal 1
#选择阶段一模式
[r1-ike-peer-aa]exchange-mode main
aggressive  Aggressive mode   野蛮
  main        Main mode       主
#定义预共享密钥的值 双方必须一致
[r1-ike-peer-aa]pre-shared-key cipher 123456
#配置对等体的身份标识
[r1-ike-peer-aa]remote-address 23.0.0.2

步骤四:配置IPSec对等体 :

#定义IPSec安全提议名称
[r1-ipsec-proposal-aa]
#定义安全提议
[r1-ipsec-proposal-aa]transform esp
#定义数据加密算法
[r1-ipsec-proposal-aa]esp encryption-algorithm aes-128
#定义数据完整性校验算法
[r1-ipsec-proposal-aa]esp authentication-algorithm md5
#选择传输模式
[r1-ipsec-proposal-aa]encapsulation-mode tunnel

步骤五:创建IPSec安全策略:

#定义安全策略名称和编号并选择手工模式或IKE模式
[r1]ipsec policy bb 1 isakmp
#关联ACL列表
[r1-ipsec-policy-isakmp-bb-1]security acl 3000
#关联IKE对等体
[r1-ipsec-policy-isakmp-bb-1]ike-peer aa
#关联IPSec安全提议
[r1-ipsec-policy-isakmp-bb-1]proposal aa

步骤六:接口调用IPSec安全组 :

[r1-GigabitEthernet0/0/1]ipsec policy bb

步骤七:配置R3 即R2对等体

#ACL 列表
[r3-acl-adv-3000]rule permit ip source 192.168.2.0 0.0.0.255 destination 192.168
.1.0 0.0.0.255
 
#IKE 安全提议
[r3]ike proposal 1
[r3-ike-proposal-1]encryption-algorithm aes-cbc-128
[r3-ike-proposal-1]authentication-algorithm md5
[r3-ike-proposal-1]authentication-method pre-share 
[r3-ike-proposal-1]dh group2
[r3-ike-proposal-1]sa duration 86400
 
#IKE 对等体
[r3]ike peer bb v1
[r3-ike-peer-bb]ike-proposal 1
[r3-ike-peer-bb]exchange-mode main
[r3-ike-peer-bb]pre-shared-key cipher 123456
[r3-ike-peer-bb]remote-address 12.0.0.1
 
#配置IPSec安全提议
[r3]ipsec proposal aa
[r3-ipsec-proposal-aa]transform esp
[r3-ipsec-proposal-aa]esp encryption-algorithm aes-128
[r3-ipsec-proposal-aa]esp authentication-algorithm md5
[r3-ipsec-proposal-aa]encapsulation-mode tunnel 
 
#配置IPSec安全策略
[r3]ipsec policy bb 1 isakmp 
[r3-ipsec-policy-isakmp-bb-1]security acl 3000
[r3-ipsec-policy-isakmp-bb-1]ike-peer bb
[r3-ipsec-policy-isakmp-bb-1]proposal aa
 
#接口调用
[r3-GigabitEthernet0/0/0]ipsec policy bb

步骤八:查看IKE SA 以及 IPSec SA建立情况

注:需要配置IPSec的安全协议以及放通IKE协议+ESP/AH协议流量的安全策略,并自定义允许访问的服务IKE,如下图

在防火墙上,NAT是上游配置,而IPSEC隧道是下游配置。所以,NAT的转换会导致 数据流量无法进入到IPSEC的隧道中。解决方案:不做NAT转换


打赏

本文链接:https://www.kinber.cn/post/3957.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客