内部刊物信息技术快报Information Technology Letter2005年第3卷第12期(总第31期)出版日期: 2005年12月6日一 基于关系数据流模型的网络入侵检测系统 (1)二网络安全—可生存性研究及网络建模 (11)三传感器网络综述 (24)四 《知识网格》书评 (37)中国计算机学会赠阅会员刊物基于关系数据流模型的网络入侵检测系统谭建龙沈星星王映摘要 数据流管理系统(data stream management system DSMS)是处理动态数据集合的一种数据管理技术,采用数据流模型对网络入侵检测系统(Network Intrusion Detection System-NIDS)进行设计,可以利用数据流中多持续查询优化的技术,提高网络入侵检测系统的性能。
同时使用关系数据流模型可以让入侵检测系统结构更加清晰,扩展性更好。
文章描述网络数据的关系结构化,入侵检测特征的关系查询表示以及过滤型多持续查询优化技术。
这个系统可以认为是数据流管理系统的一个应用系统,体现了一些数据流管理的概念和核心技术,对设计和实现通用的数据流管理系统具有一定借鉴意义。
本文将重点围绕数据流查询(continue query)的编译优化、数据流管理技术和网络安全应用的关系进行分析。
1 数据流管理系统的功能数据流管理技术是处理相对固定不变的大量查询和源源不断的流动数据的技术。
而网络信息安全是解决对网络信息的分发、通讯、管理的问题。
由于网络信息是典型的源源不断的数据流,同时有很多网络信息安全应用系统是采用大量查询方式,对这些网络数据流进行处理。
所以网络信息安全是数据流管理研究的一个很好的典型应用。
这个安全应用必须不间断无延迟地处理在线、持续的高速网络数据流,且网络数据不可能全都保存在外部存储器中。
我们的研究就是基于持续查询概念,采用数据流管理系统作为流数据处理平台,将其应用到网络安全监控系统中去。
我们实现了一个基于数据流处理模型的网络安全事件监控系统IceNetwork。
在这个系统中,数据流管理平台通过优化执行注册于系统中的大量持续查询,对连续网络流进行过滤等操作,完成各种安全事件的监测与报警,从而有效地支持了监控系统的实时性,准确性与灵活性要求。
本文以建立一个网络入侵检测技术系统为案例,采用基于数据流管理技术的思想,来开展数据流核心技术的研究。
希望能把工程中的核心问题,转换为数据流管理研究领域的通用问题。
1.1 数据流管理系统的功能数据流管理系统[1]是为流动数据管理建立的统一平台。
在数据库管理中,数据是相对静态的,查询是动态的;而在数据流管理中,查询是相对静态的,数据是动态的。
也就是说数据库技术主要研究对数据在外存(磁盘)上的存储索引和一次查询的执行技术,而数据流管理技术主要研究数据在内存中的存储索引和多个执行查询(continue query)[2]的执行技术。
数据库管理的一个核心问题是为了高效的查询,如何建立数据对象的索引,而数据流管理技术的核心问题是如何管理这些检索条件和操纵程序,研究如何为实现高效的大量查询进行编译的技术。
1.2 网络入侵检测系统为了防范计算机被入侵,入侵检测系统应运而生。
所谓入侵检测,就是通过从计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,发现网络或系统中是否有违反安全策略的行为和遭到袭击的迹象,并对此做出适当反应的过程。
根据入侵检测系统部署的位置以及网络数据的来源,入侵检测系统可以分为两类:主机入侵检测系统(HIDS1)和网络入侵检测系统(NIDS)。
其中HIDS 部署于单个主机,收集所有进入本主机的数据,加以分析检测。
而NIDS部署于一个子网的出入口,以进出子网的网络包做为分析数据源。
通常利用一个工作在混杂模式下的网卡来实时监视并分析通过网络的数据流。
其分析模块通常使用模式匹配、统计分析等技术来识别攻击行为。
一旦检测到了攻击行为,NIDS的响应模块就作出适当的响应,比如报警、切断相关用户的网络连接等。
由于NIDS采用在关键节点集中监测的方式,能够监控整个子网,并且对于子网内单个主机来说是透明的,因此部署起来比HIDS方便得多。
随着越来越多的单位和企业采用以太网的局域网组网方式,NIDS得到了广泛的应用。
NIDS的主要检测手段是模式匹配,这里说的“模式”是指,网络数据包的头部信息或者载荷中的数据满足的特定条件,网络安全领域把能够判定一个入侵的一组特征条件叫做“特征(Signature)”。
Snort[3]是一个成熟的、被广泛使用的、开放源代码网络入侵检测系统,它的有效性已经得到时间的验证。
它具有一个可配置的特征库(因为它的每一个特征对应于一条规则,我们也把它的特征库称为规则库),最新版本的Snort规则库包含了约2300条常见网络入侵的检测规则。
图1为Snort2.0中检测引擎的工作流程图。
1 Host Intrusion Detection System规则处理流图1 snort2.0 包数据和特征(处理图)典型情况是包通过且仅通过多特征过滤引擎一次,所以设计高效的多特征过滤引擎是入侵检测系统的核心问题之一。
对于一个在监控整个子网的入侵检测系统来说,网络数据捕获,TCP 组包、应用协议分析、特征设计方、多特征过滤引擎是决定效率的主要方面,也是研究的重点内容。
2 关系数据数据流模型的网络入侵检测系统一个采用数据流管理系统作为处理引擎的NIDS 的结构如图2所示。
提交给入侵检测引擎。
2.1 网络入侵检测系统和数据流管理技术的关系如果我们把网络入侵检测系统看作数据流管理系统的一个应用,数据流管理系统为入侵检测系统提供一个基础的平台,那么数据流管理平台就需要为入侵检测系统提供一些核心技术的支持。
下表说明网络入侵检测系统和数据流管理技术的关系。
从对照比中我们可以看出入侵检测系统需要使用到大量的数据流管理的核心技术。
把数据流管理研究的技术应用到入侵检测系统中,将为入侵检测系统提供良好的性能和扩展性。
网络入侵检测系统数据流管理系统 联系 应用系统基础平台 网络入侵检测系统是基于数据流管理系统的应用系统。
网络数据捕获:将网络的数据保存到内存中。
难点主要是如何在内存中存储大量的数据,同时及时将处理后的数据丢弃。
内存数据存储:解决海量关系数据的存储问题。
主要是处理数据滑动出处理窗口后,如何高效地丢弃掉。
由于数据流管理系统只能处理关系化的数据,所以如何把网络数据包变化为关系数据,将是这部分需要完成的工作。
TCP 组包:将网络上的单个IP 包,拼装为一个完整的TCP 流。
主要解决IP 后序包先到,和存在碎片包的问题。
要保证应用层可以看到连续的网络数据流。
内存数据索引:解决在内存数据中,如何通过键(key)找到数据记录的问题和如何对数据建立键索引(index)的问题 核心问题是如何通过IP 包的地址信息找到以前的数据包。
也就是对已经存在的数据包按IP 地址对建立好索引,将来新数据包到来的时候,通过这个索引找到对应的TCP 流。
应用协议分析:协议分析包括协议解码、协议状态识别、协议内容分析等工作 多流连接:如果多个数据流存在一定的关系,需要将这多个数据流窗口内的表进行多表连接计算,形成一个表关系后再进行持续查询的过滤。
核心问题是协议分析可能需要关注其他流的信息,例如ftp 命令流的结果,可能对当前文件传输流的分析是有用的。
所以需要连接这两个流,才能进行判断和计算。
特征设计方案:特征设计的时候需要考虑特征对入侵描述的简洁性和高效实现扩展的可能性。
使用关系查询语句来定义查询的条件和过滤的操作。
每个网络入侵检测产品使用单独的入侵特征,不利用入侵检测系统之间的信息交流。
多特征过滤引擎:多特征过滤引擎一般包括协议域搜索、一般内容搜索、包头异常检测。
单流多持续查询执行引擎:对关系数据流中的字段属性,一般分为字符串字段、整数字段、实数字段、时间日期等字段。
针对不同的字段类型,可以设计不同的多持续查询优化策略。
同时各个字段间的判断次序也是一个需要考虑的问题。
入侵检测系统中,IP 地址可以看作整数字段;包内容可以看做字符串字段;IP 头的字段一般是整数字段。
所以入侵检测系统中需要设计的是整数字段和字符串字段的单流多持续查询优化。
从上表可以看出,基于关系数据流模型的入侵检测系统,需要解决网络数据关系化存储(网络数据捕获)、整数字段索引(TCP 组包)、特征设计方案、整数字段持续查询编译、字符串字段持续查询编译(多特征过滤引擎)等问题。
还应包括多流连接查询、字段判断次序、实数字段的持续查询编译等问题。
2.2 网络数据关系化我们利用改进的轻量级捕包程序winpcap 进行捕包,对于每一个IP 包,首先对载荷部分进行统一的关键词扫描。
如果没有命中的关键词则将其抛弃;否则,将其拼到相应的TCP 流,提取包内各个字段信息,分别生成两个流:TCPLink 与Packet 。
TCPLink 包括一个连接的四元组信息,表示了一个包所属的TCP 连接,两个流格式如下:其中,TCPLink 是主流,每一个元组对应一个连接;Packet 是辅流,记录主流中每个元组对应的每一个包的各个字段的具体值。
主流与辅流之间是一对多的关系。
通过对网络包的预处理,形成两条流,完成了网络数据的关系化,从而可以在其上进行关系操作。
2.3 入侵检测特征的关系查询表示数据流管理系统只接受SQL 语句表示的查询,因此我们必须将Snort 的特征转换为SQL 表示,这需要解析Snort 规则。
我们实现了一个规则转换程序RulesParser ,读入标准snort 规则,生成数据流管理系统NIDS 的SQL 查询。
一条典型的Snort 规则如下:alert tcp any any -> any 6666:7000 (msg:"EXPLOIT CHAT IRC Ettercap parse overflow attempt";flow:to_server,established; content:"PRIVMSG"; nocase; content:"nickserv"; nocase;content:"IDENTIFY"; nocase; isdataat:100,relative;pcre:"/^PRIVMSG\s+nickserv\s+IDENTIFY\s[^\n]{100}/smi";reference:url,/dev/GOBBLES-12.txt; classtype:misc-attack; sid:1382; rev:9;)这条规则表达的含义是:一个TCP 数据报,无论来自哪个IP 地址的哪个端口,只要是6666:7000 端口,并且含有二进制串” PRIVMSG”,“nickserv”,“IDENTIFY ”等则触发报警,报警信息为” EXPLOIT CHAT IRC Ettercap parse overflow attempt”。