IPv6入侵防御技术研究


随着计算机及通讯技术的飞速发展,互联网更以超乎想象的速度膨胀,IP业务的爆炸性增长,IP网络上应用的不断增加,使得原有的IPv4网越来越显得力不从心。IP网络正在向下一代网络演进。而IPv6无疑将是下一代网络(NGN)的核心,除了带来地址空间的增大,还有许多优良的特性,比如在安全性、服务质量、移动性等方面,其优势更加明显。

与此同时,由于IPv4的广泛应用,决定了从IPv4向IPv6的过渡将是长期的,渐进的。在这期间,将采用不同的过渡策略解决IPv4和IPv6的互连互通问题,具有代表性的过渡策略解决方案主要包括双协议栈方式,隧道方式和协议翻译。在过渡期间网络上的数据流量将呈现出复杂化的趋势,其中不仅包括IPv4的流量还包括IPv6的流量,以及IPv6 over IPv4或者IPv4 over IPv6的隧道包流量。

在这种新的网络环境中网络攻击必然呈现新的特征,也对我们的安全技术和产品提出了新的挑战。特别是对于近两年新兴的入侵防御技术,该技术使入侵检测系统联动防火墙,与传统单一的防火墙相比,入侵防御系统IPS(Intrusion Prevention System)对数据包的控制能力检测也得到大大加强,对应用层和高层协议的检测能力有了质的飞跃。同时入侵检测技术能实时、有效的和防火墙的阻断功能结合,在发现网络入侵的同时,联动防火墙采取行动阻止攻击,大大简化了系统管理员的工作,提高了系统的安全性。但由于入侵防御技术本身提出不久,在IPv6尚未真正大规模应用的情况下,鲜有对该技术在IPv6环境下如何实现的研究,因此研究新的IPv6环境下的入侵防御技术,对于保障IPv4向IPv6过渡的阶段和未来IPv6环境下的网络安全有着重要的意义。

1  IPv6网络安全问题

从IPv4到IPv6网络地址空间由32位增加到128位,使得IPv6的地址数量远远超过IPv4的地址数量,因此将很难通对网段内地址空间内IP地址逐一发送试探数据包的方式进行。但是可以预见,扫描攻击在IPv6环境下肯定依然存在,只是在新的网络环境下,IPS对扫描行为的检测会重点集中到,针对某些主机或某个主机的扫描行为上。

传统的IPv4协议对网络的安全性考虑不足,IPv6协议将IPSec协议作为IPv6的组成部分,极大的增加了安全性。这是通过AH和ESP标记以及相应的密钥管理协议PKL来实现的。由于IPSec协议可以提供数据源认证和通信数据的加密保护,攻击者将无法使用IP地址欺骗,TCP序列号欺骗等手段对系统实施攻击。因此IPv6环境下的IPS可以认为受到IPSec保护的数据流是可信的,省略对该类型数据包的检测,从而提高IPS的检测效率。

IPv6下数据包分片也和IPV4不同,数据包只由信源节点进行分片,中间路由器不进行分段,因此在报文传输过程中分段长度不会发生变化。这可以为IPv6下检测利用分片来逃避规则匹配的攻击提供新的方法,如果发现同属一个原始分组的分段数据包中分片除最后一个分片)的大小不一致时,即可认为该数据包存在异常,这样就不必等到将所有分片重组成为一个包含完整信息的包以后,再传给检测引擎进行规则匹配。

IPv6 要求网络传输路径上的每条链路具有 1280 或更多个八位组的 MTU。除了某些特殊的IPv6报文,如ICMPv6报文、分组报文的最后一个分段外,IPv6数据包的大小不应小于1280个八位组。所以可通过对IPv6数据包的大小的检测,发现异常的数据流量,例如对IPv6数据包的大小进行统计,根据统计数据设立一个IPv6包大小的阈值,如果IPS检测到数据包小于该值,就可以将该数据包列为可疑对象。

IPv6下攻击者可以利用IPv6基本报头的跳数限制字段类似于IPv4报头中的TTL),试探从本地到达攻击目标的路径,方法是发出跳数字段值逐次递增的数据包TCP/UDP),然后根据目的不可到达报文的信源地址,依次重构出路径。因此IPS需要能够检测出可能的路径试探数据包。如果到达受保护网络的数据包的跳数限制字段值是1时,可能的是潜在的路径试探。所以可以通过设立针对跳数限制字段的检测规则,发现IPv6下的路径试探。

