基于Snort的IPv6入侵检测系统的研究

时间:2022-08-18 06:38:39

基于Snort的IPv6入侵检测系统的研究

摘要:本文以著名的开源网络入侵检测系统Snort为基础,通过跟踪国内外网络入侵检测系统的研究动向和Snort的研究热点,在对Snort源代码进行分析的基础上,提出Snort系统在IPv4向IPv6过渡阶段的相应改造方案。通过构造IPv6检测规则,添加IPv6解码模块,IPv6分段重组, IPv6快速检测算法以及对过渡技术的支持,实现了一套同时支持IPv4 、IPv6和过渡技术的入侵检测系统。

关键词:入侵检测;网络安全;IPv6;Snort

中图分类号:TP393.08 文献标识码:A文章编号:1009-3044(2007)05-11253-02

1 Snort入侵检测系统

Snort是一个轻量级网络入侵检测系统,具有实时数据流量分析和日志IP网络数据包的能力,能够进行协议分析,对内容进行搜索/匹配,能够检测各种不同的攻击方式,对攻击进行实时报警[1]。

1.1 Snort系统架构

Snort入侵检测系统主要由四部分组成:数据包嗅探器、预处理器、检测引擎、报警输出模块。系统体系结构如图1所示。

图1 Snort体系结构

预处理器、检测引擎和报警模块都是插件结构,插件程序按照Snort提供的插件接口完成,使用时动态加载,在不用修改核心代码的前提下可以扩展Snort的功能和复杂性。这样既保障了插件程序和Snort核心代码的紧密相关性,又保障了核心代码的良好结构[2]。

1.2 Snort系统工作流程

Snort的基本功能是数据包嗅探器,然而数据包嗅探只是Snort工作的开始,Snort取得数据包后先用预处理插件处理,然后经过检测引擎中的所有规则链,如果检测到有符合规则链的数据包,则系统就会根据输出设置把该信息记录到文件并报警。

2 网际协议IPv6

2.1 IPv6的安全体系结构

2.1.1 网络安全问题

IPv4协议在安全方面存在以下几类问题:(1)IP地址欺骗;(2)缓冲区溢出;(3)拒绝服务攻击;(4)电子窃听;(5)会话窃夺。

2.1.2 IPSec协议集

IPSec的目标是提供既可用于IPv4也可用于IPv6的安全性机制,该服务由IP层提供。一个系统可以使用IPSec来要求与其他系统的交互以安全的方式进行一通过使用特定的安全性算法和协议。IPSec提供了必要的工具,用于一个系统与其他系统之间协商彼此可以接受的安全性。IPSec中考虑了访问控制、无连接的完整性、数据源身份认证、对包重放攻击的防御、加密、有限的业务流机密性。IPSec协议集是由三部份组成:AH协议、ESP协议、KE协议。

2.2 IPv4向IPv6的过渡

2.2.1 过渡策略的主要目标

(1)要确保过渡方式是逐步的渐进的,以保护IPv4网络设备的投资;

(2)要确保IPv4网络体系和IPv6网络体系是相互渗透,长期共存的,就要求IPv4和IPv6 网络设备彼此可以互连互通;

(3)要确保在过渡的过程中,IPv4向IPv6升级的费用应尽可能地低,过渡技术应尽可能地简单。

2.2.2 基本过渡策略

Internet专门的IETF Ngtrans工作组针对如何在IPv4占绝对地位的网络中妥善地引入IPv6,而且必须保证IPv4和IPv6互相连通的可能性,提出了一系列的解决方案,其中有代表性的过渡机制主要有以下三种:(1)双协议栈方式(Dual stack ) ;(2)隧道方式(tunnel ) ;(3)协议翻译。

3 IPv6下入侵检测的关键问题

3.1 IPv6包的捕获

网络数据包捕获模块是网络入侵检测系统的基本组成部分,是实现整个入侵检测系统的基础。Snort正是利用Libpcap库函数在数据链路层实现了数据包的快速捕获。基于IPv6的网络入侵检测系统采用库文件WinPcap来实现包捕获模块,这样可以不了解网络的数据链路层细节。WinPcap是基于BSD系统内核提供的BPF设计的,利用BPF的信息过滤机制可以去掉用户不关心的数据包,从而提高系统工作效率。WinPcap是用于windows平台的包捕获技术,它是由意大利人Fulviorisso和LorisDegioanni等人提出并实现的。WinPcap的基本结构如图2所示。

图2 WinPcap结构图

3.2 协议解码模块

snort2.0.0入侵检侧的设计思想中,解析完数据链路层协议后就调用了相应的DecodeIP()函数解析IPv4协议和Decodeipv6()解析IPv6协议。

DecodeIPv6(): IPv6头解析函数,该函数首先对IPv6头的几个字段进行检查,如果发现异常就发出警报并退出函数。因为在IPv6中对IP头进行了简化,所以对IPv6头的检查比较简单,不像在IPv4中那样复杂。虽然IPv6对IP头进行了简化,这对IPv6包的路由策略是个很好的简化,但是网络通信协议的一些必要的功能在IPv6中不但没有减少,相反还提供了广阔的扩展空间,这些功能在IPv6中是通过IPv6扩展头实现的。所以在解析IPv6协议时还要根据IPv6头中下一个头字段的值来调用不同的函数来解析IPv6扩展头。IPv6扩展头的出现是有一定顺序的,所以在解析扩展头字段值时如果出现了不应该的值就丢弃该数据包并记录日志。

