利用动态规则集和协议分析提高入侵检测效率
2008-04-25
作者:路松峰,许传明
摘 要:入侵检测" title="入侵检测">入侵检测作为一种计算机系统安全监测手段,已经成为维护网络安全的主要技术之一。提出了一种新的模式匹配" title="模式匹配">模式匹配方法,即基于动态规则集和协议分析" title="协议分析">协议分析的模式匹配,它能缩短模式匹配的时间,极大地提高了入侵检测效率,为入侵检测理论研究和相关产品研发提供了参考。
关键词:入侵检测 动态规则集 协议分析 模式匹配
入侵检测系统" title="入侵检测系统">入侵检测系统IDS(Intrusion Detection System)是近年出现的新型网络安全系统,它能够发现入侵并且对其作出反应,如报警、事件记录、终止恶意程序和断开网络等,为网络安全提供实时保障。IDS通常是根据已知攻击方式构建规则特征库,抓取数据包,然后基于特征逐条模式匹配,匹配成功则说明有入侵发生,否则继续下一个数据包的处理。将模式匹配应用于入侵检测是由Sandeep Kumar最先提出的[4]。
IDS的主要性能参数有两个:误报率和漏报率。误报率又叫虚警率,是指IDS在检测时出现虚警的概率;漏报率是指本来应该报警却没有报警的概率。
1 动态规则集和协议分析
1.1 目前模式匹配中的问题
随着网络的发展,攻击代码不断衍生,例如phf攻击将“/cgi-bin/phf”改变为“/cgi-bin/xxx/../phf”或“\cgi-bin\phf”等,攻击方式也越来越多样,如冲击波、振荡波等。新的漏洞不断被发现,不得不增多规则条目来完善IDS的规则库,这将使IDS的处理负荷增加。规则集的膨胀和网络流速的提高,使得IDS来不及处理每一个数据包,致使丢包不可避免。所丢的包中的攻击100%被漏报,导致漏报率增大。网络流速的单位为pps(packet per second)。
目前的IDS都是采用静态规则集,存在很多弊端:如果规则集大而全面,在理想的条件下,降低了漏报率,但是实际中反而增加了漏报率。因为规则集膨胀,模式匹配所耗时间增大,处理负荷线性增加[3],网络流速超出IDS的处理能力" title="处理能力">处理能力时,有些数据包来不及进行模式匹配,导致丢包,特别是在高速网络下,导致大量丢包,漏报率明显增大。
显然,各攻击出现的概率存在较大差异,有些攻击每天都可能发生,有些攻击一年甚至多年才可能发生一次。因此可以根据概率对规则集进行排序,在模式匹配时优先匹配那些概率大的规则。另外,大部分的攻击都不是孤立产生的,相互之间存在着某种联系,这种联系多为依赖性,即存在先后关系,如80端口被扫描,就有可能发生CGI攻击。
多数IDS都忽略了这种概率性和依赖性,从而暴露出模式匹配所消耗的时间资源太大,浪费大量不必要的时间。针对这个问题,本文参照参考文献[2]中提到的动态规则集[2],提出利用动态规则集和协议分析来提高模式匹配效率。
1.2 动态规则集
所谓动态规则集,其动态性有两种含义:
(1)建立一个动态规则调整策略,它可以获得网络流速和IDS的处理能力,然后根据相应的策略来动态调整规则集的范围。当网络流速大于静态规则集IDS处理能力时,目前的IDS会丢掉来不及处理的数据包,特别是网络流速很大时,会产生大量丢包,导致较大的漏报率。而动态规则调整策略则是把一些长期没有匹配成功过的规则,特别是一些多年才可能匹配成功一次的规则和一些已经荒废的规则过滤。这就使IDS在模式匹配时不与这些小概率规则匹配。这样,虽然有可能带来一些漏报率,但是相对于前一种方法来说,它带来的漏报率要低很多,使IDS在当前流速下获得最佳性能。当网络流速小于静态规则集IDS处理能力时,根据动态规则调整策略将规则集的范围扩大到全规则,在此规则集上进行模式匹配,可使系统资源得到充分利用,也使IDS获得了当前流速下的最佳性能。
(2)规则格式如图1所示,规则格式中有两项,分别为长期概率和短期概率。长期概率有个初始默认值,是IDS研发人员经过大量真实数据测试得出的,它是该规则在固定时间内出现的平均次数值,短期概率初始值为0。IDS安装后,如果某个规则被匹配成功一次,则将短期概率加1,设定一个时间门槛T,在时间到达T后,计算长期概率×1/4+短期概率的值,然后赋给长期概率,短期概率清零,也就是动态更新长期概率和短期概率,使之与本地的网络背景不断接近。通常,T的值不能太小,因为太小的T值不能真实反映本地网络背景的特点。之所以没有把长期概率+短期概率的值赋给长期概率,是因为短期概率比长期概率更能真实地反映本地的网络背景,短期概率优先级别大于长期概率。
在图1中,后续规则1~5这五项是用来记录这些规则被匹配成功之后常出现的后续攻击所对应的规则编号,这些编号也是IDS研发人员经过推断以及大量真实数据测试得出的。在IDS中可以定义六个变量:ID、ID1、ID2、ID3、ID4和ID5。ID为上一个被匹配成功的规则编号,ID1、ID2、ID3、ID4和ID5为对应规则编号ID的五个后续规则编号。IDS发现一个攻击后,用这六个变量分别记录规则编号和五个后续规则编号,在下一个数据包获取后,先将数据包分别与规则编号为ID1、ID2、ID3、ID4和ID5的规则匹配,如有匹配成功则报警,否则继续下一步匹配。直到有一个数据包被匹配成功时,才将新的规则编号和五个后续规则编号分别赋给ID、ID1、ID2、ID3、ID4和ID5。
1.3 协议分析
在以网络为主的入侵检测系统中,由于把通过网络获得的数据包作为侦测的资料来源,所以数据包在网络传输中必须遵循固定的协议才能在计算机之间相互沟通,因此可以按照协议类别对规则集进行分类。
协议分析的原理就是根据现有的协议模式,到固定的位置取值(而不是逐一地去比较),然后根据取得的值判断其协议以及实施下一步分析动作。其作用十分类似于邮局的邮件自动分捡设备,有效地提高了分析效率,同时还可以避免单纯模式匹配带来的误报。
根据以太网的帧结构定义,在以太帧的第13个字节处包含2字节的第三层协议标识,0800为IP协议,0806为ARP协议,8138为NOVELL协议等。在IP数据包的格式定义中,第10个字节为第四层协议标识,如:TCP为06,UDP为11,ICMP为01等。而TCP数据包的第3、第4个字节为应用层协议标识(端口号),如80为HTTP协议,21为FTP协议,23为TELNET协议等。
根据以上特点,可以将协议分析算法用一棵协议分类树来表示,如图2所示。
这样,当IDS进行模式匹配时,利用协议分析过滤许多规则,可以节省大量的时间。在所有规则中又是关于TCP的规则最多,大约占了50%以上,因此在初步分类后,可以按照端口进行第二次分类。在两次分类完成后,可以快速比较特征库中的规则,减少大量不必要的时间消耗。如有必要,还可进行多次分类,尽量在规则树上分叉,尽可能地缩减模式匹配的范围。图2就是对协议的多次分类。
1.4 基于动态规则集和协议分析的模式匹配算法设计
基于动态规则集和协议分析的模式匹配算法包括以下六个主要步骤:(1)数据包获取和流速测试;(2)根据网络流速与IDS处理能力确定规则集范围;(3)协议分析,将规则分类,过滤掉无需匹配的规则集;(4)概率策略选择,将需要匹配的剩余规则集按概率降序排列;(5)取出上一条匹配成功的规则的五个后续规则编号,将数据包依次与其匹配,若匹配成功则报警,并将短期概率加1,否则继续下一步;(6)与按照概率策略算法所得的规则集进行模式匹配,若成功则报警,并将短期概率加1,否则,返回步骤1重新开始下一数据包的处理。
综上所述,可以给出整个模式匹配的流程图,如图3所示。
从图3中可以看出,概率策略选择有三种方案:长期概率优先,短期概率优先和综合折中。很明显,长期概率优先机制在排序时考虑了短期概率,但是效果不明显,忽略了短期概率的重要性;同样,短期概率优先机制忽略了长期概率的重要性;而综合折中机制综合考虑了长期概率和短期概率的重要性,是其中最佳的方案。
2 性能比较分析
实际的测试是在实验室进行的,根据自定义的测试攻击数据和规则库,利用Smartbits设备制造背景流量(平均帧长为128字节),在C++语言的环境下编译程序,针对不同的网络流速进行测试。
根据程序中所设的计数器,在不同网络流速下测试不同方案的临界丢包点,也就是程序所处理的数据包个数开始小于网络背景流量时的流速,测试的临界丢包点如表1所示。
采用不同方案的IDS在不同网络流速下对已知攻击测得的漏报率如图4所示。
在图4中,11万pps是IDS采用静态规则集的处理能力,30万pps是采用动态规则集的处理能力,43万pps是采用协议分析的处理能力,61万pps是采用动态规则集和协议分析的处理能力。
由于攻击数据是已知攻击,不存在未知攻击,所以网络流速低于11万pps时,已知攻击的漏报率是0%。由图4可以看出,不管采用何种方案,网络流速小于11万pps时,漏报率保持不变。比较各方案的性能,可得出如下结论:
(1)采用静态规则集的IDS:网络流速大于11万pps时开始出现丢包,导致漏报率增大。
(2)采用动态规则集的IDS:网络流速大于11万pps小于30万pps时,没有丢包,但是由于动态调整了规则集的范围,过滤掉了一些小概率规则,导致漏报率稍微增大,这种方案比第一种方案带来的性能损失要小;网络流速大于30万pps后开始丢包,漏报率增大。
(3)采用协议分析的IDS:网络流速大于11万pps小于43万pps时没有丢包,但是由于协议分析过程中不能完全正确地分类,漏报率稍微增大;网络流速大于43万pps后开始丢包,漏报率增大。
(4)采用动态规则集和协议分析的IDS:网络流速大于11万pps小于61万pps时,没有丢包,但是由于动态调整了规则集的范围和协议分析过程中不能完全正确地分类,漏报率稍微增大;网络流速大于61万pps后开始出现丢包,漏报率增大。
假设未知攻击占所有攻击的百分比为a,未知攻击的漏报率b为100%,已知攻击的漏报率为c,如图4中的纵坐标,则可以计算出实际的漏报率为P=a*b+(1-a)*c, P=a+(1-a)*c,其中0≤a≤1,b=1,0≤c≤1。
综上所述,采用动态规则集与协议分析结合的方案能够极大地提高IDS的处理能力,在不影响误报率的条件下,大大降低了漏报率,提高了IDS的性能,使得IDS能够适应不同流速的网络。
本论文提出了利用动态规则集和协议分析来提高入侵检测效率。这种方案主要是通过协议分析缩小了模式匹配的规则集,并把规则集按照概率降序排序,优先匹配概率高的规则,从而极大地提高了模式匹配的效率,节省了不必要的匹配时间,解决了规则集不断膨胀而导致IDS性能下降的问题。
参考文献
1 Kumar G.Classification and detection of computer intrusion[D].Purdue University,1995
2 李朔峰,李雪莹,许榕生.运用动态规则集机制改善IDS性能的研究[J].计算机工程与应用,2003;(34):139~141
3 闫 巧,喻建平,谢维信.入侵检测系统的可信问题[J].计算机研究与发展,2003;(8):1203~1208