IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 商业虚拟专用网络技术八IPSec应用场景 -> 正文阅读

[网络协议]商业虚拟专用网络技术八IPSec应用场景

一、IPSec NAT穿越的场景

1、IPSec与NAT 的不兼容

IPSec主要包括认证头AH(Authentication Header,验证头)、ESP(Encapsulating Security Payload,安全载荷)、SA(Security Association,安全联盟)和IKE(Internet Key Exchange,因特网密钥交换)几个相关协议。

NAT(Network Address Translation),是指网络地址转换,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术,有效的解决公网地址不足的问题。在网关处,将内部地址替换成公用地址,从而在外部公网(internet)上正常使用,NAT可以使多台计算机共享Internet连接,这一功能很好地解决了公共 IP地址紧缺的问题。

由于 IPSec和 NAT存在很大的冲突.两者存在不兼容性,导致IPSec隧道传输的数据无法穿越NAT进入内网。为什么会发生这样的状况,这种不兼容是由以下几方面原因:

(1)、AH、ESP安全协议与NAT的不兼容
传输模式AHESP

在传输模式下,AH安全协议使用原IP报头也就是内网的私有IP地址并在整个验证范围,会导致NAT设备在对私网的源IP地址和目的地址修改为公网地址后,因为经过NAT后改变了Hash值,无法通过验证,完整性检查的失败;ESP安全协议下TCP/UDP的校验和的计算包含IP源目地址,通过nat后,nat修改了最外层IP地址,接收数据路由器检查校验和失败。
隧道模式AHESP

在隧道模式下,AH安全协议,同样是完整性检查的失败;ESP安全协议下TCP/UDP的校验和,是使用公网IP目的地址,会成功,但是由于端口是加密的,接收设备无法得知端口号而被丢弃。

(2)、校验和与NAT不兼容
TCP/UDP校验和是以IP的源地址和目的地址作为参数计算的,当NAT设备将修改为公网地址后,校验和肯定与原数据的校验和不一致,导致检验失败,数据被丢弃。

(3)、IPSec的SPI(安全参数索引)与NAT不兼容
在这里插入图片描述
NAT设备通过IP头和IPSec头中的信息来识别不同的IPSec数据流,主要识别是参数是目的IP地址、安全协议和IPSec的SPI(安全参数索引)。而IPSec对等体都是单向的传输,对等体发送数据的SPI与接收数据的SPI不一样,这样就造成在私网中如果两台终端同时创建到相同目的的IPSec SA时,NAT可能会错误转发数据包。

(4)、IKE与NAT的不兼容性

  • IKE标识符与NAT的不兼容:IKE第一阶段或第二阶段使用IP地址作为标识符。
    在这里插入图片描述
    当为IPSec协商时经过NAT设备,NAT对于IP地址的修改,而导致标识符与IP地址不符IKE丢弃该数据包。

解决办法:使用userID和FQDN(全称域名)作为标识。

  • IKE固定源端口与NAPT的不兼容性:NAPT(Network Address Port Translation,网络地址端口转换)是指一个全局IP+不同的端口号对应多个私有IP的终端,当安装NAPT设备的内网多台终端对同一网关创建IKE SA时,NAT设备需要识别不同的端口发起的IKE协商会话。

(5)、传送IP数据包载荷中内嵌IP地址与NAT的不兼容性:NAT设备使用ALG(应用层网关)技术对数据包内如多媒体协议(H.323、SIP等)、FTP、SNMP、LDAP、SCTP等很多协议在载荷中内嵌的Ip地址和端口号都转化为公网的ip地址和端口号。

但是IPSec隧道传输的数据,包括原IP地址和数据被加密无法修改。

解决办法:在主机或安全网关上安装ALG,使得数据在IPSec封装前和解封装之后对应用的数据流进行操作。

(6)、NAT的隐式定向性:NAT创建一个映射表项,首先需要内网发起一个初始包。外网发起的初始包一般会被NAT设备丢弃。这一隐式定向性会造成外部数据无法穿越NAT双向自由建立IPSec隧道。

总结:IPSec VPN穿越NAT问题主要为两个,一是IPSec无论使用AH和ESP安全协议都无法在通过NAT设备后发送到目的地,AH方式无法通过验证,ESP方式NAT设备无法得知端口号而被丢弃;二是穿越NAT后身份识别识别的问题,IPSec怎么确认改变IP的数据包。

2、NAT与IPSec的不兼容性问题的解决方案

2.1、NAT-T方案

NAT-T(NAT Traverse)技术的基本思路是在用IPSec封装好的数据包外再进行一次UDP的数据封装。这样 ,当此数据包穿过NAT设备网关时 ,只修改了最外层的 IP/UDP数据 ,而对其内部真正的 IPSec数据没有改动 ;当数据包到达目的主机时,再把外层 的IP/UDP封装去掉 ,这样就可以获得完整的IPSec数据包 。

