APP下载

一种IPv6隧道环境下数据逃逸的防御策略

2014-04-29崔宇

智能计算机与应用 2014年2期
关键词:安全隧道

崔宇

摘 要:隧道技术是IPv4向IPv6过渡阶段的重要研究内容,为无IPv6物理接入的用户提供基于隧道的IPv6接入,使其可提前使用IPv6网络。为提高隧道网络的安全性,本文对隧道流量对安全设备的影响进行了研究。指出隧道技术可被攻击者利用实施针对网络边界安全设备的数据逃逸,攻击网络内部主机。因此,本文提出了基于隧道分类的防御方法,通过在特定结构中增加外层包头的相关信息对不同流量进行分类,抵御上述攻击。实验表明,该方法具有较好的时间和空间复杂度,对系统负载影响较小。

关键词:IPv6; 安全; 隧道; 数据逃逸

中图分类号:TP393 文献标识码:A 文章编号:2095-2163(2014)02-

A Data Evasion Defending Strategy based on Tunnel Classification

CUI Yu1, TIAN Zhihong1, FANG Binxing1,2

(1 Research Center of Network and Information Security, Harbin Institute of Technology, Harbin 150001, China;2 Beijing University of Posts and Telecommunication, Beijing 100876, China)

ABSTRACT:Tunneling is one of the key researches in the transitioning from IPv4 to IPv6 networks. It provides a feasible method for the end customers to connect to IPv6 Internet even if they have no native IPv6 connections. To improve the security of tunnels, this paper studies the influence of tunnel traffic on the security devices, and points out that tunnels could be exploited by attackers to perform data evasion on the security devices and attack internal hosts. Therefore, this paper proposes a defending strategy based on tunnel classification (TCDS). By defining external headers in recording structures and comparing from the outermost to innermost headers, TCDS could effectively classify different traffics. Experimental results show, TCDS is with favorable time and space complexity which has little effect on the system load.

KEYWORDS: IPv6; Security; Tunnel; Data Evasion

0 引 言

在IPv4网络向IPv6网络升级推进的过程中,隧道技术可给还未部署物理IPv6网络的主机提供接入IPv6网络的方法,使其可提前使用IPv6的相关服务,由此即有效推动了IPv6的发展。但是,由于隧道技术使得更多节点暴露在子网外部(比如NAT网络),如此则导致了在为普通用户提供IPv6网络接入的同时,也为攻击者提供了潜在目标。更进一步,攻击者可以利用暴露节点作为源起而对整个内部网络发动攻击。因此,防御利用隧道技术进行的针对暴露主机的攻击行为是维护网络安全和稳定的重要因素。

网络边界安全设备通过监听进出子网的数据流量,检测是否存在恶意的攻击行为,维护网络安全。但是,目前网络安全设备缺少对利用隧道进行数据逃逸的检测机制,如snort、wireshark等重要的工具均未能有效检测隧道的数据逃逸行为,因此研究隧道数据逃逸防御方法具有重要的意义。本文组织结构如下:第一节叙述相关工作;第二节说明隧道数据逃逸的方法;第三节提出对应的防御方法;第四节进行测试;第五节总结全文。

1 相关工作

现有研究文献中,安全设备对隧道流量的支持主要包含两个方面:扩展包头及协议处理和隧道流量过滤。下面将分别展开具体论述。

1.1 扩展包头及协议处理

文献[1]提出了利用分片包头和目的选项包头进行TCP包头替换的方法,可使外部主机向内部主机发起主动连接。而防火墙一般只允许网络内部主机的主动连接、避免内部网络探测。文献[2]对防火墙上ICMPv6协议的过滤策略进行了详细分析,指出与IPv4相比可分为三部分:(1) 与IPv4过滤策略对等;(2) IPv6新增协议的过滤策略;(3)防火墙需响应的ICMPv6选项。文献[3]指出IPv6允许一个接口配置多个IPv6地址,由此对防火墙或入侵检测设备而言,基于IP地址的过滤策略不再有效。而采用前缀进行地址过滤时,由于地址的多种自动配置方法的存在,正常地址也将会过滤掉,这就决定了防火墙必须记录所有地址,显然对防火墙而言任务量过于巨大。文献[3]只是提出该问题,而未给出解决方法。文献[4]指出RFC标准并未对IPv6扩展包头的使用规则进行严格规范,未明确限制扩展包头出现的顺序和次数,如此就导致防火墙在针对IPv6扩展包头处理流程的设计上存在不确定性。但若支持所有扩展包头排列组合,在设计上却存在较大难度。因此该文建议采用最简单的default-deny策略,将不符合基本规则的数据包直接扔掉。但同时却也指出,该方法可能会破坏IPv6扩展包头的诸多功能,因而不能作为长效机制。

