IPSEC VPN-详解原理

目录

IPSEC提供的安全服务

IPSEC协议簇

​编辑

安全协议

                1.传输模式

          2. 隧道模式

AH ---鉴别头协议

AH提供的安全服务:

AH头部 

AH的保护范围

        1.传输模式

        2.隧道模式

​编辑

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

ESP提供的安全服务:

ESP的头部

ESP的保护范围

1.传输模式

2.隧道模式

​编辑

AH+ESP

1.传输模式

2.隧道模式

IKE-互联网密钥交换

第一阶段

第二阶段

数据传输阶段

手工建立SA流程

IKE的配置

IPSEC协议簇补充

IKEV2

IPSEC VPN的应用场景

IPSEC VPN网关部署

NAT下的VPN部署场景


IPSEC ----协议簇---一个基于网络层,应用密码学的安全信息协议组。
IPSEC 协议簇是针对 IPV6 设计的,在 IPV6 的产品中, IPSEC 是强制使用, 保证其数据传输的安全性 ;但是,也可以使用在IPV4 中,作为一个可选项来使用。

IPSEC提供的安全服务

机密性 ---数据加密
完整性 ---防篡改
可用性         
        数据源鉴别---身份认证      
                预共享密钥---PSK ---相当于两边对了一个暗号,这个暗号需要事先确定好。
                证书---遵循PKI体系---相当于一个被公认让你的身份证。
不可否认性 ---数字签名
重传攻击保护- --抗重放---IPSEC通过启用 序列号 的方法来进行防重放攻击。---相当于启用一个一次性的数字,不会再次生效。
有限的流量保护 ---在IPSEC中可以抓取感兴趣流,即可以 设定哪些流量需要进入到ipsec通道 中,进行保密传输,哪些不需要进入通道

IPSEC协议簇

安全协议

        工作方式---这里两种不同的工作方式,指的其实是两种不同的封装方式。

                1.传输模式

主要应用场景
        经常用于主机和主机之间端到端通信的数据保护。因为没有创建隧 道,所以,不能穿越公网,一般用于私网内部。
封装方式
        不改变原有的IP包头,在原始的数据包头后面出入IPSEC的包头,将原来数据封装成为被保护的数据。主要针对IP层及以上的数据进行保护,具体的保护方法和范围需要由选用的安全协议来决定。

          2. 隧道模式

主要应用场景
        因为可以跨公网创建隧道,所以,经常用于私网和私网之间通过公网进行通信,建立安全的VPN隧道。
封装方式
        增加新的IP头部,之后是IPSEC的头部,再之后是原始的数据包封装。
安全协议

AH ---鉴别头协议

封装位置在 网络层和传输层之间 ,其协议号为 51
AH提供的安全服务:
1,数据完整性保障---AH的主要工作就是保证数据的完整性的。
                       注意:AH 协议无法提供加解密的服务
2,数据源认证---身份认证
3,抗重放攻击
AH头部 
安全参数索引---SPI ---用来标识唯一的 SA(安全联盟:用于通信双方的基本信息的协商) 的。---- IPSEC SA ----注意,这个SA也是分通信方向的,如果需要构建这个安全通道,需要构建两条通信方向相反的SA 才行 。----不同的SA通道需要通过SPI进行标识,相当于SA的一个ID号。
序列号---防重放---不允许重复
AH的保护范围
        1.传输模式
        2.隧道模式
注意 AH 在进行完整性校验时,因为包含 IP 头部,而 IP 头部中的部分数据比如TTL, TOS(标识优先级) 这些参数,在传递的过程中会发生变化,所以, AH 在进行校验时将不包含这
些参数。
注意 因为AH在进行完整性校验的时候,包含有IP地址信息,但是,NAT技术会修改
IP地址信息,所以,AH协议无法通过NAT环境,否则将导致校验失败。

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

封装位置在 网络层和传输层之间 ,其协议号为 50;
ESP提供的安全服务:
1,数据完整性保障
2,数据源认证---身份认证
3,抗重放攻击
4,ESP可以提供数据的加解密服务 ,并且, 加解密是可选的。
ESP的头部
注意
         ESP尾部主要目的是进行数据的填充 。因为数据进行加密主要使用的 对称加密算法,而其中分组加密需要针对固定长度的分组进行加密 ,如果最后分组的长度不足,则需要填充。满足加密的条件。还有就是下一头部因为包含数据信息,所以,也放在尾部进行保护,因为负载部分和尾部部分是会进行加密的。
