IPSec协议详解

作者:IT技术圈子 浏览量:209   发表于 2024-08-25 18:30 标签:

IPSec协议

1)IPSEC VPV其实是一种使用IPSEC技术所实现的一种VPN技术;

2)IPSEC-----其实本身是一种协议簇(一堆协议的集合),一个基于网络层,应用密码学的安全信息协议组。类似于我们所知的TCP/IP协议簇;

3)IPSEC协议簇是针对IPV6来设计的,在IPV6产品中IPSEC是强制使用的,保证其数据传输的安全性;但是,也可以在ipv4中使用,作为一个可选项。

4)IPSEC能够提供的安全服务:信息安全要素:机密性,完整性,可用性,可控性,不可否认性;

  • 机密性:对数据进行加密
  • 完整性:保证数据在传递过程中不会被篡改,防篡改;
  • 数据源鉴别:其实指的就是身份认证-------其中包含是谁发的,从哪里发送的,发送的人是不是我想对接的人;

身份认证主要有两种手段:

(1)预共享密钥-----PSK,相当于两边对了一个暗号,这个暗号需要事先确定好。

(2)证书------遵循PKI体系----相当于一个被公认的你的身份证

  • 不可否认性:数字签名。
  • 重传攻击保护:抗重放。---------IPSEC通过启用序列号的方法来进行防重放攻击,相当于启用了一次性的数字,不会再次生效。

例如:重传攻击:

   我们登录一个网站的时候我们需要输入用户名和密码然后加密发送给服务器,当服务器解密确认后才会允许登录。然而如果有一个黑客获取了我们用户名和密码加密后的数据包然后发送给服务器,当服务器解密后也会认为是一个正确的用户从而使黑客登录我们账户。

   防护方法:我们可以在该数据包中加入一个时间戳,规定只有在该时间戳内才有效,那么即使黑客拿到数据包过了该时间戳后也不生效。也可以在该数据包中加入一个序列号,当服务器接收到黑客发送的数据后发现有相同的序列号,那么服务器就不会允许该黑客登录。

  • 有限的流量保护:在IPSEC中可以抓取感兴趣流量,即可以设定那些流量需要进入到IPSEC通道(该通道并不是隧道,指的是要不要使用IPSEC对流量进行保护)中进行保密传输,那些不需要进入通道。

IPSec协议簇

1.安全协议

安全协议:包括两种工作模式和两个通信保护协议

工作模式:包括传输模式和隧道模式 -------------这里两种工作方式指的是不同的封装方式。

(1)传输模式:

传输模式是在IP包头和数据包头中间加了一个IPSEC包头,该IPSEC包头保护网络层及网络层以上的部分。在传输模式下,IPSEC其实干的就是对数据端进行保护(对数据进行加密,完整性校验),传输模式一般应用在私网中,主机与主机之间,不需要跨越公网。

       主要应用场景:经常用于主机和主机之间端到端通信的数据保护。因为没有创建隧道,所以,不能穿越公网,一般用于私网内部。

       封装方式 --- 不改变原有的IP包头,在原始的数据包头后面加入IPSEC的包头,将原来数据封装成为被保护的数据。主要针对IP层及以上的数据进行保护,具体的保护方法和范围需要由选用的安全协议来决定。

(2)隧道模式

       主要应用场景:因为可以跨公网创建隧道,所以经常用于私网和私网之间通过公网进行通信,建立安全的VPN隧道。

       封装方式:增加新的IP头部,之后是IPSEC的头部,再之后是原始的数据包封装。

通信保护协议    

两个通信保护协议:AH和ESP

AH协议

(1)AH:鉴别头协议-------------封装在网络层和传输层之间,协议号为51。

AH所对应的协议号是51。

ICMP协议号为1。

tcp协议号为6,UDP协议号为17。

       在IP头部中有一个协议字段,该协议字段标识的是上层使用的协议类型。那么在IPSEC的场景中,IP包头的上层是IPSEC包头,那么就可能表示为AH或者ESP。

       AH提供的安全服务: ​

1.数据完整性保障----------AH的主要工作就是保证数据的完整性的。

