通过WireShark对比IPsec VPN不同配置方式和算法下的报文封装差异

135f7550aa8d9a4f254c16f898ac73c5.gif

正文共:1888 字 18 图,预估阅读时间:2 分钟

听说大家最近学习WireShark抓包的热情比较高涨WireShark抓包报文结构分析听说你要WireShark抓包的分析案例?DHCP来了!,那我就多发几篇,反正库存多的是。

前面我们提到SD-WAN的时候SD-WAN网络中的IPsec流量是怎么转发的?我给你简单演示一下,提到过目前SD-WAN的Overlay隧道实现方式主要还是通过IPsec来建立。那了解IPsec的相关协议RFC2401-互联网协议的安全架构、配置过程GRE over IPsec,IPsec不服,要求IPsec over GRE还有报文结构就变得非常重要,整体上已经出了一个合集了IPsec VPN文章及知识点汇总【墙裂建议收藏】。当然,后来文章又有更新,具体请参考IPsec文章合集

结合RFC2401(IPsec:互联网协议的安全架构RFC2402(AH:IP认证头RFC2406(ESP:IP封装安全载荷的相关说明:

IPsec SA(Security Association,安全联盟)分为两种类型:传输模式和隧道模式。

传输模式 SA 是两个主机之间的安全联盟。在 ESP 的情况下,传输模式 SA 仅为这些更高层协议提供安全服务,而不是为 IP 标头或 ESP 标头之前的任何扩展标头提供安全服务。在 AH 的情况下,保护还扩展到 IP 标头的选定部分、扩展标头的选定部分和选定的选项。

隧道模式SA本质上是应用于IP隧道的SA。每当SA的任一端是安全网关时,SA 必须是隧道模式。因此,两个安全网关之间的 SA 始终是隧道模式 SA,主机和安全网关之间的 SA 也是如此。

对于隧道模式 SA,有一个“外部”IP 标头指定 IPsec 处理目的地,加上一个“内部”IP 标头,指定数据包的(表面)最终目的地。安全协议头出现在外部 IP 头之后,内部 IP 头之前。如果在隧道模式下使用 AH,则外部 IP 报头的部分将受到保护(如上所述),以及所有隧道传输的 IP 数据包(即,所有内部 IP 报文头都受到保护,以及更高层协议)。如果采用 ESP,则仅对隧道数据包提供保护,而不对外部报文头提供保护。

总之,主机必须同时支持传输和隧道模式;要求安全网关仅支持隧道模式,如果安全网关支持传输模式,则应仅在安全网关充当主机时使用。

c9be97f6578d8ca7ac2a05a455b540bb.png

组网图

a79d89a3d8acb15ad84f5fd18ffe1efd.png

实验组网图如下。

f9c1420297c60b922a721caae1b71ee3.png

0a78e9a86cd420d614947212b8ff497f.png

设备配置

IPsec这个实验我是在H3C模拟器HCL中做的,主要配置任务包括以下几点:

1、配置IPsec保护的数据流量。一般也称为感兴趣流,用ACL来进行匹配;

2、配置IPsec安全提议。指定对IP报文的封装形式为传输模式或隧道模式,选择安全协议为AH或ESP或AH-ESP,并配置与之对应的加密算法及认证算法;

3、配置IPsec安全策略。包含配置应用感兴趣流,应用IPsec安全提议,指定IPsec隧道地址,配置安全协议的SPI(Security Parameter Index,安全参数索引)SA(Security Association,安全联盟)密钥;

4、在接口上应用IPsec安全策略。

所以,今天,我们将主要通过调整安全协议、加密算法和认证算法来验证一下。

IPsec安全提议支持的安全协议有AH、ESP和AH-ESP,相关协议介绍请参照相关RFC文档,不同安全协议的数据封装格式如下图所示:

b311deb54e519f7d4c33a7cc3c2c4787.png

模拟器支持的安全协议:

8f525cb2893b365114935c37a80eb46e.png

缺省情况下,采用ESP安全协议,那就延用上个实验的环境,先测一下ESP安全协议。

1b4441386bc12ce3ce0c10bf856a5ebd.png

使用ESP安全协议的报文结构

已知使用ESP封装的报文,MTU值为1400字节。从RFC2406我们得知,ESP封装报文头格式如下:

04d294d6bd2c3185151eb28c667e0b94.png

虽然抓包的可读性比较差,但还是要做一下分析。

a30e9223fe4625ab3af140f33f706430.png

将标准的封装格式和实际报文进行对比,可以得出:

1、SPI字段长度为4字节;

2、序列号字段长度为4字节;

3、加密填充内容字段长度可变,长度为0-255字节;

4、填充长度字段长度为1字节;

5、下一个头部字段长度为1字节;

6、认证数据字段长度可变,并且是可选的。

所以上面1和2为ESP头,3-6位ESP-T(校验尾),初步推算ESP-T长度为44字节。

所以使用ESP封装的完整报文结构如下图所示:

9ebf24018f578e90b69e3b9d04ee0454.png

f295711e6f1d0b4668d238609e2fc4b4.png

使用AH安全协议的报文结构

修改安全协议在IPsec的安全提议transform-set中,重新配置安全协议为AH。并在IPsec策略中修改SA的SPI和密钥。

#
ipsec transform-set tran1
 protocol ah
 ah authentication-algorithm sha1
#
ipsec policy ipsec 10 manual
 sa spi inbound ah 123321
 sa string-key inbound ah simple 123321
 sa spi outbound ah 123321
 sa string-key outbound ah simple 123321

查看SA信息,发现协议已经是AH了,并且没有加密算法。

4eb3fc5c590173e7b6133c6d04b46faa.png

测试封装后的MTU为1428字节。

7a695cd7e4b22ae40495afd4f232e548.png

抓包进行分析,发现仅仅是在原始报文头部加了一个认证头,没有对报文进行加密,原始报文数据一目了然。

d4d0db70ccdd3500de6c400140f944ac.png

对比RFC2402中的报文结构,AH头部封装和协议中完全一致。RFC2402中AH ICV字段为可变长度,此处该字段长度为12字节。

66fc076fd981d02655816f33cf01a089.png

所以使用ESP封装的完整报文结构如下图所示:

1ee729bb9bc541c57c41cfb80741afa6.png

dace8eb8d32b91f92a663a6e9632bc23.png

组合使用AH-ESP安全协议的报文结构

再从IPsec的安全提议transform-set中,配置安全协议为AH-ESP。并在IPsec策略中添加SA的SPI和密钥。需要注意,AH和ESP的SPI值不能重复,否则无法配置。

#
ipsec transform-set tran1
 esp encryption-algorithm aes-cbc-128
 esp authentication-algorithm sha1
#
ipsec policy ipsec 10 manual
 sa spi inbound ah 123321
 sa spi inbound esp 321123
 sa string-key inbound ah simple 123321
 sa string-key inbound esp simple 123321
 sa spi outbound ah 123321
 sa spi outbound esp 321123
 sa string-key outbound ah simple 123321
 sa string-key outbound esp simple 123321

查看SA信息,能发现SA中同时包含AH和ESP,加密算法和认证算法均有体现。

52e49bc2f1b3452402eb324250f3a78b.png

测得封装后的链路MTU为1376字节。

14709e0ac7cec76f08877522a55c12fb.png

抓包进行分析,发现报文封装结构和之前学习的一样,先封装ESP,再加一个AH认证头。

68135b03c43555731cabfb18259bae08.png

所以组合使用AH和ESP封装的完整报文结构如下图所示:

eb3e27eb2ffa5a95f26b9bfe416df468.png

7b612df57af54cd1085fd8d91b940ef3.png

修改ESP加密算法

验证完了安全协议,那加密算法会不会对报文封装有影响呢?

这个验证还是比较简单的,仅需要在IPsec安全提议transform-set中修改加密算法即可,此处将原来的aes-cbc-128算法修改为aes-ctr-256。

#
ipsec transform-set tran1
 protocol ah-esp
 esp encryption-algorithm aes-ctr-256
 esp authentication-algorithm sha1
 ah authentication-algorithm sha1

修改之后查看SA信息,验证加密算法修改成功。

e2ff9af44fa136587308d0f982009a8c.png

测试修改加密算法之后的MTU值为1384字节,比使用aes-cbc-128的1376字节增加8字节。

5aba09413c3b8bdbcfa0a38c18b71d9c.png

42ae104c8731713b91a76122388e6d09.png

总结

4660b8a3e2dc40fc6982b47eecf72178.png

1、使用不同安全协议的报文封装结构如下图所示:

04cf0f70ac29b2ac334f5d83739ec271.png

2、使用的加密算法和认证算法在SA中均可查看;

3、ESP使用的加密算法不同,ESP校验尾部填充报文长度不同;

4、同时使用AH和ESP封装时,需要在IPsec策略中分别配置SA的AH-SPI值和ESP-SPI值,并且两个值不可以相同。

0d55dc715a82589a9c18d1844aa175b7.gif

长按二维码
关注我们吧

0fa3afda7076a1f32097db743c4a9d77.jpeg

409515373d31a0208892c8bd0d49be4a.png

WireShark抓包报文结构分析

听说你要WireShark抓包的分析案例?DHCP来了!

openVPN客户端配置之macOS、Android操作指南

带内网络管理和带外网络管理有啥区别?

某度网盘人工审核不安全?家庭小NAS搞起来!

Netmaker服务器端快速搭建WireGuard网络

Wireguard配置文件详解

SD-WAN设备的串接透明部署怎么实现?

Windows Server2012 R2搭建NFS服务器

CentOS 7搭建NFS服务器

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Danileaf_Guo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值