基于Snort的主动式入侵检测系统的研究

2018-11-01 03:04袭雅薛俊凯
电脑知识与技术 2018年19期
关键词:入侵检测网络安全

袭雅 薛俊凯

摘要:本文主要研究一种基于Snort的主动式入侵防御系统,利用协议分析的方法,有效解决了当前主流入侵防御系统中准确性不足、实时性较差的问题,提高了系统检测效率和便捷性,有效增强了网络入侵防御系统的性能和安全性,更好地满足了复杂网络环境中入侵行为检测的需要。

关键词:入侵检测;网络安全;Snort

中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2018)19-0038-02

本文主要研究一种基于Snort的主动式入侵检测防御系统,通过构建通用的软件漏洞检测防御系统,提升软件系统安全检测的效率和便捷性,并从网络安全角度为网络应用提供可靠服务。该系统能够利用高度规则的网络协议,采用协议分析的方法,有效提高检测判断的准确性与实时性等问题,更加准确地检测出网络中的攻击行为,并进行实时、主动的防护,提高系统的性能和网络的安全性,有效地防止黑客入侵。

1 研究背景

入侵检测系统(IDS)是一种主动式防入侵工具,通过抓取并分析流量数据,检测相关入侵行为,并利用警报响应系统拒绝入侵攻击;同时,IDS在对网络进行监控时不会为用户的网络性能造成负担。因此,IDS运用脆弱性评估技术以及扫描手段,能够在保证高效的网络传输速率的情况下,减轻网络管理人员负担,提高网络安全性。

入侵检测系统的数据源提取是由Data模块来实现,在IDS获得数据源的数据之后,此模块能够实现对数据的简单分析处理,再将经过处理的数据交给Data分析模块;Data分析模块可以对数据进行深层次的分析,嗅探攻击并根据分析的结果产生事件,再传递给事件响应处理模块;事件响应模块用于警告与具体的反应操作[1]。

当前主流的入侵检测系统是开源的Snort,但Snort检测规则的准确率和匹配效率限制了自身的检测能力,若出现规则检测的准确率和匹配效率不能满足IDS的使用,就无法及时发现入侵攻击行为,而且会影响计算机系统性能。为了解决Snort出现的这些问题,需要改进和优化Snort系统的检测规则,以加快其匹配速度,有效提高Snort的检测效率。

2 基于Snort的入侵检测防御系统研究

Snort系统是一个开源的、轻量级的、由C语言编写的网络入侵检测系统。采用规则的搜索机制以及模式检测技术,能够针对不同方式的入侵行为,提炼出入侵行为的特征码,再根据要求规范输出检测规则,最终形成一个有规则数据库,将其与捕获的数据包进行比对分析,判断入侵行为是否成立[2]。其优点为对OS依赖性较低,能够在多种硬件平台稳定运行;模块化结构的设计,以及文本文件方式存储的检测规则,使得Snort具有良好的可扩展性;Snort的警报机制的设置,能够提供实时的安全服务,功能性强,有较广的使用范围。不足在于构成组件较多,所以无法保证任意安装的Snort系统能够稳定运行;自我适应能力差,在检测入侵行为时,系统内部的特征匹配算法不能很好地适应一些意外情况;BM算法没能发挥其最大作用,造成检测速度相对较慢;过程中不排除有误报的情况,对于正常程序产生的部分数据流量也会发出警报[3]。

Snort入侵检测系统主要由解码器、预处理器、检测引擎、日志报警系统等模块组成。解码器用于监听网络上传输的数据包,进行协议分析,为检测引擎提供备检数据;预处理器模块用相应的插件来检查原始数据包,发现数据的端口扫描、IP碎片等,组装数据分片,提高检测效率;检测引擎模块是Snort系统的核心模块,当接收到数据包时,该模块根据预先设置的规则检查数据包,一旦发现有匹配的内容和规则,就通知报警模块,最终将结果记录在日志数据库中。

3 Snort系统规则的改进设计

