[转载]基于数据挖掘的入侵检测系统设计

 [---  资料是从免费网站上获取的,上载在这里,只为交流学习目的,文章原作者保留所有权力,
如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除。同时本人深表歉意,并致以崇高的谢意!
erwin_609@msn.com  ---]


摘要:本文提出了采用数据挖掘技术的入侵检测系统,利用序列算法建立的入侵检测模型以检测攻击(如DoS等)。本系统依赖于具体的网络环境,具有较好的适应性。
关键字:入侵检测,数据挖掘,序列规则,DoS
0引言
随着信息技术的迅速发展,计算机及网络技术给人们在信息利用与资源共享方面带来了极大的方便,与此同时,也成了单位内部心怀不满的人员、黑客、竞争对手等人攻击的目标。计算机网络安全已引起了人们的广泛关注。传统的安全保护类技术采用认证、授权、访问控制和加密等机制不能阻止利用计算机软硬件系统的缺陷闯入未授权计算机系统的行为,对授权用户滥用计算机及其资源的情况也无能为力。而防火墙技术不能对付层出不穷的应用设计缺陷和通过加密通道的攻击。由此可知,仅有传统的安全保护技术和防火墙等技术是远远不够,还需要有一种能够及时发现并报告系统入侵(攻击)的技术,即入侵检测。
1入侵检测系统原理
入侵检测系统(IDS),它从计算机网络系统中的若干关键点收集信息(如系统日志、审计数据和网络数据包等),并分析这些信息,发现网络中是否有违反安全策略的行为和遭到攻击的迹象。入侵检测概念的提出依赖于两个假设:第一、用户和程序的活动是可以观察的。例如:系统审计机制。第二、正常活动和入侵活动有截然不同的行为。不正常的活动被标志为入侵。
根据检测方法,入侵检测分为两大类型[1]:误用检测(misuse detection)和异常检测(anomaly detection)。误用检测是指将已知的攻击方式以某种形式存储在知识库中,然后通过判断知识库中的入侵模式是否出现来检测攻击,如果出现,说明发生了入侵。这种方法的优点是检测准确率较高,缺点是只能对已知的攻击类型和系统安全漏洞进行检测。而异常检测是指将用户正常的习惯行为特征存储到特征数据库中,然后将用户当前行为特征与特征数据库中的特征进行比较,若两者偏差大于阀值,则说明发生了异常。这种方法的优点是能检测未知的攻击类型,缺点是误检率较高[2]。
根据检测的数据来源,入侵检测系统可以分为基于主机的入侵检测系统和基于网络的入侵检测系统。基于主机的入侵检测系统是通过分析审计数据和系统日志来发现可能的入侵。而基于网络的入侵检测系统是通过分析网络数据包来检测可能的入侵。随着目前网络信息的不断丰富、网络带宽的迅速扩大,收集的审计数据和网络数据包的数量也非常巨大,要想从大量的审计数据和网络数据包中发现有意义的信息将变得非常困难,出现“数据丰富、信息贫乏”的现象。因此需要利用数据库方面的新技术——数据挖掘。
2数据挖掘原理
数据挖掘(Data Mining :简称DM),又称数据库中的知识发现(Knowledge Discovery in Database: 简称KDD),是指从大型数据库或数据仓库中提取隐含的、未知的、异常的及有潜在应用价值的信息或模式。它是数据库研究中的一个很有应用价值的新领域,融合了数据库、人工智能、机器学习、统计学等多个领域的理论和技术[3]。
整个知识发现过程是由若干挖掘步骤组成,而数据挖掘仅是其中的一个主要步骤。整个知识挖掘的主要步骤有:数据清理、数据集成、数据选择、数据变换、数据挖掘、模式评估、知识表示。其中数据清洗是消除噪声或不一致数据;数据集成是把多种数据源组合在一起;数据选择是从数据库中检索与分析出与任务相关的数据;数据变换是把数据变换或统一成为适合挖掘的形式,如通过汇总或聚集操作;数据挖掘是基本步骤,使用智能方法提取数据模式;模式评估是根据某种兴趣度度量,识别表示知识的真正有趣的模式;知识表示是使用可视化和知识表示技术,向用户提供挖掘的知识。数据挖掘是整个知识发现过程中的一个重要步骤。数据挖掘所获得的知识类型包括:定性概念描述、定性对比概念描述、关联规则、分类规则、聚类知识、趋势描述知识,偏差分析知识等。
然而,传统的数据挖掘算法是基于一般知识的通用算法,具有普适性,在进行网络安全领域的数据挖掘时会产生大量的无意义的规则,因而需要利用网络安全及网络协议方面的知识加以约束以减少大量的无意义规则。
3 SYN Flood攻击
SYN Flood攻击是一种非常普遍的拒绝服务攻击(Denial of Service,简称DoS)。根据TCP/IP网络协议,TCP联接是一个三次握手过程。通常情况下,SYN分组从系统A的某个端口发出,到达系统B的某个处于监听状态的端口。此时,系统B上这个联接处于SYN_RECV(已收到SYN状态)。然后系统B尝试往系统A发回一个SYN/ACK分组。如果一切正常,系统A就会再次给系统B发出一个ACK分组,这时三次握手过程完成,于是此联接便转移到ESTABLISHED(已建立)状态[4]。
但是,当发生SYN Flood时,入侵者从系统A发送一个SYN数据分组到系统B,不过此分组的源地址却是一个虚假地址,系统B也同样会向该虚假地址发送一个SYN/ACK分组。如果该虚假地址是冒充其它机器的真实地址,那么它通常会向系统B回应一个RST数据分组以解释其并没有发起这次联接。然而如果入侵者冒充的是本来就不存在的地址,此时,系统B发出SYN/ACK分组后却再也不会收到相应的RST数据分组或ACK数据分组。于是SYN_RECV状态的联接被系统B放到一个联接队列中,直到联接建立定时器发生超时而把该联接清出联接队列为止。联接定时器的设置因系统不同而不同。联接队列的容量通常都很小,入侵者只需每10s发送若干个SYN数据分组就能完全禁止某个特定端口。遭到入侵的系统无法在接收新的SYN请求之前清空BackLog队列,从而导致SYN Flood攻击。该攻击就是利用TCP/IP协议的这一漏洞来实现的。
4入侵检测系统模型与应用
根据分析,网络事件通常在时间上具有很强的相关性,尤其对于探测攻击(portscan, ping-sweep等)及拒绝服务攻击(SYN-Flood, teardrop等)来说更是如此,考虑在检测数据中加入基于时间的统计特性,这相当于在更抽象的层次上观察数据,我们采用的方法是使用时间窗口的概念,针对每一条连接记录,统计出在指定时间窗口内与当前连接记录在属性上存在某种联系的连接记录,包括以下两种统计方式:(1)检查在一个时间窗口以内目标地址是某台主机的记录(如portscan);(2)检查在一个时间窗口以内目标端口是某服务端口的记录(如SYN-Flood)。
该自适应系统模型针对拒绝服务攻击设计的。首先利用TCPDUMP等sniffer工具收集大量的网络数据流量,然后使用序列算法对TCPDUMP所收集的网络数据包进行序列分析,挖掘出基于时间窗口的拒绝服务(DoS)序列规则,最后把该序列规则应用于实时的网络数据流中以便于检测拒绝服务攻击(DoS)。
模型如图:

 

 

 

 

 

 

 

 

 