在IPv4到IPv6的过渡环境里,将会存在大量的隧道包,包括IPv6 over IPv4和IPv4 over IPv6,攻击者可以构造隧道攻击,向受攻击主机发送攻击数据包。因此IPv6下的入侵检测必须具备分析检测隧道数据包的能力。

另外,IPv6对传统防火墙也有不小的冲击。对于包过滤型防火墙,由于IPv4的IP层和TCP层是紧挨在一起的,长度也基本固定,因此防火墙可以很快找到报头并使用相应过滤规则,而IPv6在IP层将会大量用到扩展报头,致使防火墙只有逐个找到下一个报头直到TCP或UDP为止,才能进行过滤。这样在高带宽下,将对性能造成很大影响;对于地址转换型防火墙,由于地址转换技术(NAT)和IPSec在功能上不匹配,很难穿越地址转换型防火墙利用IPSec通信。比如当用AH地址进行认证时,因为IP层也是认证的对象,因此不能转换;至于应用代理型防火墙,因为其主要工作在应用层上,所以受IPv6冲击较小。

由于绝大部分的网络安全问题并不是由网络层引起的,例如某些网络应用程序中的缺陷,不当的系统配置等,在IPv6环境下这些安全隐患依然存在。这也要求我们的IPS要易于配置,有着友好的用户配置和管理界面。

2  系统设计

本系统是在相关课题下进行IPv6环境下新型的入侵检测及防御技术,特别重视能检测IPv4/IPv6共存网络环境下的各种网络入侵、高速网络数据采集技术,设计和开发在发现入侵后的主动响应和入侵防御功能。在设计上充分考虑到上述所提到的IPv6网络安全问题。

本系统在功能上可分为主控模块、高速网络数据采集、双协议解析引擎、检测引擎预处理模块、漏洞攻击特征规则处理、检测引擎处理模块、报警日志记录、主动阻断反应、流量特征分析、图形化管理。以下对各模块的功能和技术要点进行描述:

主控模块:系统初始化、以及各功能模块的相关调用。

高速网络数据采集:本系统的设计目标之一就是要能适应百兆带宽下的入侵防御,该模块作为入侵检测的重要的第一步,也是决定了该系统能否适应高速网络的关键一环。这里,我们采用“零拷贝”技术,实现百兆带宽下线速抓包。

双协议解析引擎:本模块必须同时具有IPv4协议解析引擎和IPv6协议解析引擎,可同时解析这两种网络协议,特别重要的是,我们通过两种协议解析引擎的交互机制,可以准确方便地解析所有IPv6 over IPv4隧道数据包和IPv4 over IPv6隧道数据包。同时,本模块实现深度协议解析的功能,特征模式匹配虽然是主要技术,但存在速度慢,效率低等缺点,协议分析是新一代IDS探测攻击手法的主要技术,它利用网络协议的高度规则性快速探测攻击的存在。

检测引擎预处理模块:本模块在协议解析之后,规则匹配之前进行,主要对数据包进行预处理,以方便后续处理模块对数据包的匹配。对于IPv6来说,必须实现的预处理功能有IPv6的分片重组、IPv6端口扫描等。

漏洞攻击特征规则处理:本系统的入侵检测功能是基于模式匹配的,为了高效快速地对已知攻击特征进行匹配,根据对各种IPv4 和IPv6攻击特征的分析,设计一种可以描述该攻击特征的语言规则。需要将已知的攻击规则在内存中有效的组织建立起来。因此我们设计了同时支持IPv6和IPv4的入侵规则树。

检测引擎处理模块:本模块是系统的核心,根据漏洞攻击特征规则处理模块建立的规则树结构进行规则匹配。当数据包到来后,首先根据规则头进行匹配,然后对规则头已匹配的数据包进行规则选项的匹配,其中规则头和规则选项的匹配内容见图3。 最后,规则选项匹配里数据包负载内容的匹配是关键,一个好的匹配算法至关重要,本系统采用了著名的Boyer-Moore算法。

报警日志记录:报警实时写入文件并显示,并将日志写入MySQL数据库,可供后续分析及流量特征分析模块使用。

主动阻断反应:本模块是本系统的重要部分,要能同时支持IPv4/IPv6的主动阻断,具体描述见第四节。

流量特征分析:根据数据库中日志和报警信息,进行基于异常的检测,这种方法的优点是能发现未知的攻击,缺点是相比模式匹配有时会不太准确,因此可以二者结合,作为模式匹配有益的补充。

图形化管理:入侵报警信息分析采用基于B/S模式设计,通过后台MySQL数据库存储IPv6/IPv4网络上各个时间段的网络流量数据,包括日报表、月报表和年报表。并同时存储报警信息。前台使用PHP语言加上Apache HTTP服务器系统,给用户提供友好的WEB操作界面。因为报警信息是敏感数据,因此是使用时用Apache的SSL模块来加密传输数据。