注意:AH协议无法提供加解密的服务。

2.数据源认证-----身份认证

3.抗重放攻击

AH包头:

1.安全参数索引--------SPI---------用来标识唯一的SA(安全联盟)的。----------IPSEC SA-------注意,这个SA也是分方向的,如果需要构建这个安全通道需要构建两条方向相反的SA才可以。

不同的SA通道需要通过SPI进行标识,相当于SA的一个ID号

安全联盟:安全联盟其实相当于IPSEC当中用于参数协商最终所建立的会话关系

2.认证数据:就是将IP paylod中的数据进行hash,会生成一个摘要值,该摘要值就放在认证数据中。通过这个来进行完整性校验

AH的保护范围:

1):在传输模式中:

2):在隧道模式中:

注意1:AH在进行完整性校验时,因为会包含IP头部,而IP头部中的部分数据比如TTL,TOS这些参数在传递的过程中会发生变化,所以AH在进行校验时将不包含这些参数。

注意2:因为AH在进行完整性校验时包含有IP地址信息,但是NAT技术会修改IP地址信息,所以AH协议无法通过NAT环境,否则将导致校验失败

ESP协议

ESP------------封装安全载荷协议;------------封装在网络层和传输层之间,协议号为50。

ESP可以提供的安全服务:

1.数据完整性保障

2.数据源认证-----身份认证

3.抗重放攻击

4.ESP可以提供数据的加解密服务;并且加解密是可选的。

esp包头:

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

ESP的保护范围:

加密范围:除了IP头部内容和ESP头部的内容外,剩余所有网络层以上的数据都会进行加密。

认证范围:不包含最外层的IP头部,但是包含ESP头部。

ESP传输模式时的保护范围:

ESP隧道模式时的保护范围:

AH和ESP的对比:

AH与ESP结合使用

AH可以与ESP进行混合使用。

(1):在传输模式下AH与ESP的混合使用:

(2):在隧道模式下AH与ESP的混合使用:

结论:只要有AH协议参与的封装都无法通过NAT环境。

2.IKE

IPSEC SA------安全联盟:其实就是用来进行IPSEC的参数协商的,需要建立会话协商参数才能建立ipsec通道,类似于TCP协议建立会话协商参数的过程。

SA是分方向的,如果需要构建这个安全通道,需要建立两条方向相反的SA才行。

构建SA的方式:

(1):手工建立SA

注意:当手工建立好SA后,这条SA是永久生效的

手工建立SA的流程:

配置ipsec安全协议:

(1)transform-------表示选择传输的时候使用什么协议来封装(AH/ESP协议)

(2)esp authentication-algorithm ------表示当使用esp时,esp使用什么算法对数据进行加密。

(3)esp authtication alqorithm-------表示当使用ESP协议封装时,用什么来进行完整性校验。

(4)ah authtication alqorithm-------表示当使用AH协议封装时,用什么来进行完整性校验。

(5)encapsulation-mode---------表示使用什么封装模式(传输模式/隧道模式)

配置手工方式的IPsec安全策略:

(1)tunnel local---------本端的隧道地址;

(2)tunnel remote ------对端的隧道地址;

(3)sa spi inbound 与 sa spi outbound-------------用来唯一标识SA,有出方向和入方向两条。

(4)sa string-key inbound 与 sa string-key outbound:定义预共享密钥。

(2):  动态建立SA

       IKE--------互联网密钥交换协议--------主要用来完成IPSEC中需要的密钥相关参数的协商工作。-----其实就是可以实现动态建立ipsec sa的方法。

IKE有两个版本:IKE V1,IKE V2;

注意:IKE并不是一个协议,而是多个协议的集合,可以理解为一个协议簇。

IKE由3个协议组成:-----SKEM,OAKLEY,ISAKMP。

SKEM, OAKLEY----------可以将这两部分理解为IKE的资源库,在整个协商过程中可能会使用到的算法信息和密钥相关的东西等在这两个协议里面存储,提供一些资源帮助。