ESP的保护范围
加密范围 --- 除了IP头部内容和ESP头部的内容外 ,剩余所有网络层以上的数据都会进行加密。

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

1.传输模式
2.隧道模式
AH和ESP的对比

AH+ESP

1.传输模式
2.隧道模式
结论: 只要有AH协议参与的封装都无法通过NAT环

IKE-互联网密钥交换

        主要用来完成IPSEC中需要的密钥相关参数的协商工作 。可以动态建立ipsec sa方法 ---IKE V1,IKE V2

 IKE ---SKEME,OAKLEY,ISAKMP

ISAKMP(互联网安全联盟密钥管理协议)---IKE协议的本体--- 主要用来完成IPSEC中需要的密钥相关参数的协商工作。可以动态建立ipsec sa --- UDP 500 ---源目标端口都必须是500。
SKEME,OAKLEY ---这两个协议可以理解为是IKE协商过程中使用到的资源库。
第一阶段
         主要目的是为了获得 建立IPSEC SA时使用的密钥 ,以及进行 身份认证 。--- IKE(ISAKMP SA) ---这个SA是双向逻辑的,不区分源和目标。 (协商加密参数的参数)
主模式----- 默认使用IP地址作为身份标识(不能改变IP因为它是和PSK 绑定关系) ---需要通过6个数据包进行交互,安全性更高。
第一二个数据包--IKE SA交换
1 ,CI ---cookie ---这个参数每个数据包中都会携带,在IKEV2中,变成了 SPI,在这里作用类似。
2 ,SA ---里面携带的是需要协商的安全参数---“五元组”
加密算法,哈希算法,身份认证, DH 组, SA 存活期
  AES          MD5             PSK        DH2    84600S(默认值)
注意 :手工建立的SA,一经建立,则将永久有效;但是IKE建立的SA,需要配置生存周期,周期时间到了之后,将重新建立SA。SA两端的数值不要求完全相 同,如果时间不同,则按照小的来执行。
第二个回包: 主要确认安全参数,如果安全参数都可以对的上,则将继续完成后面的协商。如果参数没有对上,则将回复一个 负载拒绝报文 ,结束 IKE SA 的建立。
第三四个数据包---DH密钥交换---对称密钥
1,NI,Nr---代表的是随机数
2,X,Y ---DH算法中需要公开的参数
这里,为了加强安全性, DH 算法会生成 四种密钥

PRF---hash算法的一种

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

SKEYID_e ---加密密钥---g^ir (代表的就是DH算法中计算出来的Z),CKY-I/CKY-
R(前面双方携带的cookie值)---- 用于第一个阶段5,6数据包和第二阶段数据包加
密使用
SKEYID_a- ---验证密钥--- 用于第二阶段hash时使用的密钥 ---HMAC算法(结合密
钥的HASH算法),安全性比不加入密钥的HASH算法更高。
SKEYID_d ---推导密钥--- 用于计算最终密钥(最终加密数据的密钥)的素材
第五六个数据包---进行身份认证---加密传输
1,ID ---身份信息---在主模式下,默认使用IP地址作为身份信息
2,hash ---针对之前SA信息再进行HASH运算,比对结果。这里的HASH运算会加入验证密钥一起进行,更加安全。

注意:前四个数据包是明文,五六数据包是密文 

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

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

IKE SA是双向只需要建立一条,IPSEC SA是单向的,要建立两条方向相反的数据链路

需要协商的安全参数: 

加密算法---正式传输数据时使用的加密算法(加密算法协商完成后,会计算密钥第一阶段                        计算出来的推导密钥会加入到该密钥的计算中)
HASH 算法---正式传输数据时进行完整性校验的算法
安全协议---AH/ESP
封装模式---传输模式/隧道模式
存活时间
PFS ---密钥完美向前保密 ---正常工作中,第二阶段的最终密钥是通过第一阶段的推导密钥计算出来的,但是,这样做不安全,推导密钥泄露可能导致最终密钥泄露。所以,可以开启这个PFS技术(注意:要开启需要两端设备都开启才行),之后,则将在第二阶段重新进行一次DH交换,计算最终的密钥。从而提高安全性。
数据传输阶段
        VPN黑洞 ---隧道建立之后,如果其中一段的设备异常重启,另一端还在有效期内,则他发送的数据将有去无回,就形成了VPN黑洞