由于规则检测引擎模块是Snort系统的核心模块,因此若要实现基于Snort的主动式入侵检测系统的功能必须改进检测引擎模块的性能,以提高检测效率,其方法主要由如下3种。

1) 使用K-means聚类算法

K-means聚类算法生成系统的行为模式库,过滤大量数据、添加异常检测功能,以减少Snort系统误报的次数,提高系统的检测速率和正确度。

K-means算法在数学上可以描述为如下几个公式:

[D=?Ci]

[Ci≠?i=1,2,…,k]

[Ci?Cj=?i,j=1,2,…,k;i≠j]

其中,[D=Xi,i=1,2,…,n],[Xi]表示待處理的某一个数据对象,[D]是所有数据对象的集合,[n]代表数据集合[D]中数据对象的总数,[k]为要划分的聚类个数;[Ci]表示其中的一个聚类。针对K-means聚类算法来说,保证划分的聚类非空是首要前提,每个聚类集合中至少要包含一个数据对象;其次,要求类与类之间不允许相交,每个数据元素能且只能被划分在一个聚类中,不会在类与类之间有相同的元素存在。此外,算法中还需使用误差平方和准则函数对聚类结果的准确性进行评测。利用K-means算法,从聚类中心选取的优化、值的选取和聚类准则函数等方面对Snort系统进行改进,提高了系统算法的聚类性能[4]。

2) 在检测引擎中加入快速链表

添加一个快速链表到Snort检测引擎模块的第二维链表和第三维链表间,能够缩短检测链的长度,提高检测速度,减少数据包被覆盖的问题。

一般情况下,针对计算机对内存和CPU速度不匹配的问题,大多数选择在两者之间加入Cache。由于Cache容量小,存取速度快,对CPU使用频率较高的部分指令和数据进行缓存,以提高运行速度。因此,将Cache加入Snort系统中,能够提高入侵检测时数据包的匹配,提高工作效率。

3) 改进Snort系统的BM算法

通过将模式往后移动的方法进行字符匹配是BM算法的主要思想,所以关键问题就是移动多少位。移动一个字符位置是最简单的做法,从理论上来说,模式串算法移动的位数越多,效率越高。因此,需要在保证数据包匹配正确的前提下,找出一种新方法使模式的移动位数尽可能的多[5]。本文提出一种改进方式,即通过减少比较次数和移动次数以达到提高匹配速度的目的。当文本串与模式串不匹配的时候,对比文本串中与模式串最右段对齐位的下一位,当模式串在遇到不匹配情况时,能跳过更多位,达到提高Snort检测引擎的工作性能的效果。

4 结束语

本文通过对入侵检测系统以及Snort系统的分析,提出了改进Snort入侵检测系统的几种方案,能够主动检测防御网络入侵行为、网络漏洞以及信息安全问题,保证网络的安全性和可靠性。基于Snort的主动式入侵检测防御系统的各个模块,能够相互链接,数据共享,并且能适用于较为广泛和复杂的网络环境,但是面对一些新的攻击手段,Snort仍需在异常检测和入侵防御方面继续改进。

参考文献:

[1] 黄娟. 网络入侵检测系统模式匹配算法的研究与实现[D].四川师范大学,2008.

[2] 孙立媛,朱亦宁,孙锐轩.Snort规则的分析与实现[J].计算机安全,2009(9):45-48.

[3] Syed Ali Raza Shah, Biju Issac.Performance comparison of intrusion detection systems and application of machine learning to Snort system[J].Future Generation Computer Systems,2017.

[4] 雷鹏玮.基于Snort的入侵检测系统的改进与实现[D]. 北京邮电大学, 2015.

[5] 王培凤,李莉.一种改进的多模式匹配算法在Snort中的应用[J].计算机科学, 2012, 39(2): 72-74+79.

猜你喜欢
入侵检测网络安全
网络安全知多少?
网络安全
网络安全人才培养应“实战化”
上网时如何注意网络安全?
多Agent的创新网络入侵检测方法仿真研究
“4.29首都网络安全日”特别报道