原理:在IP和ESP报文之间插入一个8个字节UDP头部(端口号默认为4500),使得NAT对待它就像对待一个普通的UDP包一样。而且支持ESP的传输模式。
在这里插入图片描述原IKEv1的主模式
在这里插入图片描述

2.1.1、NAT-T流程

1、IKEv1协商第一阶段主模式下前4个包确定是否支持NAT-T和是否存在NAT。

首先要明白IKE是UDP 之上的一个应用层协议,是IPSEC 的信令协议。
在这里插入图片描述

检测通信中是否存在NAT设备和对方是否支持NAT-T,在IKEv1的第一阶段完成,报文使用500端口进行通信。

IKEv1协商第一阶段的前两个消息会发送标识NAT-T能力的Vendor ID载荷,用于检查通信双方是否支持NAT-T(NAT Traverse)。通过3和4个包的NAT-D参数来判定,是否经过NAT。

(1)、发起方在IKE消息中插入VID载荷来告知对方自己支持NAT穿越。载荷Vendor ID值为:draft-ietg-ipsec-nat-t-ike-XX,RA告诉RB我支持IPSec隧道传输的数据穿越NAT-T,RB协商使用RFC3947标准。双方都支持NAT-T,协商继续。
在这里插入图片描述
在这里插入图片描述

(2)、IKEv1主模式消息3和消息4(野蛮模式为消息2和消息3)中发送NAT-D(NAT Discovery)载荷。
在这里插入图片描述

消息3:NAT-D载荷包含IKE对等体的IP地址和端口的Hash值;NAT-D载荷包含本端IP地址和端口的Hash值。

(3)、协商双方计算Hash值,如果值一样则没有NAT网关,否则Hash值不同,说明经过NAT转换。确定了经过nat后,后面的ISAKMP消息的端口号转换为4500。ISAKMP报文标识了Non-ESP Marker。以示跟封装ESP报文有区别。

2、第二阶段需确认是否使用NAT穿越以及NAT穿越的封装模式。
UDP封装隧道模式报文(UDP-Encapsulated-Tunnel)和UDP封装传输模式报文(UDP-Encapsulated-Transport)。

确认后,后续传输的ESP报文将都采用UDP封装,UDP封装ESP报文时,没有non-ESP marker字段,该位置为SPI,为非0字节。使用的IPSec安全提议ipsec proposal只支持ESP安全协议。AH协议对IP报文的验证范围涵盖了整个IP报文,对IP报文头的任何修改将导致AH的完整性校验失败,因此使用AH协议保护的IPSec隧道不能穿越NAT。

3、IPSec NAT-T配置案例:

配置方案:
由于RouterA与RouterB通过NAT网关建立通信,需要配置NAT穿越功能才能建立IPSec隧道。采用如下思路配置建立NAT穿越功能的IPSec隧道:

(1)、配置接口的IP地址和到对端的静态路由,保证两端路由可达。

(2)、在RouterA上配置ACL,以定义需要IPSec保护的数据流。

(3)、配置IPSec安全提议,定义IPSec的保护方法。

(4)、配置IKE对等体,定义对等体间IKE协商时的属性。

(5)、分别在RouterA和RouterB上配置安全策略,确定对何种数据流采取何种保护方法。其中RouterB采用策略模板方式创建安全策略。

(6)、在接口上应用安全策略组,使接口具有IPSec的保护功能。

在这里插入图片描述
阶段一:
分别在RouterA和RouterB上配置IKE协商时的名称类型ID。

[RA] ike local-name ra
[RouterB] ike local-name rb

在RouterA上配置IKE安全提议。

[RA] ike proposal 5
[RA-ike-proposal-5] encryption-algorithm aes-128
[RA-ike-proposal-5] authentication-algorithm sha2-256
[RA-ike-proposal-5] dh group14

RouterB此处省略

在RouterA上配置IKE对等体。

[RA] ike peer ra v1
[RA-ike-peer-ra] exchange-mode aggressive    //配置IKEv1阶段1协商模式为野蛮模式
[RA-ike-peer-ra] ike-proposal 5
[RA-ike-peer-ra] pre-shared-key cipher 123456
[RA-ike-peer-ra] local-id-type fqdn
[RA-ike-peer-ra] remote-address 192.168.10.100
[RA-ike-peer-ra] remote-id rb
[RA-ike-peer-ra] nat traversal                 //使能NAT穿越功能,默认为开启,一般不设置。

RouterB此处省略

阶段二:
在RouterA上配置ACL,以定义需要IPSec保护的数据流。

[RA] acl number 3001
[RA-acl-adv-3001] rule permit ip source 10.1.1.0 0.0.0.255 destination 10.10.1.0 0.0.0.255

在RouterA上配置IPSec安全提议。

[RA] ipsec proposal safe1
[RA-ipsec-proposal-safe1] esp authentication-algorithm sha2-256
[RA-ipsec-proposal-safe1] esp encryption-algorithm aes-128 

RouterB此处省略