TCPDUMP跟踪格式如下:
11:53:49.869667 eth0 > 192.168.0.231.12242 >
192.168.1.10.www: s 6373380:6373380 (0) win8192
<mss 1460,nop,nop,sackOK>(DF)
以上分别是时间、接口、数据流方向、源地址、源端口、目标地址、目标端口、标志集、序列号、数据包中的字节、窗口大小、选项、不支持数据包分解。基本思路如下:
(1)把此模型应用于SYN Flood攻击方式,对上述TCPDUMP格式的数据经过预处理,将其转换为一条条的连接记录,并且利用轴属性[5]进行约化,减少需要挖掘的数据量,以提高数据挖掘效率。可以只包括:<时间、目标地址、目标端口、标志>
(2)经过上述整理后,将大量的连接记录装入SQL Sever数据库,再次进行清理,去掉所有标志不是SYN的记录,并按照目标主机、目标端口、时间升序排列,便于下一步进行序列挖掘。
(3)确定时间窗口  在一个时间窗口内对某一台主机的某一端口有多少次flags是SYN 的TCP连接会导致拒绝服务(DoS)。此挖掘过程需要反复修改时间窗口大小、反复挖掘,以确定时间窗口大小和该时间窗口内导致拒绝服务的标志为SYN的TCP连接数目。而且随着主机、端口、系统和带宽等具体网络环境的不同而有所不同,具有适应性。
(4)DoS序列规则  经过上述的反复挖掘,最后确定特定环境条件下的DoS序列规则。例如:在2秒钟时间内,1000条件SYN Flood会导致某一系统的WWW端口产生了拒绝服务攻击。
(5)把上述获得的DoS序列规则应用于实时网络数据流中进行序列分析,以判断是否检测到了拒绝服务攻击。如果不是则认为正常,否则需采取如下的措施以挽救其联接队列。
下面简单介绍一下对付SYN Flood的四个基本方法。这些对策各有自己的优势和劣势,不过都对消减SYN Flood的入侵威力有帮助。
(1)增加联接队列的大小。尽管每个程序员实现的IP协议栈时都会有所不同,但调整联接队列的大小肯定可以有助于减轻SYN Flood。但这样做会消耗额外的系统资源,从而影响性能。
   (2)缩短SYN Timeout时间。由于SYN Flood入侵的效果取决于服务器上保持的SYN半联接数,这个值等于SYN入侵频率与SYN Timeout值的积,所以通过缩短从收到SYN报文到确定这个报文无效而丢弃联接的时间,即SYN Timeout, 可以成倍的降低服务器的负荷。(例如设置为20s以下,但是太低的SYN Timeout设置可能会影响客户的正常访问)
