龙源期刊网 http://www.qikan.com.cn
一种入侵检测数据管理系统的实现
作者:孙海冰
来源:《合作经济与科技》2009年第09期
提要 本文介绍了一种局域网环境入侵检测系统的实现,对各技术模块进行了应用分析。 关键词:入侵检测;数据;数据管理 中图分类号:F49 文献标识码:A
入侵检测数据管理系统是入侵检测系统实现的关键,是入侵检测数据分析的基础。本文所研究的入侵检测数据管理系统实现分三个部分:数据包捕获模块、数据提取模块和事件分析数据库的实现。
一、数据包捕获模块实现
数据包捕获模块是进行检测和决策的基础,它的准确性、可靠性和效率直接影响到整个系统的性能。数据包捕获模块的任务是利用数据包捕获工具从网卡上捕获网络上的数据包,再将捕获的数据包经过解码引擎填入到链路层协议的包结构体中,以便对高层次的协议进行解码。 对网络数据包的捕获机制。网络数据包捕获机制指通过捕获整个网络的所有信息流量,根据信息源主机、目标主机、服务协议端口等信息简单过滤掉不关心的数据,再将系统感兴趣的数据发送给更上层的应用程序进行分析。网络数据捕获可以通过两种方法实现:一种是利用以太网络的广播特性;另一种方式是通过设置路由器的监听端口实现。
1、利用以太网络的广播特性进行捕获。以太网数据传输通过广播实现,但是在系统正常工作时,应用程序只能接收到以本主机为目标主机的数据包,其他数据包将被丢弃不作处理,其数据包过滤机制分为链路层、网络层和传输层几个层次。链路层主要指网卡驱动程序判断所收到包的目标MAC地址,如果不是自己网卡的MAC地址,又不是广播地址和组播地址,将直接丢弃,不向上层提交。网络层判断目标IP地址是否为本机所绑定IP地址,否则将不向上层提交。传输层如TCP层或者UDP层判断目标端口是否在本机已经打开,如果没有打开不作处理,并不向应用层提交。
龙源期刊网 http://www.qikan.com.cn
2、在交换环境中的网络数据捕荻。在实际应用中,存在很多非以太网接入的情况,如通过光纤接入等。
二、数据提取模块实现
数据提取模块是实现入侵检测系统VIDS的基础,它为检测模块提供分析的数据。根据数据包和系统日志提取出相应的特征数据,并对其进行规范化,以方便后面的数据分析。数据提取的三个过程是:协议解析、规则解析和数据预处理。
1、协议解析。数据包捕获模块把捕获的数据提交给协议解析模块后,协议解析模块必须对这些数据进行分析,根据相应的协议把这些分析后的数据放到指定的数据结构中,供上层模块调用。协议解析模块设计了一些对数据包进行表述的数据结构,在这些数据结构中,存放数据的Packet结构是其中最为关键的一个,数据包的数据结构如下:在数据包解码时,首先判断以太网封装的协议是否为IP协议,如果不是,则直接返回;否则,首先解析出IP头部,再根据所封装的协议,并分别对TCP、UDP、ICMP解析,将各项值写入Packet结构中对应的字段。
2、规则解析。在本系统中,采用了Snort的入侵行为描述方法。这种描述方法简单、易于实现,能够描述绝大多数的入侵行为。Snort的规则在逻辑上分为两部分:规则头和规则选项。规则头部分包括:规则行为、协议、源/目的IP地址、子网掩码以及源,目的端口。规则选项包含了所要显示给用户查看的警告信息,以及用来判定此报文是否为攻击报文的其他信息(比如,TCP的Flag字段以及数据字段的内容等)。
3、数据预处理。数据预处理模块的作用就是对网络数据进行预先处理,从而方便随后的检测分析。另外,我们可以发现,基于规则的检测引擎并不能检测所有的入侵,尤其是针对有效载荷的检测,而像端口扫描、SYN Flooding等攻击,按照前面所述的方法很难对它们的特征进行提取。因此,需要特殊情况特殊处理,而数据预处理就是一个很好的选择。常用的预处理内容如下:
(1)minfrag的格式。minfrag预处理检查分组数据包的大小是否低于某一设定的闽值。数据包分组通常是由源和目的地址之间的路由器来进行的。一般来讲,商业网络设备不会将数据包的分组大小设置于512字节。因此,能使用这个事实监控小的数据包分组,这种小的分组数据一般说明某些试图在分组里隐藏它们的数据。
(2)HTTP Decode的格式。HTTP De-code用于处理HTTP URL地址字符串,并将串中的数据转化为可读的ASCII字串。这样做的目的是为了检测到躲避Web URL扫描的行为和攻击,
龙源期刊网 http://www.qikan.com.cn
这些入侵行为常常会通过地址字符串中某些异常字符的设置,来躲避对HTrP通信可疑行为的内容分析检查。格式为:http_deeode:L—unicode][-cginull]。
(3)Portscan Detecto的格式。Portsean向标准日志设备中记录从一个源IP地址所发出的端口扫描活动的开始和结束。如果指定了一个日志文件,在记录扫描类型的同时也记录目的IP地址和端口号。端口扫描定义为在时间T(秒)之内对超过P个端口的TCP连接尝试,或者在时间T(秒)之内对超过P个端口发送UDP数据包。端口扫描可以是对任一IP地址的多个端口,也可以是对多个IP地址的同一端口。Snortl,6版本可以处理单对单和单对多方式的端口扫描,而现在的版本可以处理分布式的端口扫描(多对一或多对多)。端口扫描也包括单一的“隐蔽扫描”数据包,比如NULL、FIN、SYN-FIN、XMAS等。如包括秘密扫描的话,端口扫描模块会对每一个扫描数据包告警。
(4)stream4格式。Stream4模块使snort具有TCP流重新组装和状态分析能力。强壮的流重组能力使得snort能够忽视无“状态”攻击,例如,sfick粘滞位攻击。Stream4也能够给大量用户提供超过256个TCP同步连接。Stream4缺省配置时能够处理32,768个TCP同步连接。Stream4有两个可配置的模块,stream4 preprocessor和相关的stream4_reassemble插件。