解决方法--- DPD死亡对等体检测
类似于心跳检测机制---采用空闲计时器原理---两边同时开启一个固定时间的计时器,期间数据值直接发过去,如果计时器超时,则数据发送前,先发送一个DPD检测报文,如果收到对方的DPD应答报文,则将重置计时器。如果没有收到,并且,连续5次都没有收到,则将拆掉安全通道。
手工建立SA流程
IKE的配置
1,抓取感兴趣流
[r1]acl 3000 ---这里只能选择使用高级ACL列表,因为后面调用的时候,仅能调用高级的。
[r1-acl-adv-3000]rulepermit ip source 192.168.1.0 0.0.0.255 destination 192.168.2.0                                       0.0.0.255
2,配置IKE安全提议
[r1]ike proposal 1 ---后面需要添加一个提议的编号
[r1-ike-proposal-1]encryption-algorithm aes-cbc-128 ---定义加密算法---缺省是DES算法
[r1-ike-proposal-1]authentication-algorithm md5 ---定义校验算法---缺省是SHA1
[r1-ike-proposal-1]authentication-method pre-share ---定义认证方式---缺省是预共享密钥
[r1-ike-proposal-1]dh group2 ---定义DH组---缺省DH组1
[r1-ike-proposal-1]sa duration ? ---定义SA的老化时间----建议:老化时间修改的时候,要大                                                        于600S。

INTEGER<60-604800> Value of time(in seconds), default is 86400
[r1-ike-proposal-1]sa duration 86400

3,配置IKE对等体 

