VPN:

        虚拟专用网(VPN)被定义为通过一个公用网络(通常是Internet)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。我们从VPN的工作层次来看,大致可以分为链路层VPN(PPTP、L2TP)、网络层VPN(IPSecVPN GRE隧道)、SSL VPN、MPLS VPN 等。VPN技术主要用到了隧道技术、加解密技术、密钥管理技术和使用者与设备身份认证技术。为了更好的研究VPN,我们决定使用Sniffer抓包软件对SSL与IPSec VPN技术做一些分析。Sniffer是一款用于网络分析的软件,它的功能强大,已成为每个网络管理员的必备工具之一。

SSL VPN

        SSL(Secure socket layer)称为安全套接层协议,最初由Netscape公司开发的,被广泛应用于Internet上的身份认证以及Web服务器的用户端浏览器之间的安全数据通信。SSL协议工作在TCP/IP协议与HTTP等应用层协议之间,对基于 TCP/IP协议的应用服务是完全透明的。它提供的安全服务有客户和服务器双向身份验证(也可以进行服务器单方面的验证),数据加密保护和数据完整性保护三种安全性服务。SSL协议的主要特性包括保密性、身份认证和可靠性等。从协议组成上来看,SSL协议包括记录协议以及建立在记录协议之上的握手协议、警报协议、更改加密说明协议和应用数据协议等对会话和管理提供支持的子协议。我们再来看看IPSec VPN,IPSec(IPSecurity)是一套比较完整成体系的VPN技术,它规定了一系列的协议标准,它工作于TCP/IP的网络层。IPSec协议通过包封装技术,能够利用Internet可路由的地址,封装内部网络的IP地址,实现异地网络的互通。IPSec VPN 主要包括传输模式(Transport mode)和隧道模式(Tunnel mode)两种模式,IPSec把IP通信过程分为协商和数据交互两个阶段。这两个阶段分别由IKE(Internet KeyExchange)、AH(Authentication Header)、ESP(Encapsulating Security Payload)协议来规定。

        为了能抓到SSL的包,我们可以用浏览器去访问使用https协议的网站,同时设置好Sniffer的过滤器进行抓包分析。

一、测试环境(SSL 传输流程测试)


客户端:112.3.59.116  

服务端:74.125.71.99  (Google服务器)

整个通信过程由客户端发起,我们知道SSL协议是基于传输层的TCP协议的,所以它首先经过三次握手与服务器建立TCP连接,一旦连接建立成功,就进入SSL握手和数据传输阶段。https://www.google.com 为例来演示:

wKioL1TIUrnxryjiAANNIRd6RG4123.jpg

 

Sniffer软件抓包wKiom1TIUdvh5KCaAAvBwH0L0bg310.jpg

分析日志;

(1)  在1~3帧中,客户端与服务器先通过三次握手建立TCP连接,由于使用的是https协议,所以传输层的端口号为443。

(2)  第4帧开始,就进入SSL的握手阶段。客户端向服务器发送Client Hello消息,其中包含了客户端所支持的各种算法。从解码中我们可以看出主要包括RSA和DH两大类算法,由它们产生多种组合。同时产生了一个随机数,这个随机数随后将应用于各种密钥的推导,并可以防止重放攻击。

(3)  第5帧为对方发过来ACK确认帧,第6帧服务器发送Server Hello消息,其中包含了服务器选中的算法TLS_RSA_WITH_RC4_128_SHA,同时发来另一个随机数,这个随机数的功能与客户端发送的随机数功能相同。

(4)  第7帧服务器返回Certificate消息,其中包含了服务器的证书,以便客户端认证服务器的身份,并从中获取其公钥。同时服务器告诉客户端Server Hello Down,指明本阶段的消息已经发送完成。

(5)  第8帧为本地客户端发送给服务器的ACK确认。第9帧开始客户端向服务器发送Client Key Exchange消息,其中包含了客户端生成的预主密钥,并使用服务器的公钥进行加密处理。

(6)  此时,客户端和服务器各自以预主密钥和随机数作为输入,在本地计算所需要的4个密钥参数(其中包括2个加密密钥和2个MAC密钥),由于此过程并没有通过网络进行传输,所以也就没有在数据帧中体现出来。

(7)  在第9帧中客户端还向服务器发送ChangeCipherSpec消息,以通告启用协商好的各项参数。

(8)  第10帧服务器向客户端发送ChangeCipherSpec消息,第11帧客户端发来确认消息,协商阶段结束。