ISAKMP---------IKE协议的本体----主要用来完成IPSEC中需要的密钥相关参数的协商工作。可以动态建立ipsec sa。

ISAKMP(internet sa key manage protocols)--------互联网安全联盟密钥管理协议---------是一个应用层协议,基于UDP协议,端口号为500。并且要求源和目标端口都必须是500。(否则将无法建立ipsec)

注意:我们协商安全参数的最终目的就是为了加密数据,然而直接传递安全参数也是不安全的,所以我们还需要对安全参数进行加密,对此就分为了两个阶段。

IKE的两个阶段:

第一阶段

阶段1:协商加密安全参数的参数,主要通过DH算法来进行协商,让两端获得一个共同的密钥。以及进行身份认证。身份认证是建立安全通道的前提。-------IKE sa/ ISAKMP sa--------这个sa是双向逻辑的,不区分源和目标。

第一阶段要干的事情:

阶段一有两种模式:主模式和野蛮模式;

主模式:---------主模式默认使用IP地址作为身份标识。------主模式需要通过6个数据包进行交互,安全性更高。

第一二个数据包:SA信息的交换,这里指的是IKE SA;-------因为我们后面要进行DH密钥交换算共用的密钥来对后面安全参数进行加密。但是在进行DH计算的时候还是需要一些参数,所以我们需要将这些参数进行协商。

Ci,Cr ------一个cookie值--------这个参数每个数据包中都会携带,在IKEV2中变成了SPI,这里的Ci/Cr作用类似。其实就是一个身份的标识。

SA-------安全参数----里面携带的是需要协商的安全参数----里面主要协商5个安全参数,可以理解为“五元组”。

   “五元组”里面包括:加密算法,hash算法,身份认证(这里的身份认证是决定身份认证的方式,使用PSK或者证书),DH组,SA存活期。

   列如:

   加密算法,哈希算法,身份认证,DH组, SA存活期

    AES        MD5        PSK       DH2   84600S(默认值)

   SA存活期:现在是通过IKE来建立SA会话,最终的目的是建立ipsec    sa;通过IKE动态建立出来的    ipsec sa是有时间限制的。默认时间为1天(84600s)。

   注意:手工建立的SA,一经建立则永久生效;但是IKE建立的SA需要配置生存周期,周期时间到了之后将重新建立SA。SA两端的SA存活期不要求完全相同,如果时间不同,则按照小的来执行。

   第二个回包主要确认安全参数,如果安全参数都可以对上则将继续完成后面的协商。如果参数没有对上,则将回复一个负载拒绝报文,结束IKE SA的建立。

       第三四个数据包:进行DH密钥交换------交换的密钥一定是一个对称密钥。

Ni,Nr--------代表的是随机数;

X,Y------代表DH算法中需要公开的参数;

这里,为了加强安全性,DH算法会生成四种密钥:

种子密钥-------------剩余三种密钥都需要加入种子密钥运算得出,并且,种子密钥中计算时会携带预共享密钥。

       注意:在身份认证时,我们选择PSK(预共享密钥)那么在这种模式下,种子密钥在计算时就会将预共享密钥计算出来。也就是说种子密钥里面包含预共享密钥的信息。

SKEYID_e ------ 加密密钥------g^ir(代表的就是DH算法中计算出来的Z),CKY-i/CKY-r(代表前面双方携带的cookie值) -------------该密钥用于第一个阶段5,6数据包和第二阶段数据包加密使用。

SKEYID_a -------- 验证密钥------用于第二阶段hash时使用的密钥 ----这个叫HMAC算法(结合密钥的HASH算法),安全性比不加入密钥的HASH算法更高。

SKEYID_d -----推导密钥----用于计算最终密钥(最终加密数据的密钥)的素材,现在不使用,放到第二阶段计算最终密钥使用。

       第五六个数据包:----进行身份认证------使用计算出来的密钥进行加密传输。保证安全性。

ID------身份信息-------在主模式下,默认使用IP地址作为身份信息。

hash--------针对之前的SA信息再进行HASH运算,比对结果。这里的HASH运算会加入验证密钥一起进行,更加安全。