[r1]ike peer aa v1---需要声明对等体的名称(自定义),第一次进入时,需要写版本号
[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 123456 --- 定义预共享密钥的具体值,注意,两边必须一样
[r1-ike-peer-aa]remote-address 23.0.0.2 ---三位一体
1:邻居对等体的建邻地址;2:参与查找预共享密钥;3:作为身份标识验证对端身份
4,配置IPSEC的安全提议
[r1]ipsec proposal aa ---需要定义一个提议的名称
[r1-ipsec-proposal-aa]transform esp ---定义安全协议---缺省esp
[r1-ipsec-proposal-aa]esp encryption-algorithm aes-128 ---定义数据加密算法---缺省des
[r1-ipsec-proposal-aa]esp authentication-algorithm md5 ---定义数据验证算法---缺省 md5
[r1-ipsec-proposal-aa]encapsulation-mode tunnel ---选择封装模式---缺省为隧道模式

5,配置IPSEC安全策略 

[r1]ipsec policy aa 1 isakmp ---需要定义策略的名称和编号,并且需要选择手工模式还是IKE                                                   的方式。
[r1-ipsec-policy-isakmp-aa-1]security acl ? ---关联ACL列表
                     INTEGER<3000-3999> Apply advanced ACL
[r1-ipsec-policy-isakmp-aa-1]security acl 3000
[r1-ipsec-policy-isakmp-aa-1]ike-peer aa ---关联IKE对等体
[r1-ipsec-policy-isakmp-aa-1]proposal aa ---关联ipsec提议
6,接口调用
[r1-GigabitEthernet0/0/1]ipsec policy aa
注意:对端R3的IPSEC 也是相同的配置,在R3的g0/0/0接口调用
查看SA命令
display ike sa     查看IKE SA
display ipsec sa   查看IPSEC SA

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
2,IKEV1不支持远程用户接入
        如果IKEV1 想要接入远程用户,可以结合 l2tp来构建VPN隧道,只能借助l2tp,通过 ppp协议完成远程用户的认证。
         而 IKEV2增加EAP的认证方式来完成身份认证 ,则可以实现远程用户的接入。
注意 :防火墙上,一般 V1 V2 同时开启,发起协商的时候,一般使用 IKEV2 ,接受协商的时候,同时支持V1 V2

IPSEC VPN的应用场景

IPSEC VPN网关部署

IPSEC 不支持动态路由协议
        VPN设备安置在内网和公网的边界位置,这种方式最为简单,就是数据来到出口后,判断是否需要走VPN 隧道,匹配上的流量则通过 VPN 隧道安全的传输到对端私网中。(两边的私网网段需要区分开,否则将导致地址冲突)
网关部署的问题:
不太安全,因为边界设备将承载很多攻击行为,而VPN 设备只是保证业务数据安全的设备。
解决方案:
1.使用防火墙在边界充当VPN设备(但是,一台设备需要承担太多的功能,可能导致性能不足)
2,VPN设备下沉到内网中---VPN的单臂部署(NAT下的VPN部署场景)

NAT下的VPN部署场景

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

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

数据传输阶段
         第一问题 ---AH在进行完整性校验的时候,会包含IP地址信息,所以,NAT如果转换了IP地址,则将导致校验失败。所以,在NAT环境下,无法使用AH协议。
解决方案:使用 ESP协议( 但是,使用ESP协议还需要分情况来看
1. 如果ESP选择传输模式                        
        四层封装的时候,里面存在 伪头部校验 。所谓伪头部就是传输层的协议在进行封装的时候,也需要进行完整性校验,但是,这个完整性校验的时候,还需要包含三层IP 头部中的部分数据一起进行校验。这些数据中,就包含了IP 地址的信息。在正常的 NAT 中环境,数据进行 NAT 转换(转换IP 地址或者端口号)数据包中传输层的伪头部校验也会重新计 算,但是,在ESP 选择传输模式的封装下,因为此时,传输层的内容已经被加密了,所以,NAT 转换后无法修改校验和,所以,导致对方在接受的时候,会出现校验和不匹配的问题,导致通信中断。所以,ESP在传输模式也时无法通过NAT 环境了。
2. ESP 隧道模式
        在这种环境下,因为添加了新的IP 头部,并且, NAT 修改的也是新 IP 头部。这个头部的内容没有进行完整性校验,所以,可以被修改。并且,四层在进行伪头部校验时使用的数据是原始IP 头部中的内容,新的 IP 头部内容变更,也无法影响到伪头部校验的结果。所以,ESP 隧道模式的封装可以通过NAT 环境。
NAT -T ----NAT穿越技术
        NAT-T会将IKE协商的数据包中的源端口和目标端口都修改为4500,并且,允许源端口不是4500,但是目标端口必须是4500。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753295.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库国产化探究及升级改造过程指导

一、背景 在信创“自主可控”的浪潮下&#xff0c;政企行业首当其冲&#xff0c;基于国产化信创的要求&#xff0c;本部门某业务后端应用也需要针对分析开源组件的风险和开源协议的商业应用限制&#xff1b;能用国产化替代的评估后尽可替代割接&#xff0c;本期针对传统数据库…

22、设计模式之状态模式(State)

一、什么是状态模式 状态模式是一种行为型设计模式。它允许对象在内部状态发生改变时改变它的行为&#xff0c;简单地讲就是&#xff0c;一个拥有状态的context对象&#xff0c;在不同状态下&#xff0c;其行为会发生改变。 二、角色组成 上下文&#xff08;Context&#xff0…

【Leetcode-54.螺旋矩阵】

题目&#xff1a; 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5]示例 2&#xff1a; 输入&#xff1…

从单机到分布式微服务,大文件校验上传的通用解决方案

一、先说结论 本文将结合我的工作实战经历&#xff0c;总结和提炼一种从单体架构到分布式微服务都适用的一种文件上传和校验的通用解决方案&#xff0c;形成一个完整的方法论。本文主要解决手段包括多线程、设计模式、分而治之、MapReduce等&#xff0c;虽然文中使用的编程语言…

外包干了3个月,技术明显进步。。。。。

在湖南的一个安静角落&#xff0c;我&#xff0c;一个普通的大专生&#xff0c;开始了我的软件测试之旅。四年的外包生涯&#xff0c;让我在舒适区里逐渐失去了锐气&#xff0c;技术停滞不前&#xff0c;仿佛被时间遗忘。然而&#xff0c;生活的转机总是在不经意间降临。 与女…

VMware安装Centos 7系统+设置共享文件夹+VMware Tools安装

文章目录 镜像下载地址下载页自己选择直接点击下边url下载 VMware环境1.新建虚拟机2.选择“自定义(高级)”&#xff0c;并点击【下一步】3.选择虚拟机硬件兼容性&#xff0c;并点击【下一步】4.选择“稍后安装操作系统”&#xff0c;并点击【下一步】5.选择操作系统版本&#x…

阿里云服务器地域怎么选?地域选择经验分享

阿里云服务器地域选择方法&#xff0c;如何选择速度更快、网络延迟更低的地域节点&#xff0c;地域指云服务器所在的地理位置区域&#xff0c;地域以城市划分&#xff0c;如北京、杭州、深圳及上海等&#xff0c;如何选择地域&#xff1f;建议根据用户所在地区就近选择地域&…

如何将大华dav视频转mp4?一键无损清晰转换~

Digital Audio Video&#xff08;DAV&#xff09;文件格式源于数字监控领域&#xff0c;旨在解决视频监控数据的存储和回放问题。随着数字监控技术的发展&#xff0c;DAV格式逐渐成为监控设备记录视频的标准格式&#xff0c;广泛应用于安防系统、摄像头监控等场景。 MP4文件格式…

掌握微服务性能监控:走向高效稳定的系统之路

掌握微服务性能监控&#xff1a;走向高效稳定的系统之路 一、微服务性能监控的挑战二、性能监控的目标与指标三、性能监控工具概览四、实践案例分析五、结语 大家好&#xff0c;这里是程序猿代码之路&#xff0c;在当今快速迭代和发布的软件开发周期中&#xff0c;微服务架构以…

付费代理IP与免费代理IP的区别

目录 一、稳定性与可用性 二、速度与性能 三、安全性与隐私保护 四、功能与服务 五、案例与代码示例 六、总结 在网络爬虫、数据分析、网络安全测试等场景中&#xff0c;代理IP的使用是非常普遍的。代理IP能够帮助用户隐藏真实IP地址&#xff0c;突破地域限制&#xff0c…

6个选品建议,改善你的亚马逊现状。

一、市场热点与需求调研 深入研究当前市场趋势&#xff0c;了解消费者需求的变化。使用亚马逊的销售数据、评价、问答等功能&#xff0c;以及第三方市场研究工具&#xff0c;比如店雷达&#xff0c;分析潜在热销产品的特点。注意季节性需求&#xff0c;提前布局相关选品&#…

【数据挖掘】练习2:数据管理1

课后作业2&#xff1a;数据管理1 一&#xff1a;上机实验1 # 读入数据 data("CO2") # 查看数据集CO2中的变量名称&#xff0c;并将变量Treatment的名称更改为Treat names(CO2) names(CO2)[names(CO2) "Treatment"] <- "Treat" names(CO2)…

login登录界面

展示情况 代码&#xff1a; <template><div class"wrapper"><div style"margin: 200px auto; background-color: #fff; width: 350px; height: 300px; padding: 20px; border-radius: 10px"> <div style"margin: 20px 0; text…

C语言实现一个两个数加减乘除的答题代码(含文件保存),用户增加,题目增加,题目测试,题目答题等等

目录 1、这是我大一自己写的小代码&#xff0c;现在翻到了就分享出来&#xff0c;高手勿喷。 2、项目运行 3、获取完整源码网址 1、这是我大一自己写的小代码&#xff0c;现在翻到了就分享出来&#xff0c;高手勿喷。 2、项目运行 &#xff08;1&#xff09;测试模块 每次…

网安渗透攻击作业(4)

Unload-labs-01 function checkFile() { var file document.getElementsByName(upload_file)[0].value; if (file null || file "") { alert("请选择要上传的文件!"); return false; } //定义允许上传的文件类型 v…

【Linux】对进程PCB的理解查看进程信息的方法

一、学习准备&#xff1a;对操作系统工作模式的理解 首先我们要清楚的是&#xff0c;操作系统是一个进行软硬件资源管理的软件。操作系统对下要管理好底层硬件。每一个硬件的生产产商都会给他们的产品提供对应的驱动程序&#xff0c;驱动程序是特定于某一硬件或系统设备的软件组…

angularjs 指令实现自定义滚动条

场景&#xff1a;横向商品栏&#xff0c;把原有的滚动条改成自定义的样式&#xff0c;并且给两边加上箭头可以调整&#xff0c;可以拖动商品和滚轮实现滚动条效果。 js appService.directive(customScrollbar, function() {return {restrict: A,transclude: true,scope: {ena…

Linux编程4.8 网络编程-建立连接

1、服务器端 #include <sys/types.h> #include <sys/socket.h>int listen(int sockfd, int backlog);返回&#xff1a;成功返回0&#xff0c;出错返回-1。参数&#xff1a;sockfd:套接字的文件描述符backlog:定义了sockfd的挂起连接队列可能增长的最大长度。…

关于udp能跨局域网传输的问题

UDP&#xff08;用户数据报协议&#xff09;以其独特的传输特性在多种应用场景中都有着极其重要的作用。然而&#xff0c;关于UDP是否能跨局域网&#xff08;LAN&#xff09;进行传输&#xff0c;以及这一传输过程中的优缺点&#xff0c;一直是网络技术领域讨论的热点。本文将详…

Unity中PICO中手柄按键返回值

文章目录 前言一、我们看一下每个按键返回值获取按键返回值的方法 二、我们实现一个左摇杆控制平滑移动的功能1、创建一个左摇杆控制移动的脚本2、传入XR Origin对象&#xff0c;并且定义一个公开变量控制移动速度3、获取到摇杆是否移动&#xff0c;以及移动的偏移量4、如果摇杆…