(9)  从第12帧到第24帧,都为服务器和客户端之间交互应用数据信息。它们都使用协商好的参数进行安全处理。

(10)由于TCP协议是面向连接的,最后的几帧为拆除TCP连接,由客户端发出FIN位为置1的TCP段,对方发来ACK确认帧以及FIN位为置1的TCP段,客户端再发出ACK帧进行确认,至此TCP连接释放,传输结束。

        以上是SSL的传输流程分析,再看看IPSec,IPSec在当今的信息安全领域中已占有举足轻重的地位,并且IPSec这项安全技术现已集成到IPv6网络中;

二:IPSec测试部署;

客户端   Windows XP   192.168.68.1

服务器端 Windows 2003  192.168.68.2

在服务器端装有FTP服务,采用用户名和密码进行登录验证。

(TP 登陆界面)

wKioL1TIUrqxp2YOAAEzYdtX2uI189.jpg

Sniffer软件抓包

wKiom1TIUduSNqo7AAeTulZaVgI454.jpg

 

    测试通过在客户端与服务器上定义新的IP安全策略,采用IPSec的Tunnel模式。通过客户端登录到FTP服务器读取文件来观察加密数据流的交互过程。

从全局来看,所有的数据包都是经过ESP(封装安全载荷)加密的,我们可以来观察一下IPSec数据包结构。

以太网帧头

IP包头

AH

ESP

对于FTP协议,由于是基于TCP协议,所以建立连接时必须要进行三次握手,但是由于已经建立了IPSec安全隧道,我们此时已经无法发现三次握手的具体交互过程,因为网络层及以上的内容已经全部经过ESP加密封装(在隧道模式下),这样数据传输的安全性就很大程度上提高了。此外我们还可以从IP数据包首部字段发现AH协议的协议号为51。

下面我们就针对AH和ESP协议做一些分析:

AH(认证首部),AH提供三类安全服务:数据完整性、数据源认证、以及抗重放攻击。我们可以通过Sniffer软件的解码来看看AH数据包的结构。如图所示:

0                7 8               15 16                            31

下一个首部             长度                           保留(0)

SPI

序列号

认证数据

AH报文格式

“下一个首部”字段指明了随后一个首部的类型,在这里我们可以发现字段值为ESP(0x32) ,说明下面的首部为ESP封装。

“长度”字段指明了AH首部的长度,在这里我们的长度字段值为24bit

“SPI”是IKE协商SA时指定的安全参数索引。

“序列号”是报文的编号,可以防止重放攻击。我们可以发现AH的序列号从4333开始,每次递增1。

“认证数据”即消息验证码,用以进行数据源认证并进行完整性校验。

SA用三元组标识,即目标IP地址,SPI和协议。在发送报文时要把所用SA(安全关联)的SPI加入;接受报文时要提取上述3个信息以便在SAD(安全关联数据库)中查找还原该报文的SA。

我们知道在应用AH时,可以有传输模式和隧道模式两种方式。在这里我们应用的是隧道模式,在这种模式下,加了一个新的IP头,AH头被插在新IP头和原IP头之间,如图所示:

新IP头

AH头

原IP头

高层协议头

数据

下面我们再来看一下封装安全载荷ESP

ESP提供五类安全服务:数据完整性,数据源认证、抗重放攻击、机密性以及有限的传输流机密性,其协议号是50,通过Sniffer解码,我们可以得到ESP报文格式:

0                               15 16             23 24             31

SPI

序列号

载荷(变长)

填充                       填充长度        下一个首部

认证数据(变长)

ESP报文格式

ESP首部包含“SPI”和“序列号”两个字段,其含义及用途与AH相同。载荷字段则是受保护的数据区,应用模式不同,数据内容也不同。

ESP尾部包括了“填充”和“填充长度”字段。在对数据进行加密处理时需要分组对齐。如果数据没有达到对齐要求,就要进行填充,并用填充长度指示填充的数据量。从我们的对数据包的解码来看,这里数据量已经达到要求,所以并没有设置填充和填充长度字段的值。

“下一个首部”字段指明了受保护数据区中的第一个首部字段,由于我们的ESP下方已没有首部,所以该字段值也被设置为空。

使用隧道模式的ESP报文封装如下图所示:

新IP头

ESP头

IP头

高层协议头

数据

ESP尾

最后,经过数据包的四个交互过程,TCP连接释放。至此,传输结束。

通过测试对SSL和IPSec VPN技术会有个基本认知;

你可能感兴趣的内容
0条评论

dexcoder

这家伙太懒了 <( ̄ ﹌  ̄)>
Owner