网络入侵检测系统性能研究
2018-12-03马恺
马 恺
(辽宁对外经贸学院,辽宁 大连 116052)
1 引言
随着越来越多的信息被存储在网络中,计算机网络的安全也越来越受到人们重视,变得越来越重要.网络入侵检测系统的构建成了一个包含计算机网络的关键技术.最早的网络入侵检测系统是基于专门的检测方法,手工编写代码.这些入侵检测系统对发生在网络中的已知的入侵行为提前编写代码,予以检测,包含计算机网络的安全.这些方法的主要问题是不能检测到新出现的网络入侵行为和攻击行为.为了解决这一问题,基于数据挖掘方法构建的入侵检测模型的方法受到学者们的广泛的关注.基于数据挖掘方法的入侵检测模型从已知攻击行为和正常行为中得到入侵行为的范式,从而发现未知的入侵行为.而且,这类模型比手工编写代码的模型更快速,自动化程度更高.数据挖掘技术在入侵检测系统中得到了很好的发展,已经出现了许多高性能的网络入侵检测系统.然而,仅用数据挖掘技术是不能实现网络入侵检测系统的部署的,虽然基于数据挖掘的入侵检测系统有更好的检测性能和概括能力,在实施和部署这些入侵检测系统时,仍然存在一些问题.
这些问题大体上可以分为三类,分别是检测性能问题,时效问题和可用性问题.通常情况下,基于数据挖掘的入侵检测系统,尤其是异常检测系统,有比手工编码系统高的假正率,这降低了基于数据挖掘的入侵检测系统在真实环境中的可用性.另外,由于这类系统需要在训练集和实际数据上进行大量的计算,在实时环境下,该类系统效率较低.基于数据挖掘的入侵检测系统还需要大量的训练数据,这些训练数据需要进行标识,用于分类器的构建,标识这些数据也是一个很费时的工作.
本文主要研究使用数据挖掘技术构建入侵检测系统框架,探讨实时的基于数据挖掘的入侵检测系统的布置,给出一些改善入侵检测系统的精度和效率以及可用性的方法,建立更高效的网络入侵检测系统.
2 基本概念
入侵检测是指对入侵行为进行监测,发觉正在实施的入侵行为.它通过对节点上收集到的信息进行分析,发现网络及系统中存在的违反安全策略的动作和受到攻击的行为,在对网络性能不造成影响的情况下,监测网络,有效保护系统,防御对系统的内部攻击、外部攻击以及误操作等入侵行为.入侵检测方法还能提供针对这些攻击的一些具体的防护手段,例如对入侵证据的记录、断开网络连接等,是网络安全的重要组成部分之一.
入侵检测系统是按照一定的安全策略建立入侵检测措施,并发现入侵行为的软硬件构成的安全保障结构.入侵检测系统能识别入侵攻击,对检测到的入侵动作和攻击动作有提醒及防御功能.
入侵检测系统的抽象模型是由Denning D E在1987年提出的[1],该文首次将入侵检测作为一种计算机系统安全防御措施,是入侵检测发展史上的重要理论模型.文中提出的模型独立于具体的系统、应用环境、系统健壮性以及入侵类型无关,提出的是一个针对通用入侵检测的框架,对设计具体的入侵检测应用系统有指导意义.
该抽象模型有六个主要的组成部分,分别是主题、对象、审计数据、活动描绘、异常记录和行为规则.其中,主题是由目标系统中的某一个活动的发起人给出的,在应用中就是正常用户.对象是被系统管理的资源,如文件、命令集和设备等.审计数据是记录目标系统对于主题在对象上的行为做出的反应.活动描绘以主题在对象上的行为特性来自动构建.异常记录时在检测到异常时,做出的相关记录.行为规则在一些条件满足时,执行的行为,如更新活动描绘,检测异常行为,生成反馈报告等.这个模型可以看成是一个基于规则模式匹配的系统.当一个审计数据生成后,与活动描绘进行匹配,根据匹配后的类型信息,确定应用哪个规则来更新活动描述,检查异常行为,并报告异常.
根据检查技术的不同,可以将入侵检测分为误用检测(misuse detection)和异常检测(anomaly detection)两类.误用检测运用已知攻击方法,提前定义好入侵模式,通过判断已经定义好的入侵模式是否出现,实现入侵检测,因此也被称为特征检测[2].误用检测是依据已有的具体特征库,对入侵模式进行判断,能准确地发现特征库中已记录的入侵模式,检测准确率高.但是误用检测无法检测到特征库里不存在的入侵模式,即无法检测出新的攻击或者现有攻击的变种,这成为误用检测的一个致命的弱点.异常检测不依赖于已有的入侵模式的特征库,它根据使用者的行为或资源使用状况,来判断入侵行为的发生.异常检测可以解决误用检测中的问题,发现未知的攻击模式,但是该方法可能会把正常行为判断为入侵行为,误报率较高.
使用网络数据来分析入侵行为,按照使用的数据的不同,可以分为基于网络数据包的检测和基于网络连接记录的检测两种[3].基于网络数据包的检测主要检查网络中传输的每一个网络数据包,分析数据包中的协议字段以及负载内容,查看这些数据中是否出现违背协议或者包含异常负载内容.基于网络数据包的检测能从报文级别,实时发现入侵,对入侵实现实时反馈,但这种检测方法需要处理的数据量较大,可能会出现同时也丢包现象.另外,单个数据包的信息较少,且各包之间没有关联,仅仅使用这些数据包很难实现有效的异常检测.而基于网络连接记录的异常检测把网络传输数据还原成基于传输层的连接记录,这些连接记录反应了网络会话期间多个方面的内容特征,包括网络传送的字节数、建立的文件数、尝试口令的次数、错误分片的次数、尝试命令的次数等等,可以通过这些信息区分出连接是否正常.比如,正常情况下的网络连接,不会出现反复猜测口令的状况,因此尝试口令次数的属性值应该是很小的,当该属性值较大时,就很可能是一种通过口令猜测实现恶意入侵的行为.
3 入侵检测系统的精度
一个网络入侵检测系统的检测攻击行为可以用精度来度量.精度主要用两个衡量指标,一个是检测率,一个是假正率.检测率是系统检测到的攻击行为的比率,而假正率是将正常行为误判成入侵行为的比率.这两个比率可以通过在数据集上测试系统而获得.二者的大小可以通过设置进行互相转换,用不同参数值可以创建一个ROC曲线,检查两个入侵检测系统的ROC曲线可以比较二者的精确度[4].在实际应用中,由于只有假正率低的的检测系统才是有用的,因此,对应于可以接受的低假正率的少部分ROC曲线才是真正值得关注的.
为了提高基于数据挖掘的入侵检测系统的精确度,本节提出一些独立的技术,包括基于审计数据提取特征的一般框架,生成用于降低假正率的人工异常的异常检测方法和联合异常检测模型和误用检测模型的方法.
3.1 特征提取
对入侵进行检测有两个前提假设,一个是系统的行为是可观察到的,另一个是不同的证据可以用来区分正常行为和入侵行为.能被观察到的原始数据称为审计数据,而从原始的审计数据中抽取出的证据被称为特征,可以使用这些特征建立入侵检测模型,对入侵行为进行估计.特征提取就是决定从原始审计数据中抽取什么样的证据能对分析入侵行为最有效的过程.因此,特征提取是构建入侵检测系统的一个关键步骤.也就是说,正常审计记录与入侵行为的审计记录对应的特征值显著不同的特征集合是提高入侵检测的精度的关键.
为了获得这些关键的特征,对一些原有的数据挖掘方法进行改进,使其能从原始的审计数据中实现特征的选择和构建.首先,对原始审计数据进行处理,使它们成为包含基本特征的分离的记录.例如,在网络传输中,时间戳,时间间隔,传输源IP和目的地IP,端口等等.然后在这些数据上应用频繁模式挖掘算法,获得能描述特征之间的关系的频繁模式和在多条记录中频繁出现的事件.正常行为的一致模式和与入侵行为相关联的独特的模式会被识别出来,并用来建立关于网络连接记录的额外的特征.使用这种方法建立的特征能清晰地识别正常行为中的入侵行为.
算法可以描述如下.
该算法从语法上描述和分析了一个频繁情节,并用求个数、百分比及平均来构建统计特征,并在某个时间窗口内来衡量规则的特征,能提高基于数据挖掘的入侵检测系统的精度.
3.2 人工异常数据生成
在采用机器学习方法来实现异常检测时,存在着一个难题,在于让学习算法找到已知类和未知类之间边界.由于在训练集中,没有异常行为的实例,一个机器学习算法不会在已知数据和异常数据之间指定一个边界.因此,提供一种人工异常数据生成技术,让传统的学习算法能检测到异常行为.生成的人工异常数据被插入到训练集里,用于帮助传统的学习算法发现原始数据集里的边界.所有的人工异常数据的类别标签定义为异常.生成人工异常数据的依据是“最近缺失”,即与已知数据最接近且不在数据集里的实例,作为人工异常数据出现.因为假设训练集里的数据是有代表性的,所有与已知数据最近但缺失的数据被假设为异常数据,作为人工异常数据生成.
由于无法确切地知道已知数据实例和异常数据实例的真正边界,假设边界与存在的已知数据很接近.为了生成与已知数据很接近的人工异常数据,一种启发式的方法是改变一个特征的属性值为未出现于该数据集里的属性值,并保持其他特征的属性值不变.一些实例空间中的已知数据区域可能是稀疏的,可以将稀疏区域看作海洋中的一个小岛屿,而将密集区域看作一个大岛屿.为了避免过拟合,学习算法通常倾向于发现更多通用模型.而在入侵检测中,数据集里只有已知数据,因此在预测这些已知类时,需要阻止模型过于通用.也就是说,需要避免多个稀疏区域被划入一组形成一个密集区域,以生成单个覆盖所有稀疏区域的大区域的情况发生.可以在这些稀疏区域的周围生成人工异常数据,并让学习算法发现指定的能从其他实例空间中区分出这些稀疏区域的边界.换言之,生成的人工异常数据就是要能放大这些稀疏区域.
稀疏区域可以从每个特征的非频繁值中找到,为了放大稀疏区域,需要在稀疏区域周围依据稀疏度生成合适数量的人工异常数据.3.3 异常检测和误用检测的结合
在有些研究中,异常检测和误用检测被认为是两个独立的问题.异常检测算法通常针对正常数据进行训练,而误用检测则通常在标注为正常和入侵两类标签的数据上进行训练.直观上看,一个结合异常检测和误用检测的优点的算法会有更好的检测效果.因此,在生成人工异常数据的基础上,设计一个能实现异常检测和误用检测的模型.这就使得传统的有监督的指导学习算法可以使用,同时实现对异常行为和误用行为的检测.算法在包含正常记录和对应入侵行为的记录的数据集上,训练一个单一的模型,另外,也生成人工异常数据,并在这个联合数据集上,训练算法模型,这种模型能同时检测异常和误用.
结合误用检测和异常检测的学习,会得到一个规则集合.这个集合里有能将一个网络连接分类成正常的规则,也有能区分已知入侵类别的规则.为了估计这种结合方法的效果,将入侵行为划分为一些簇.通过逐渐增加簇到数据集里并生成人工异常数据,创建出多个数据集.以此来模拟真实世界中,发现新的入侵并将其合并到数据集的过程.在这个数据集上学习到的模型,包含能识别训练集里的已知入侵行为的误用规则,未知入侵行为的异常规则,以及特征化正常行为的规则.
4 入侵检测系统的效率和可用性
4.1 入侵检测系统的效率
数据挖掘在入侵检测系统的典型应用是实现线下入侵检测系统,因为学习算法需要处理的大量的审计数据.而效率更高的入侵检测系统应该能在入侵行为发生时就发现异常,实现实时的在线入侵检测功能,保障网络的安全[5].与线下入侵检测系统相比,实时系统最主要的目标是尽可能早地发现入侵行为,因此,系统构造的模型的效率是一个非常重要的因素.
由于现有的很多基于数据挖掘的入侵检测系统是使用线下数据来学习,构建入侵模型,也就是说当一个事件被检验时,和这个事件有关的所有行为都已经发生了,这些行为对应的所有特征都包含有意义能用于模型检查的值.因此,若直接将这些模型用于实时环境下,就会出现一个事件发生后,不会被检查,直到与这个事件相关的所有行为都发生以后,对所有的相关信息进行整合,才能对该事件进行检测.这就意味着入侵检测被耽搁了,这会导致无法及时发现某些攻击行为,如DoS攻击等.因此,检查与计算每个特征有关的时间延迟从而实现模型的估计效率是很有必要的.一个特征的时间延迟不仅包括计算特征的时间而且包括等待其就绪的时间.但是,从时间消耗的角度看,主要关注计算时间.根据特征构建方法,可以将网络入侵检测系统中的特征分成不同的时间消耗水平,并为不同水平的消耗设置一个具体的值以方便时间消耗的估计.
为了减少计算时间的消耗,被检查的规则在保证满足需要的精度下,要尽可能经常使用时间消耗水平低的特征.可以使用多规则集方法,每个规则集使用不同时间消耗水平的特征.系统先用低时间消耗的规则集进行检测,当低时间消耗的规则集不能满足预测的精度需求时,再使用高时间消耗的规则集.采用这种规则检测方法的网络入侵检测系统能适应实时检测的需求.系统用一个感知器从原始网络通信数据中抽取原始的特征建立连接记录,然后计算主要特征,将特征按时间消耗水平进行分类,用低时间消耗的规则集先进行估计,若不能满足精度要求,则再用高时间消耗的规则进行预测.
4.2 入侵检测系统的可用性
基于数据挖掘的入侵检测系统需要用大量的训练集来获得判断行为类别的分类器,这就使得系统需要管理训练数据和历史数据,而且,一旦有新数据被分析,则需要更新模型,另外,训练数据集是大量的有标签的数据,因此这种系统的复杂性较高.为了提高系统的可用性,需要减少更新模型的数据量,以及降低对训练数据的需求量.
为了能检测到新建立的模型,用全部分类器作为通用的但相互独立的模型来适应现有的模型,这样既可以提高学习算法的效率,又可以改善系统部署的性能.在实际应用中,一旦发现了一个新类型的入侵模式,就需要快速调整现有的检测模型,做出一个临时改进的模型使其能检测新发现的入侵,尽管可能无法发现全部的新攻击行为.同时,需要花费较长时间,重新计算检测模型,以得到能发现所有新入侵行为的更新后的检测模型,然后替换掉临时的改进模型.为了简化模型更新的内容和步骤,可以为新的入侵行为生成一个轻量级的分类器,保持原有模型的主要部分不变,对于一个新到的连接记录,可以先用原有模型进行检测,若未发现异常,则再用新生成的分类器进行检测.最终的预测结果是综合两个模型结果的函数值.这样,仅对更新数据计算新的分类器比计算所有的数据生成新的整体模型要更有效用.
创建有效用的检测系统,需要在包含大量有标签数据的训练集上训练算法,这也是检测系统部署的一个主要困难.对于误用检测系统,训练集的数据要被精确的标记为正常行为或攻击行为.对于异常检测系统,训练集的数据只需被验证是正常行为即可.但是,这两种系统,为标记训练集所花费的消耗基本是相同的,而数据采集是依据具体的环境来实现的,因此,应用于不同环境的每个系统都需要进行这种数据标注工作,会消耗大量的人力物力.当采用无须标注的数据集作为训练集进行学习时,会降低部署检测系统的消耗.无监督学习算法能在无标签的数据集上进行学习,获得分类器.无监督学习异常检测算法主要基于两个假设,一是异常行为的数量相对于正常行为的数量来说,是非常少的,这样就意味着攻击行为在整体行为中占的比例非常小;另一个是异常行为与正常行为的表现不同,攻击行为和正常行为对资源的使用有很大不同.这样,可以把异常行为看作正常行为的异常点,将异常检测转换为离群点检测问题,采用无监督学习算法来解决.
5 结束语
入侵检测技术在网络监控等多个领域里发挥了越来越重要的作用,入侵检测系统的构建对入侵检测的效果有至关重要的作用.本文探讨提高基于数据挖掘的入侵检测系统性能的一些方法.分别在网络入侵检测系统的精度、效率和可用性三个主要方面分析限制当前的系统性能的主要原因,并提出一些改进的方法.在未来的工作中,将继续探索提高入侵检测模型的效用的技术.