3.3 IPv6 分片重组在SNORT 中的实现

Snort 利用二叉树的数据结构来存储和搜索每一个分片包。Snort 根据源地址、目的地址、分片标志和下一个头的类型这四个元素来惟一地标志属于同一个原始IP数据包的所有IP分片包,通过在二叉树中以这四个元素为依据来搜索和存储每一个分片包。在将新收到的分片包插入到二叉树之前,系统会实施一系列的检查,主要是检查是否发生分片重复和存在分片空洞。

将每一个分片包插入二叉树的对应节点之后,就应该检查是否所有的分片包都已经到达。分片到齐的首要条件是第一个分片包和最后一个分片包已经到达,接着就要检查该二叉树上属于同一个原始IP数据包的所有IP分片包了,实际上是检查每一个分片包的分片偏移量是否正好等于上一个分片包的分片偏移量加上一个分片包的分片大小。如果检查完所有分片包后发现没有空洞存在,那就表示所有的分片包都已经到齐,可以进行重组操作了。将所有到齐之后的分片包重组起来的操作由RebuildFrag (FragTracket *ft,Packet *p)函数来完成。

3.4 基于Snort的IPv6检测规则

Snort的规则分为两部分:规则头和规则选项。规则头由响应方式, 协议类型,源IP地址、源端口、目的IP地址和目的端口组成。规则选项包括日志信息、入侵特征字符串、攻击类型、攻击严重程度、攻击编号(sid)等。根据Snort规则特点和IPv6协议规范,对IPv6入侵检测规则的编写可以分两种情况来考虑:对应用层攻击的检测和对IPv6特有攻击行为的检测。

Snort使用了一个非常复杂的链表结构来组织匹配规则,全局变量RuleList、指向RuleListNode结构的链表,将所有规则组织在一起。Snort规则头中每种响应类型对应一个ListHead结构,RuleListNode结构中的RuleList指针指向这些ListHead。Snort规则中的每种协议类型对应ListHead结构中的一个RTN(rule tree node)。链表为支持IPv6,添加了IP6List和ICMP6List两个RTN链表。RTN中主要包括规则头的信息、指向RTN处理函数链表的指针、指向下一个RTN的指针和指向OTN(option tree node)链表的指针。IPv6规则中的源和目的IPv6地址也要放在RTN中,因此对RTN结构进行了扩展。OTN主要由规则选项信息和OTN处理函数链表组成。新添加的规则选项关键字和相应的处理函数在系统初始化时加载到相应的OTN中。

3.5 IPv6快速匹配

在Snort20.0中使用port group技术和Sun Wu和Udi Manber提出的multi-pattern searching算法进行规则的快速匹配。multi-pattern searching算法是一种快速字符串匹配算法,用于匹配入侵特征,这对IPv6和IPv4没有区别,不需修改。portgroup技术将协议类型相同的所有规则按照端口号再进行分类组织,每一类称为端口组(port group ) ,并建立端口组和规则之间的映射关系。进行规则匹配时,按照捕获包的协议类型、源和目的端口在相应的端口组中应用multi-pattern searching算法这就相当于把大量的匹配规则按照协议类型、源和目的端口进行了分类,减少了最终参与multi-pattern searching算法的规则的数量,提高了multi-pattern searching算法的性能。如果端口组匹配成功,根据端口组和规则之间的映射关系可以进一步得到数据包匹配上了哪条规则。然后,按照这条匹配规则规定的响应动作调用响应模块做出相应的响应。

3.6 IPv6响应模块

如果检测到入侵,响应模块将被调用。根据配置,响应模块可以进行日志记录、给管理员发送入侵通知邮件、将入侵记录到数据库、对入侵进行阻断等。对IPv6的入侵响应主要考虑IPv6地址和IPv4地址的不同以及ICMPv6引入的新功能,日志记录和数据库的相应结构必须据此做出调整.如果要对IPv6入侵进行阻断,还需要考虑IPv6的阻断机制和IPv6数据包的构造技术。

4 结论

通过分析IPv6协议的安全性能,在Snort入侵检测方法的基础上,探讨了实现IPv6入侵检测系统的关键技术―IPv6包的捕获、IPv6包结构解析、IPv6的分段重组、IPv6的检测规则、IPv6的快速规则匹配,对过渡技术的支持、兼容IPv4等,并在Snort基础上实现在IPv6包的捕获,IPv6协议的解码,IPv6的分段重组。

参考文献:

[1]张青.IPv6下网络入侵检测系统框架设计[J].科技资讯,2006, 22:89-89.

[2]潘理虎,陈立潮,武辉斌,李峰.基于协议分析的Ipv6网络入侵检测系统的研究[J].太原理工大学学报,2006,37(4):473-475.

本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

上一篇:电子商务安全解决方案 下一篇:火热试用IE7