PSK与身份标识:    

   在主模式中默认使用ip地址作为身份标识,且不能更改。因为它不光作为身份标识来使用的,它还要作为预共享密钥(PSK)的识别标志。

   当本台设备需要与其他设备建立ipsec或者其他时需要使用预共享密钥,预共享密钥放在本台设备的数据库里面。数据库中不能只存预共享密钥,还需要存预共享密钥对应的通信建立的对象的身份标识。在数据库中预共享密钥和身份标识有一个对应关系。

注意:在主模式中很难应对nat环境或者ip地址会发生变化的环境,因为如果ip地址发生变化之后,预共享密钥与身份标识无法对应。那么将无法成功建立ipsec。

野蛮模式:-------------可以自定义身份标识,速度快,只需要三个数据包就可以完成协商,但是安全性低。

注意:在野蛮模式中可以自定义身份标识(ID),主要因为身份信息不需要加密并且前两数据包都无法加密,所以野蛮模式安全性低。仅仅第三个数据包会进行加密。但是,野蛮模式适用于NAT环境以及IP地址不固定的环境。

两种模式的对比:

       阶段2:---基于已经建立的安全通道来协商IPSEC SA的安全参数(使用通过DH算法协商的共同密钥把加密数据用的安全参数传递过去。)完成后,标志着IPSEC SA的建立。

------快速模式,使用UDP,端口号500。

第二阶段双方协商的安全参数:

       加密算法-------正式传输数据时使用的加密算法(加密算法协商完成后,会计算密钥,第一阶段计算出来的推导密钥会加入到该密钥的计算中。)

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

       安全协议-------AH/ESP

       封装模式-------传输模式/隧道模式

       存活时间

PFS ---密钥完美向前保密---正常工作中,第二阶段的最终密钥是通过第一阶段的推导密钥计算出来的,但是,这样做不安全,推导密钥泄露可能导致最终密钥泄露。所以,可以开启这个PFS技术(注意:要开启需要两端设备都开启才行),之后,则将在第二阶段重新进行一次DH交换,计算最终的密钥。从而提高安全性。

注意:IEK    SA是双向逻辑的,意味着两端只需要构建一条SA;

    IPSEC    SAS是单向逻辑的,类似与TCP,意味着要构建两条SA;

数据传输阶段:

       VPN黑洞---隧道建立之后,如果其中一段的设备异常重启,另一端还在有效期内,则他发送的数据将有去无回,就形成了VPN黑洞。

       解决方法---DPD死亡对等体检测。类似于心跳检测机制---采用空闲计时器原理---两边同时开启一个固定时间的计时器,期间数据值直接发过去,如果计时器超时,则数据发送前,先发送一个DPD检测报文,如果收到对方的DPD应答报文,则将重置计时器。如果没有收到,并且,连续5次都没有收到,则将拆掉安全通道。

ipsec实验配置(IKE)

(1)IKE的配置流程:

配置IKE安全协议:

encryption-algorithm:配置加密算法

authentication-method:选择身份认证方式(PSK/证书)

authentication-algorithm:选择认证算法(数据完整性校验)

配置IKE对等体:

undo version 2:选择IKE的版本

exchange-mode:选择模式(主动模式/野蛮模式)

authentication-methon:之前选择的身份认证方式为预共享密钥,那么这里放的是具体的预共享密钥

配置ipsec安全提议:

transform-------表示选择传输的时候使用什么协议来封装(AH/ESP协议)

encapsulation-mode---------表示使用什么封装模式(传输模式/隧道模式)

实验图:

yyy

AR1与AR3为两公司的边界,不使用nat技术,使用ipsec技术使两公司可以相互访问:

(1):抓取该兴趣流量:这里的ACL必须使用高级acl,不能使用acl 2000。因为调用时,不能调用低级acl。