1.2隧道流量过滤

文献[5]指出,目前防火墙主要以IPv4为主,网络管理员若只对防火墙进行简单的IPv6升级并不能过滤隧道流量,因为其无法对所有隧道流量进行识别。例如利用3544端口Teredo隧道进行过滤,可阻止Teredo隧道的建立,但对已经建立的Teredo隧道则表现为无效。另外,如果存在多层NAT,当过滤外层NAT时就会引发内层NAT端口误封,由此影响内层NAT设备的正常运行。文章还讨论了对隧道流量进行深度包检测的问题,指出除了隧道边界,其它位置的DPI设备均无法检测出所有的隧道流量,因此就不能实行有效的过滤规则。其它类型的隧道,如tunnel over http采用与http连接相同的80端口,这就使得无法通过简单的方式进行过滤,而必须检查所有数据,再通过启发性的发掘才能确定是隧道数据还是正常的http数据。但这一做法却可能在相当程度上增加系统处理的时延,而且降低系统吞吐率。文献[6]指出由于目前大部分防火墙和入侵检测系统只能处理最外层的过滤、或者独立进行IPv4和IPv6的过滤,导致隧道数据包可轻易穿过这些防火墙,因此文中利用Linux Netfilter设计并实现了一套隧道流量过滤系统,能够有效地识别6in4和4in4的隧道流量,进而实现地址级别的过滤。该方法中,IPv4和IPv6仍是独立运行,并未考虑两者关联,比如6to4隧道IPv6包含隧道边界的IPv4地址,若不经由正确性验证就容易引发欺骗攻击。文献[7]则认为在过渡阶段隧道已经大规模使用,且6to4、ISATAP、Teredo等隧道自动配置特点使其得到了广泛部署,因此对隧道流量进行过滤即具有了切实合理的明确需求。于是就提出了防火墙过滤各种隧道流量的以隧道特征为基础的过滤方法,包括6in4、6over4、6to4、6rd、Teredo、ISATAP、Tunnel Broker、AYIYA。具体包括外层IPv4地址的过滤,内层IPv6地址的过滤两种方法。文章同时指出,在过滤IPv6流量的同时,由于主机并不知道其IPv6流量已经过滤,这时需要切换IPv4连接,但这需要一定时间,影响效率。因此作者认为在防火墙过滤隧道流量的同时,也需考虑DNS问题,使主机无法得到AAAA记录,终端用户也将随之不会进行IPv6连接。

2 隧道数据逃逸方法

传统安全设备只识别最内层IP包头,忽视外层包头,因此为隧道提供了数据逃逸的可能性。本节以6to4、Teredo两种广泛使用的隧道为例,说明攻击者利用隧道进行数据逃逸的基本方法。

2.1 6to4隧道

图1所示为利用6to4隧道进行数据逃逸的基本方法。假设攻击者具有2.2.2.2的公网IPv4地址,则其可以为自身配置2002:2.2.2.2::3的6to4隧道地址,由此攻击者即可以与其它6to4主机进行连接,并进行攻击。图1中右侧网络公网IP为1.1.1.1,利用6to4隧道,其内部节点分别配置了2002:1.1.1.1::1和2002:1.1.1.1::2的6to4地址。假设攻击者需要对主机B进行攻击,则攻击者可以首先发送数据包1,安全设备将判定数据包1是攻击者到主机B的数据而进行检查,但由于该段是正常数据,因此可以正常通过安全设备。其后,根据第二层IPv6包头,会将该数据包转发给主机A,并由主机A实现丢弃。攻击者又一次发送了数据包2,该数据包含有恶意数据。由于数据包1的存在,安全设备会误认为数据包2为数据包1的重复包,因此不会产生进一步反应。由此,数据包2亦可通过安全设备,并转发给主机B,如此即形成了针对主机B的攻击。

图1 基于6to4隧道的数据逃逸

Fig.1 Data Evasion by 6to4 Tunnel

2.2 Teredo隧道

利用Teredo隧道进行数据逃逸的基本方法可如图2所示。与6to4方式不同,Teredo使用了UDP协议为第二层包头。