(3)应用相关的软件补丁。大多数现代操作系统已建立了SYN Flood检测与预防机制,或者提供了这样的软件补丁。
随着SYN Flood淹没在Internet上越来越流行,针对这种情况,许多操作系统上已开发了专门对会这种DoS入侵的程序。例如,Linux内核2.0及以后的版本采用了SYN cookie选项,内核可以利用它检测并记录可能的SYN Flood,能够允许合法用户在强度很大的攻击下也能继续进行联接。另外Windows NT 4.0 Service Pack 2及以后的版本使用动态BackLog机制。当联接队列空闲资源降低到某个阈值时,系统将自动分配额外的资源。这样,联接队列就不会很容易地耗尽系统资源了。
   (4)应用网络IDS产品。有些基于网络的IDS产品能够检测并主动对SYN入侵做出响应。通过观察没有对应的ACK数据分组或RST数据分组的SYN分组的数量,就可以确定SYN Flood淹没。IDS会向发出SYN请求的系统主机发送RST分组,以帮助遭受入侵的系统挽救其联接队列。
5结束语:
本文介绍了自适应的基于数据挖掘IDS模型的过程,以及如何使用序列规则建立异常检测。由于数据挖掘技术能从大量网络数据中快速提取出规则,因而大提高了入侵检测系统的性能。

 

参考文献:
[1] 戴英侠 连一峰 王航 系统安全与入侵检测[M] 清华大学出版社2002年3月第1版 第33页
[2] 宁玉杰 郭晓淳 基于数据挖掘技术的网络入侵检测系统[J] 计算机测量与控制2002.10
[3] (加)JIAEI HAN,MICHELINE KAMBER数据挖掘概念与技术[M] 范明 孟小峰等译 机械工业出版社 2001年8月第3-4页
[4] 高永强 郭世泽 网络安全技术与应用[M]人民邮电出版社 2003年1月 第221页
[5] Wenke Lee,A Data Mining Framework for Constructing Features and Models for Intrusion Detection System, degree of Doctor of Philosophy in the Graduate School of Arts and Sciences, COLUMBIA UNIVERSITY,1999
 

posted @ 2007-11-10 14:25  xerwin  阅读(717)  评论(0编辑  收藏  举报