[r1]acl 3000            ----高级acl
[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            ----抓取流量

(2):配置IKE安全提议:

[r1]ike proposal ?
  INTEGER<1-99>  IKE proposal number
[r1]ike proposal 1        ------创建一个编号为1的IKE提议,到时候直接调用即可
[r1-ike-proposal-1]encryption-algorithm ?
  3des-cbc     168 bits 3DES-CBC
  aes-cbc-128  Use AES-128
  aes-cbc-192  Use AES-192
  aes-cbc-256  Use AES-256
  des-cbc      56 bits DES-CBC
[r1-ike-proposal-1]encryption-algorithm aes-cbc-128    -----定义加密算法,如果不选默认选择des-cbc
[r1-ike-proposal-1]authentication-algorithm ?
  aes-xcbc-mac-96  Select aes-xcbc-mac-96 as the hash algorithm
  md5              Select MD5 as the hash algorithm
  sha1             Select SHA as the hash algorithm
  sm3              Select sm3 as the hash algorithm
[r1-ike-proposal-1]authentication-algorithm md5  ---定义完整性校验的hash算法
[r1-ike-proposal-1]authentication-method ?
  digital-envelope  Select digital envelope  key as the authentication method
  pre-share         Select pre-shared key as the authentication method    预共享密钥
  rsa-signature     Select rsa-signature key as the authentication method
[r1-ike-proposal-1]authentication-method pre-share  ----定义身份认证方式---缺省方式为预共享密钥
[r1-ike-proposal-1]dh ?
  group1   768 bits Diffie-Hellman group
  group14  2048 bits Diffie-Hellman group
  group2   1024 bits Diffie-Hellman group
  group5   1536 bits Diffie-Hellman group
[r1-ike-proposal-1]dh group2            -----定义DH组,缺省DH组为1。
[r1-ike-proposal-1]sa duration ?
  INTEGER<60-604800>  Value of time(in seconds), default is 86400
[r1-ike-proposal-1]sa duration 86400    -----定义sa的存活周期(老化时间)----建议老化时间修改大于600秒。否则太短会持续建立会话消耗设备资源。

(3):配置IKE对等体:

[r1]ike peer?
  peer  Specify IKE peer
[r1]ike peer aa ?    ----选择IKE的版本
  v1    Only V1 SA's can be created
  v2    Only V2 SA's can be created
  <cr>  Please press ENTER to execute command 
[r1]ike peer aa v1   ------需要声明对等体的名称(自定义),第一次进入时需要写版本号。
[r1-ike-peer-aa]
[r1-ike-peer-aa]ike-proposal 1  ------关联IKE安全提议
[r1-ike-peer-aa]exchange-mode ?
  aggressive  Aggressive mode    野蛮模式
  main        Main mode      主模式
[r1-ike-peer-aa]exchange-mode main -----选择模式,这里缺省是主模式。
[r1-ike-peer-aa]pre-shared-key ?
  cipher  Pre-shared-key with cipher text  --选择预共享密钥在本地加密
  simple  Pre-shared-key with plain text   --选择预共享密钥在本地不加密
[r1-ike-peer-aa]pre-shared-key cipher 123456  ---定义预共享密钥的具体值,注意两边必须都一样。
[r1-ike-peer-aa]remote-address 23.0.0.2  ----这里23.0.0.2有3种意思:

    一:邻居对等体的建邻地址;

    二:参与查找预共享密钥;

    三:作为身份标识验证对端身份;

敲了这个之后在本设备的数据库中就会有一个预共享密钥的对应者:

123456(预共享密钥)----对应--- 23.0.0.2

(4):配置ipsec的安全提议:

[r1]ipsec proposal aa    --定义ipsec提议的名称
[r1-ipsec-proposal-aa]transform ?
  ah      AH protocol defined in RFC2402
  ah-esp  ESP protocol first, then AH protocol
  esp     ESP protocol defined in RFC2406
[r1-ipsec-proposal-aa]transform esp  ----定义安全协议,缺省为esp
[r1-ipsec-proposal-aa]esp encryption-algorithm ?
  3des     Use 3DES
  aes-128  Use AES-128
  aes-192  Use AES-192
  aes-256  Use AES-256
  des      Use DES
  sm1      Use SM1
  <cr>     Please press ENTER to execute command 
[r1-ipsec-proposal-aa]esp encryption-algorithm aes-128    ---定义数据加密算法
[r1-ipsec-proposal-aa]esp authentication-algorithm ?
  md5       Use HMAC-MD5-96 algorithm
  sha1      Use HMAC-SHA1-96 algorithm
  sha2-256  Use SHA2-256 algorithm
  sha2-384  Use SHA2-384 algorithm
  sha2-512  Use SHA2-512 algorithm
  sm3       Use SM3 algorithm
[r1-ipsec-proposal-aa]esp authentication-algorithm md5  ---定义校验算法(对数据完整性校验),缺省md5
[r1-ipsec-proposal-aa]encapsulation-mode ?
  transport  Only the payload of IP packet is protected(transport mode)  传输模式
  tunnel     The entire IP packet is protected(tunnel mode)        隧道模式
[r1-ipsec-proposal-aa]encapsulation-mode tunnel ---选择封装模式,因为这里需要跨越公网所以必须选择隧道模式。

(5):配置IPSEC安全策略:

[r1]ipsec policy ?    ----需要定义策略的名称和编号,并且需要选择手工模式还是IKE的方式。    
  STRING<1-15>   Name of IPSec security policy
[r1]ipsec policy aa ?   ---定义名称
  INTEGER<1-10000>  The sequence number of IPSec policy
  shared            Shared
[r1]ipsec policy aa 1 ?     ---定义编号
  isakmp  Indicates use IKE to establish the IPSec SA    ---通过IKE方式建立
  manual  Indicates use manual to establish the IPSec SA  ---通过手工方式建立
  <cr>    Please press ENTER to execute command 
[r1]ipsec policy aa 1 isakmp 
[r1-ipsec-policy-isakmp-aa-1]security acl 3000 ---关联acl列表
[r1-ipsec-policy-isakmp-aa-1]ike-peer aa    关联IKE对等体
[r1-ipsec-policy-isakmp-aa-1]proposal aa    关联ipsec提议

(6):接口调用

[r1]in g0/0/0
[r1-GigabitEthernet0/0/0]ipsec policy aa

注意:建立ipsec的双方的配置要保持一致。

当AR1与AR3配置完成后,可以查看ike的对等体:

[r1]display ike ?
  global      Global
  peer        Specify IKE peer
  proposal    Config IPSec security proposal
  sa          Display Security Association info
  statistics  Statistics information
[r1]display ike sa                 -------查看ike的sa
    Conn-ID  Peer            VPN   Flag(s)                Phase  
  ---------------------------------------------------------------
       18    23.0.0.2        0     RD|ST                  2     
       17    23.0.0.2        0     RD|ST                  1     

  Flag Description:
  RD--READY   ST--STAYALIVE   RL--REPLACED   FD--FADING   TO--TIMEOUT
  HRT--HEARTBEAT   LKG--LAST KNOWN GOOD SEQ NO.   BCK--BACKED UP
  
  
  [r1]display ipsec sa brief   ----------查看ipsec  sa

Number of SAs:2
    Src address     Dst address        SPI    VPN  Protocol     Algorithm
-------------------------------------------------------------------------------
       12.0.0.1        23.0.0.2 2944855559      0    ESP   E:AES-128 A:MD5-96
       23.0.0.2        12.0.0.1 2219075096      0    ESP   E:AES-128 A:MD5-96
[r1]

当我们将AR1与AR3全部配置完成后,使用PC1去ping PC2:此时就完成了,这就是使用ipsec完成的一种VPN技术,可以跨越公网访问

IPsec协议簇补充:

ipsec协议簇的架构:

解释域(DOL):在ipsec中的所有操作都指向解释域,可以把解释域理解成为操作空间,我们要做这些事情都需要在这些域中去完成。

SPD----安全策略数据库------存储各种策略

SAD----安全关联数据库------存储各种参数,加密算法,认证算法,生存时间,包括生成的密钥等都存储在这里面。

IKEv2

IKEV1的缺点:

1.协商速度慢:

如果在第一阶段使用主模式--------那么需要6+3=9条消息完成IPSEC SA的协商;

如果在第一阶段使用野蛮模式------那么需要3+3=6条消息完成IPSEC SA的协商;

在IKEV2中针对协商速度慢进行了优化:

在IKEV2中,第一阶段协商IKE SA仅需要两个数据包就可以完成;而在第二阶段,协商IPSEC SA时,也仅需要两个数据包就可以完成------2+2=4,共4条消息;

2.IKEV1不支持用户远程接入:

IKEV1使用的场景是vlan to vlan 的,如果IKEV1想要接入远程用户,可以结合l2tp来构建VPN隧道,只能借助l2tp,通过ppp协议完成远程用户的认证。

而在IKEV2中增加EAP的认证方式来完成身份认证,则可以实现远程用户的接入。


在防火墙上一般V1和V2同时开启的,发起协商的时候一般使用IKEV2,接受协商的时候同时支持IKEV1和IKEV2。(V1和V2之间是有一定的兼容性的)。

IPSEC不支持动态路由协议;

IPSEC VPN的应用场景

IPSEC VPV其实是一种使用IPSEC技术所实现的一种VPN技术;

(1)IPSEC VPN网关部署:

       将VPN设备安置在内网和公网的边界位置,这种方式最为简单,就是数据来到出口后,判断是否需要走VPN隧道,匹配上的流量则通过VPN隧道安全传输到对端私网中。(两端的私网网段需要区分开,否则将导致地址冲突)。

       网关部署的问题:不太安全,因为边界设备将承载很多攻击行为,而VPN设备只是保证 业务数据安全的设备。

解决方案: 1,使用防火墙在边界充当VPN设备(但是,一台设备需要承担太多的功能,可能导致性能不足)

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

(2)NAT下的VPN部署:

在该部署模式下会遇到的问题:

一:在IKE协商阶段:

       第一个问题:

------------ 我们企业一般会采用NAPT的方式来进行NAT转换。但是,在IKE协商中,要求源目端口号必须UDP 500,否则可能导致协商失败。所以,在NAPT的环境下,则可能更改端口号,导致协商失败。 ---- 解决方案:NAT- T技术。

       第二个问题

----- 身份认证的问题 --- 主模式无法通过NAT环境 ---- 解决方案:使用野蛮模式

由于NAT转换的原因在主模式下会导致身份验证失败。

二:在数据传输阶段

第一问题 --- AH在进行完整性校验的时候,会包含IP地址信息,所以,NAT如果转换了IP地址,则将导致校验失败。所以,在NAT环境下,无法使用AH协议。解决方案:使用ESP协议

(1)但是,使用ESP协议还需要分情况来看,如果ESP选择传输模式时:

       在四层封装(TCP/UDP)中存在伪 头部校验。

       伪头部校验:伪头部校验就是传输层的协议在进行封装的时候,也需要进行完整性校验,但是,这个完整性校验的时候,还需要包含三层IP头部中的部分数据一起进行校验。这些数据中就包含了IP地址的信息。

在正常的NAT环境中,数据进行NAT转换(会转换IP/端口号),数据包中传输层的伪头部校验也会重新计算,但是在ESP传输模式的封装下,因为此时传输层的内容已经被加密了,所以NAT转化后也无法修改校验和;所以会导致对方在接受的时候会出现校验和不匹配的问题,导致通信中断。

所以ESP在传输模式时无法通过NAT环境。

(2)ESP隧道模式:

       在这种环境下,因为添加了新的IP头部,并且,NAT修改的也是新IP头部。这个头部的内容没有进行完整性校验,所以可以被修改。并且四层在进行伪头部校验时使用的数据是原始IP头部中的内容,新的IP头部内容变更也无法影响到伪头部校验的结果。所以,ESP隧道模式的封装可以通过NAT环境。

总结:

NAT-T技术

当出现多条IPSEC VPN时,不能保证每一条的源和目标端口都为500,所以就需要该技术解决(NAT-T)

注意:NAT-T会将IKE协商的数据包中的源端口和目标端口都修改为4500,并 且,允许源端口不是4500,但是目标端口必须是4500。


相关文章