3  实现主动防御的关键技术

Ip6tables是Linux环境下基于IPv6的开放源代码的网络防火墙软件。我们IPv6的入侵检测系统拟采用与Ip6tables相结合,实现对入侵的主动阻断反应,实现主动防御。当处于此种主动阻断模式的时候,该系统兼有防火墙和入侵检测系统两项功能,实现入侵防御。这时候,不同于一般的入侵检测旁路Sniffer模式,该系统将象防火墙一样,配置在网络的入口处,处于路由模式,转发内外网的数据包。

主动阻断反应要能同时对IPv4和IPv6下的数据包实时阻断,IPv6下我们用防火墙ip6tables来实现,ip6tables的扩展功能模块ip6_queue.o通过接口netlink socket可以将核心态的数据包发向用户空间的程序对IPv4是在iptables 中的模块ip_queue.o)。同时,本系统在数据采集子系统的功能发生改变,不直接从链路层抓包,而是作为用户空间的程序从ip6tables/iptables的ip6_queue/ip_queue模块产生的数据包队列中获取数据包,再进行模式匹配,利用内置的规则查询是否存在攻击行为,若有,则根据规则配置,决定该数据包的命运:我们设计有三种动作:DROP、ACCEPT和REJECT(复位)。执行动作后,最后将结果返回到Ip6tables中,由Ip6tables执行过滤结果,若需要还要重新将修改后的数据包重新注入到内核中交Ip6tables转发。 

功能实现要点

实现对IPv4和IPv6两种数据包的同时抓取是本模块实现的时候的一个重点。通过实验发现,两个队列(ip6_queue和ip_queue)的包在抓取的时候会相互阻塞对方的取包函数。为了解决这个问题,采用多线程技术,即派生出两个线程分别控制ip_queue和ip6_queue数据包队列,从中读取数据包,这样将不会造成阻塞。经试验发现,派生双线程对系统性能的影响非常小,两个抓包线程互不冲突,抓包正常、及时。

多线程取包算法用的是生产者/消费者问题的原理:两个生产者不断地从两个队列中取得数据包交给消费者主线程)进行处理。但是由于需要对包进行操作如DROP),所以生产者一次只能生产一个数据包,等这个包被消费后它才能继续生产。因为同时有两个生产者在工作,为了让消费者知道当前要处理的包是IPv4的还是IPv6的,需要准备一个队列存放两个包产生的先后顺序,以避免处理数据包产生的混乱,消费者会根据从队列中取得的版本值自动取用相应生产者生产的数据。

另外对于某些攻击将构造复位包,使连接复位,即执行动作REJECT。我们通过Libnet函数库来构造复位包,该库提供的接口函数主要实现和封装了数据包的构造和发送过程,基于TCP/IP协议,对TCP连接采用发RST包的形式使连接复位;对UDP发ICMP/ICMPv6端口不可达数据包,复位UDP连接。

4  结束语

在本文中,我们描述了在IPv6新环境下实现入侵防御系统(IPS)的技术路线和框架,并对其中的关键技术进行了探讨,系统的入侵检测部分IDS)参考了开放源代码软件snort,同时根据IPv6协议的不同对其进行了重大改进。在大型网络规划中,单纯依靠防火墙的被动静态防御难以抵挡复杂化、融合化的各类混合式攻击,无法监视内部用户的未授权访问。同时,单纯的入侵检测功能也无法实时而有效的遏制攻击。IPS已经成为IPv6网络安全立体纵深、多层次防御体系的重要组成部分。该系统的实现为IPv4向IPv6过渡阶段提供了一种有效的保障。

在最后的实现和测试过程中,本系统能提供给用户简洁的配置管理界面,并能有效地检测和阻止多种攻击,达到了设计研究的目的。同时,实验中也发现一些不足,采用ip_queue和ip6_queue模块和netlink接口方式将数据包发回用户空间,将延缓数据的处理速度,影响系统性能。在这一点上可以进行以下改进:将一部分规则匹配的功能以内核模块的方式运行在内核空间,以此来提高性能,具体就是把规则头匹配的工作放在内核空间进行,如果规则头不匹配,则在内核空间就立刻被抛弃;只有在规则头匹配的情况下,再将数据包拷贝到用户空间,进行规则选项的匹配。这样做可以大大提高数据的处理速度,该方案具有一定的挑战性,将是我们下一步的工作。

相关内容