吴 云
(衢州日报社,324002)
入侵检测系统(IDS)是防火墙之后的第二道安全闸门,它的主要功能特点是:检测网络用户的行为和网络的异常动态,分析和筛选出合法用户和非法用户的侵权、越权行为;通过核查和分析系统存在的漏洞来分析系统的安全性,并提示网络管理员及时对漏洞进行修补和修复;分析各个系统数据库和网络资源的完整性和统一性;拦截和识别存在的攻击行为;分析和统计系统中存在的异常;对以上活动产生的具体痕迹能进行无一遗漏的记录,对违法系统安全策略的用户进行准确记录。
DDoS是一种分布式的网络攻击方式,传统的单机或集中示的入侵检测技术已经不能满足新情况下网络安全的需要,原因在于:
1)通过关键部分的数据分析得出系统漏洞。如果一个侵入者能够设使运行它的计算机软硬件系统速度变慢或者奔溃,那么整个入侵检测系统就起不了作用了。
2)整个系统的伸缩性受到一定限度的限制。如果对监控的网络出现范围受限那么意味着一台或者少量主机并不能满足他的应用。并且随着网络范围和容量不断扩大,少量的处理器根本不能满足系统的监控和处理。
3)整个系统的扩充和配置比较难。往往要通过增加软件模块或者增强硬件资源来扩充系统能力,不能在线实时进行挂接和上线。
4)单纯地对网络数据进行分析有时会有缺陷。
基于以上原因,本文引入了基于分布式网络入侵检测系统(DIDS)这一概念的新的系统结构体系。该系统在结构上与传统意义上的IDS的最大区别在于:数据提取模块分布在指定的若干台路由器或交换机上,数据分析和结果处理模块分布在某一台位于防火墙后面的服务器上。简单地说,该系统就是一个分布式数据采集和集中式数据分析、结果处理和网络监管的结合体。
系统主要分成两大块:分布在NSH的NSP,负责过滤网络接口信息,截获非法数据包并以日志的形式记录在数据库中,将记录的日志数据交给NAP;运行在NAH上的NAP,进行数据和结果处理,以及网络监管。
入侵检测系统模型包括检测检测事件的分析、事件数据库、响应单元、事件的产生等主要部分。
通过对网络中的数据包或者网络中系统和用户留下的日志来分析,我们统称为入侵检测系统事件分析。通过事件产生器来获得目前网络中的时间,通过分析向其他信息系统传递此时间的内容;通过时间分析器对事件的核心内容进行分析来得出结论和结果;数据库用来存放各种中间和最终数据;响应单元则是对分析结果做出反应;基于分布式的网络入侵检测系统(本系统),NAH从一个或多个NSH上收集反映该NSH系统不同方面活动情况的检测审计数据,然后采用统计分析和基于规则的分析手段对这些审计数据进行连续分析,并对分析结果进行处理。系统服务模块包括规则设置的规则服务器、分析服务器和处理服务器。
规则服务器发布数据检测的基本规则,可以用文件方式传输给各个运行NSP的NSH。NAH可根据统计分析数据决定对NSP所使用的规则做修改或增加NSH数量。
分析服务器可以对采集的数据进行滥用检测、异常检测和完整性分析。本系统主要是对流量进行了异常检测,本模块做适当增加可实现其他模式的检测。
处理服务器目标是对所有的NSP支持和管理,包括负责启动和停止各个NSP的监测,负责从NSP中获取审计数据信息;存储审计数据存储过程,也可以停止或启动存储的过程;按照规则统计分析审计数据文件和发送报警消息。
图1 本系统网络结构模型
首先给出几个关键的用例图:
图2 网络管理程序总框架用例图
图3 数据嗅探器功能用例图
下面对以上几个图作简要的说明:前三个用例图可以形象地描述整个系统的功能;软件结构模型与网络结构模型相对应,更好地解释了分布式网络检测系统的概念。
为了实现NAH与NSH之间的通信,必须要设计一套网络传输协议,该协议位于TCP层之上,属于应用层协议。
协议使用字符串作为功能标识的方式,具体说明如下:
1)“START”――启动数据嗅探器服务。
2)“STOP”――停止数据嗅探器服务。
3)“REQCNT^n”――请求数据包统计数据,其中n表示要统计n分钟内收到的各类数据包统计总量。
4)“REQHDR^n”――请求数据包的报头信息,其中n表示要请求n分钟内收到的数据包的报头信息。
5)“OK”――NAH收到所需的数据后回送给NSH的应答。
6)NSH发送给NAH的数据也有一定的格式要求,在第3 章的3.3.4节中将作详细说明。
下面给出有关的协议通信模型(如图4):
图4 启动数据嗅探器通信模型
数据采集是IDS和DIDS的核心和最底数据层支持,是决定整个系统性能的主要因素,只有数据采集及时、准确、有效、可靠、完整、消耗资源低,才能保证上层的数据分析和结果处理模块正常工作。
数据采集方法从结构上可以分成基于主机和基于网络两种。前者要求网络中的每台主机都必须运行数据采集进程;而后者只需要在关键性的主机(如路由器)上运行数据采集进程。
数据采集方法从数据来源上还可以分成直接和间接两种。前者直接从产生它的对象或相关的对象获得数据;后者从某个数据源获得数据,该数据源反映了被监视对象的行为。
本系统采用snort作为端口数据采集器。snort是一个用C语言编写开发的开发源代码软件,符合GPL(GNU Public License)的要求,其作者为Martin Roesch,也是开源软件界的著名人士。
snort是一个基于Libpcap的网络数据包嗅探器和日志记录工具,可以用于入侵检测,从入侵检测分类上来看,它应该算是一个基于网络和误用的入侵检测软件。
snort采用基于规则的网络信息搜索机制,对数据包进行内容的模式匹配,从中发现入侵和探测行为,例如:buffer overflows、stealth port scans、CGI attacks和 SMB probes等。snort具有实时报警的能力,它的报警信息可以 发 往 syslog、Server Message Block(SMB)、WinPopup Messages或者单独的alert文件。snort 可以通过命令行进行交互,并对可选的BPF(Berkeley Packet Filter)命令进行配置。
snort由三个重要的子系统构成:数据包解码器,检测引擎、日志与报警系统。
1)数据包解码器
数据包解码器主要是对各种协议栈上的数据包进行解析、预处理,以便提交给检测引擎进行规则匹配。
2)检测引擎
snort用一个二维链表存储它的检测规则,其中一维称为规则选项,另一维称为规则头。规则选项中放置的是一些入侵特征,而规则头中放置的是一些公共的属性特征。采用递归的方式来匹配规则,整个检测机制主要针对当前建立的链表项中的数据包进行检测。当通过满足一个规则来出发系统的运行。Snort检测的方式和机制非常灵敏和灵活,系统用户可以根据自己的具体需求很便捷的在规则链表中添加所需要的规则模块。
3)报警子系统和日志
报警子系统和日志可以在系统运行snort时,以交互式命令的形式进行实现。目前存在的日志形式主要是以下三种:tcpdump的二进制形式、解码后的文本形式或数据库形式。报警形式有五种,由于本系统并未使用,所以这里略去。
[1]朱敏,朱之平.网络入侵检测技术[J].计算机应用与软件,2004,(06).
[2]陈瑾,罗敏,张焕国.入侵检测技术概述[J].计算机工程与应用,2004,(02).
[3]张建忠,徐敬东,吴功宜,练书成,江罡.分布式入侵检测系统研究与实现[J].计算机工程与应用,2004,(36).
[4]王世明.入侵检测技术原理剖析及其应用实例[J].燕山大学学报,2004,(04).