基于Snort的改进入侵检测系统

更新时间:2024-01-17 作者:用户投稿原创标记本站原创 点赞:28495 浏览:132188

【摘 要】本文研究了Snort入侵检测系统的特点和工作原理,通过实验证明入侵在时间上的连续性,并基于该特征提出了一个数据包采样算法,对Snort系统的数据采集模块的数据源进行采样,并用实验证明该算法可以显著提高入侵检测的效率.

【关 键 词 】Snort;入侵检测;数据包采样

一、Snort简介

Snort利用库函数libpcap截取报文,对报文进行协议分析,内容搜索/匹配,可以用来检测缓冲区溢出、隐秘端口扫描、CGI攻击、B探测、OS指纹特征检测等等各种攻击和探测.Snort具有较强的学习能力,它使用灵活的规则语言来描述网络数据报文,可以对新的攻击作出快速地翻译.Snort能实时报警同时支持多种报警信息处理,包括写到syslog、指定的文件、UNIX套接字或者使用WinPopup消息.Snort支持插件体系,扩展能力强.Snort的现实意义作为开源软件填补了只有商业入侵检测系统的空白,可以帮助中小网络的系统管理员有效地监视网络流量和检测入侵行为.

Snort 作为一个基于网络的入侵检测系统(NIDS),其工作过程为:①Snort系统的启动和初始化;②解析命令行;③读入规则库,生成入侵规则链表;④通过Libpcap库函数抓取一个网络数据包;⑤根据抓取的包的网络协议层次及包的协议类型,对数据包进行解析;⑥启动检测引擎,将解析好的数据包和入侵规则链表进行逐一匹配,直至找到匹配的规则转⑦或所有规则均不匹配转⑧;⑦对应匹配规则的入侵行为发生,记录攻击并报警;⑧重复第④至⑦步,直至系统停止.


二、基于采样的入侵检测

入侵攻击特征分析实验

利用Snort对MIT Lincon实验室的两份公开数据集进行离线检测统计实验,实验过程及结果如下:

①入口数据集攻击分析:数据共包778484个,攻击包40245个,攻击包占0.05%;根据实验数据表1和表2分析可得,基于TCP协议的攻击, 15%的攻击出现了连续性;基于UDP协议的攻击,99%的攻击在给定时间间隔内出现,表现出了极强的攻击连续性.

②出口数据集攻击分析:数据包共166011个,攻击包195个,攻击包占0.001%;根据实验结果表3,分析可得:基于TCP协议的攻击包占总包数的0.001%,网络工作正常,在<源IP,源port>上,攻击分布较均衡,有11%的攻击出现了连续性.

(2)实验结论

攻击包在时间上具有连续性.

(3)基于采样的入侵检测算法

基于攻击包在时间上的连续性,金庆辉提出了一种入侵检测的采样方法,其算法的设计思想是:若某源IP流中发现入侵,则认为在下一时间中它的包有很大概率也是入侵;若某源IP流在一个时间段中无入侵,则认为下一时间段中同源包有很大概率是正常流.算法流程图见图5至图7所示.

金庆辉提出的算法缺点分析:根据算法思想检测设第一点进行黑名单检测,有选择性的直接对部份包标记为异常包,这样将导致误警率提高;根据算法思想检测设第二点进行数据包采样,将采样后的包标记为正常包是不准确的,同时也会导致漏警率的增加.

改良的入侵检测采样算法:改良算法的基本思想:设置一个白名单记录,包括源IP地址、Port端口号、协议、生命值及生存周期;算法过程:数据包进行白名单匹配,对属于白名单且生命期大于固定值I则进行采样送检测,否则直接送检测引擎检测;根据检测结果及老化周期更新白名单.算法流程见图8所示.

改进的算法对数据包若在白名单中无记录或其生命值小于I,则直接送检测引擎检测,而对与白名单匹配且生命值大于等于I的记录进行采样检测,为防止白名单的无限扩大,设置记录的生存周期为30分钟,即某个白名单记录在30分钟内没有再次出现,则删除对应记录.整个算法思想基于:若某源IP流在一个时间段中无入侵,则认为下一时间段中同源包有很大概率是正常流.该数据采样算法没有图5所示算法对检测的误警率,漏警率比图5所示算法要小,同时不会出现后者算法中黑、白名单的不断增长问题.由于攻击流占全部数据流的比例相当小,因而采样算法可以大幅提高Snort系统的检测率,验证如下.

三、实验

实验在一台安装了Snort系统的怎么写作器上进行,使用AX4000流量发生/分析仪作为测试工具,在Snort系统上分别加载改进采样算法、原采样算法及普通算法,对比检测数据包处理效率.

(1)实验步骤:使用AX4000构造千兆流量,并作为分析设备.

①测试加载了改进采样算法的Snort在不同固定生命值I下对千兆流量的处理能力.

②测试Snort加载不同的采样算法后对混合了异常流的千兆流量的入侵检测能力.

(2)实验结果:

①改进采样算法中不同生命值对检测率的影响和检测引擎处理速度的提升,见图9、图10所示.由图可见,加载上文所提出的数据包采样算法后,给定的固定生命值I取值在(10,20)时,入侵检测率达到最佳状态,此时Snort处理数据包速度接近千兆线速度.

②与常用采样算法比较:使用AX4000构造异常流与正常流1:1的混合作为测试流量,将固定生命值I取值15的改进采样算法、改进前的数据包采样算法及普通数据包采样算法进行比较,见图11所示.

四、结语

本文研究了Snort入侵检测系统的特征、工作原理,针对Snort的不足提出了基于采样的入侵检测系统,并通过实验证明了该采样算法能显著提高Snort的入侵检测效率.