图2 基于Teredo隧道的数据逃逸

Fig.2 Data Evasion by Teredo Tunnel

图2中,目标CA主机处于NAT网络环境下,而这也是UDP隧道的标准使用环境。在此种环境下,连续的两个数据包可以采用数据插入或者数据逃逸的方式进行针对安全设备的攻击,使安全设备无法还原出终端主机接收的恶意数据,从而成功逃避攻击检测。伪造数据包的UDP端口在NAT设备对应的UDP端口映射中可能并不存在,故而可直接丢弃。

3 基于隧道分类的防御方法

基于隧道分类防御方法(Tunnel Classification based Defending Strategy, TCDS)的基本思想是将数据包所属的隧道类型进行存储,存储后通过比较区分不同的隧道流量。本节将从数据存储、分类过程两个方面对其进行说明。

3.1 TCDS数据存储

TCDS需要对外层包头相关信息进行存储,相关的包头主要有IPv4、IPv6和UDP三种,首先对三种包头需要存储的内容进行分析。为了缩减空间,可以只提取三种包头的有效信息,及影响流量分类的信息。一般情况下,经典系统中主要使用源和目的IP地址、源和目的端口为区分标识,因此TCDS也提取上述标识为区分标识,如表1所示。

表1 IPv4/IPv6/UDP包头存储字段

Tab. 1 Recording Parameters for IPv4/IPv6/UDP Headers

Protocol Parameters Length(B)

IPv4 Source & Destination IPv4 Addresses 8

IPv6 Source & Destination IPv6 Addresses 32

UDP Source & Destination Ports 4

由表1可以看出,经过提取,IPv4、IPv6和UDP包头分别需要8、32和4字节的存储空间。下面即具体说明如何将外层包头信息进行存储。为保证安全设备的处理速度,选定静态方式作为存储方式,存储格式如图3所示。其中“TL”表示内存空间实际使用的字节数。“Type”表示该层包头的形式,可能为IPv4、IPv6或UDP。“S & D”表示与“Type”对应的源和目的IP地址,或源和目的端口信息。

图 3 TCDS存储格式

Fig. 3 Format on TCDS Record

理论上,256字节的存储空间可容纳最多7层IPv6包头、或25层IPv4包头(通常,UDP包头最多出现一次,且UDP包头所需空间仅为2字节)。根据某骨干路由器上一段时间的统计,隧道层数出现的最大数量为4层,因此256字节的空间可足够容纳现网流量中的隧道类型。并且,可视超过7层的隧道流量为异常流量,此时极有可能是出现了攻击行为。

对于安全设备而言,因为要进行流量还原,就需要进行TCDS存储的结构主要是能够进行流量还原的结构,这将包括:

(1) 分片重组结构,典型为fragments数据结构;

(2) TCP流表,典型结构为tcp_stream等。

下面给出外层包头的存储算法,如算法1所示。在解析每个外层包头时,首先读取TL变量,获得本包头的写入位置,写入对应类型和对应信息后,更新TL变量,即完成本层包头的信息记录。TCDS存储算法如下:

Input:数据包p,存储空间指针buffer

Output:存储后的buffer

(1) procedure Record_TCDS(Pakcet *p, buffer)

(2) TL ← TL of buffer

(3) Typei ← type of this layer in p

(4) if Typei is IPv4 then

(5) write 4 of this layer in p at offset TL

(6) record SIPv4 & DIPv4 at TL + 2

(7) update the length of TL to TL + 8

(8) else if Typei is IPv6 then

(9) write 41 of this layer in p at offset TL

(10) record SIPv6 & DIPv6 at TL + 2

(11) update the length of TL to TL + 32

(12)else if Typei is UDP then

(13) write 17 of this layer in p at offset TL

(14) record Sport & Dport at TL + 2

(15) update the length of TL to TL + 4

(16)else

(17) return

(18)end if

(19)end procedure

3.2 TCDS分类过程

TCDS的比较需要从外层包头逐层向内层包头进行,基本运行逻辑如图4所示。

图 4 TCDS分类过程

Fig. 4 Process of TCDS Classification

图4中,系统从最外层包头进行拆包,分别将外部两层包头填入临时存储结构tcdstmp。若需进行比较,则与系统中存储的tcdsrec结构进行比较。相同,即表明是同一个隧道流。TCDS的比较算法如下:

Input:临时存储结构tcdstmp,存储的结构tcdsrec

Output:比较结果

(1) procedure compare_TCDS(tcdstmp, tcdsrec)

(2) TLt ←tcdstmp.TL

(3) TLr ←tcdsrec.TL

(4) if TLt != TLr then

(5) return diff

(6) else

(7) if compare(tcdstmp, tcdsrec, TLt) then

(8) return diff

(9) else

(10) return same

(11) end if

(12) end if

(13) end procedure

4 实验

理论上,安全设备中每个需要进行流量区分的处理流程(如分片重组、TCP还原)均可使用TCDS方法。此时,在相应存储结构中分别预先定义256字节的存储空间。设N为安全设备中分片重组和TCP还原涉及结构体的总量,两者所需内存空间分别为256N字节,空间复杂度均为O(N),线性增长。以Snort为例,默认情况下IP分片和TCP流表分别为8 192和262 144个,则TCDS需要2MB和64MB的存储空间(Snort最大支持1 048 576个TCP流,则TCDS需要256MB的存储空间)。因此,TCDS不会对安全系统的内存产生很大负载。

相对于空间复杂度,时间复杂度对安全设备的影响更大,由于TCDS对每个流经的数据包均需进行计算,这就会降低安全设备的处理能力。每个数据包的每层包头也都需要进行计算、存储和比较,因此时间复杂度均为O(K),K为隧道层数。下面将通过实验对TCDS性能进行分析。

实验在CPU主频2.4GHz、物理内存16GB的服务器上进行。所用隧道种类从一层IPv4、IPv6到5层IPv4、IPv6,包头种类交叉的方式也内含其中。每种隧道生成100万TCP数据包,统计TCDS方法与原始方法相比的用时,进而分析TCDS方法对系统性能的影响。部分实验结果如表2所示。

表2 TCDS计算时间增加比例(%)

Tab. 2 Time increment in TCDS in percentage

Type TCDS Avg Type TCDS Avg

4 0.48 0.48 6 0.68 0.68

44 0.97 0.49 66 1.82 0.91

444 1.71 0.57 666 3.11 1.04

4444 2.26 0.57 6666 4.26 1.07

44444 2.62 0.52 66666 5.15 1.04

表2所示结果表明,TCDS方法每层最多增加1.07%的计算时间,对系统负载的增加较小。同时随着隧道层数的增加,处理的时间复杂度将有所增加,主要是由于比较长度增加导致。包头交叉的情况与表2所示情况类似,限于篇幅,文中并未列出。

5 结束语

本文对利用隧道技术实施的针对安全设备的数据逃逸技术进行了分析,提出了基于隧道分类的防御方法,该方法通过在系统特定结构内存储相应的外层包头信息对不同的隧道进行区分,从而抵御隧道模式的数据逃逸。实验表明,该方法对系统负载影响较小,每层包头平均不超过1.1%的时间增加。

参考文献:

[1] KRISHNAN S. Handling of Overlapping IPv6 Fragments. RFC 5722. 2009.

[2] SHARMA V. IPv6 and IPv4 security challenge analysis and best-practice scenario [J]. Advanced of Networking and Applications, 2010, 1(4):258-269.

[3] VINEETH M V, REJIMOAN R. Evaluating the performance of IPv6 with IPv4 and its Distributed Security Policy[C]//Proceedings of 2013 IEEE Conference on Information and Communication Technologies (ICT 2013).:59-63.

[4] ALANGAR V, SWAMINATHAN A. IPv6 Security: Issue of Anonymity[J]. International Journal of Engineering and Computer Science ISSN, 2013,2(8) :2486-2493.

[5] KRISHNAN S, THALER D, HOAGLAND J. Security Concerns with IP Tunneling, RFC6169, 2011, 4.

[6] LEE W-J, HEO S-Y, BYUN T-Y. A secure packet filtering mechanism for tunneling over Internet[C]//Proceeding ICESS '07 Proceedings of the 3rd international conference on Embedded Software and Systems. Daegu, South Korea. 2007, 641-652.

[7] GONT F, LIU W. Security Implications of IPv6 on IPv4 Networks. draft-ietf-opsec-ipv6-mplications-on-ipv4-nets-05,2013.

猜你喜欢

安全隧道
与隧道同行
神奇的泥巴山隧道
黑乎乎的隧道好可怕
LED隧道照明节能改造探讨