分别在RouterA和RouterB上创建安全策略

  • 在RouterA上配置IKE动态协商方式安全策略。
RA] ipsec policy pass1 10 isakmp
[RA-ipsec-policy-isakmp-pass1-10] security acl 3001
[RA-ipsec-policy-isakmp-pass1-10] ike-peer ra
[RA-ipsec-policy-isakmp-pass1-10] proposal safe1
  • 在RouterB上以策略模板方式配置IKE动态协商方式安全策略。
[RB] ipsec policy-template use1 10
[RB-ipsec-policy-templet-use1-10] ike-peer rb
[RB-ipsec-policy-templet-use1-10] proposal safe1
[RB-ipsec-policy-templet-use1-10] quit
[RB] ipsec policy pass1 10 isakmp template use1

查看配置的安全策略信息
[RB] display ipsec policy

分别在RouterA和RouterB的接口上应用各自的安全策略组,使接口具有IPSec的保护功能
在RouterB的接口上引用安全策略组。

[RA] interface gigabitethernet 0/0/0
[RA-GigabitEthernet0/0/0] ipsec policy pass1

在RouterB的接口上引用安全策略组。

[RB] interface gigabitethernet 0/0/0
[RB-GigabitEthernet0/0/0] ipsec policy pass1

查看配置的SA信息
[RA] display ike sa

总结:
优点:NAT-T实现简单 ,不用改动现有在设备和协议,不需要做额外的工作或做很少的工作,具有很好的安全性 ,得到广泛的应用 。

缺点:由于采用了UDP封装形式 ,加大了数据包的长度和负载 ,大约为每个数据包增加了20B的长度。这增加了设备处理的时间和负担。采用了UDP封装形式后,将IPSec的实现扩展到了第四层之上,这就与IPSec的本来意图相矛盾,并会引入安全问题;在实现NAT-T中,引入了NAT发现、NAT支持证明等无关功能,增加了IKE的复杂性,使IKE的实现趋向更加复杂;如果攻击者将UDP数据包插入UDP封装的IPSec数据流,通过伪造序列号、校验和、或更改源、目的端IP地址及端口号,可以很方便地引发对接收端的拒绝服务攻击;虽然解决了IPSec数据包通过NAT设备所遇到的大部分问题,但还存在一些未曾解决的问题,例如一些应用层协议像FTP、H.323协议、LDAP及其它许多协议,它们的协议消息包一般是在应用层数据特定区段内嵌IP地址和端口号,而不是放置在IP头,如果仅仅使用NAT协议里的IP和端口号不能指向正确的地方,从而导致通信不能正常进行。

2.2、RSIP方案

领域特定的因特网协议RSIP(Realm Specific Internet Protocol)是IETF专门开发用来替代NAT协议与IPSec配合工作的。RSIP是将一个拥有合法IP的服务器放在私有地址域内 。把公网IP地址和端口租给位于私有网络中的RSIP主机 。与 NAT不同的是 ,它不是采用替换IP来工作 ,而是允许域内主机直接同时在几个地址域内通信。在通信过程中。RSIP对IP载荷做的修改不会削弱 IPSec这类 对NAT敏感的协议的功能 ,当一个RSIP客户机想要在自己所在地址域外通信时,首先在RSIP网关上登记 ,RSIP网关给它分配一个合法的IP地址(或一 IP地址和端 E1)。并把私有地址与之绑定。RSIP客户使用这个地址作为源地址和外部设备通信 ,直到这个地址过期或被更新 。

注:RSIP假定领域特定的IP地址与私有或外部领域中的主机进行通信。两端的主机生成的数据包将基于在外部领域中端到端唯一的地址,并且不需要中间进程进行转换。

优点:不需要改变IPSEC协议(AH、ESP、IKE),解决了当多个内部主机与同一个外部设备通信时的分路冲突和SPD重叠问题,具有影响上层协议少、可以和IPSEC协同工作等特点。由于RSIP是NAT的替代方案,并且可以和现有的NAT共存.因此使用NAT的网络可以平滑地升级到RSIP。同时RSIP通过将IKE和IPSec封装在一个以其私有IP为源地址的报文内,避免了对IKE和IPSec协议本身的修改,使AH和ESP的两种模式都可以使用,很好地解决了使用NAT时存在的一些问题。

缺点:RSIP依赖端口共享公用IP,但是IPSECESP需要对端口号进行加密。当多个RSIP主机使用一个RSIP网关转发ESP时。会出现分路冲突的问题,就需要另外的鉴别器,这样就加重了IPSec设备的负担;另外在IKE重建密钥时,为了解决分路传送问题。RSIP需要修改IKE的源端口,这样就可能无法与现有的IPSec协同工作;最后该解决方案要求将NAT网关升级为RSIP网关,同时涉及对客户机的修改、服务器的部署、服务器的修改等等问题.这个过程在经济上耗费较大且一时难以实现。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:47:24  更:2022-04-04 12:47:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:49:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码