- UID
- 1023230
|
0 引 言
在保障网络的安全性时,入侵检测系统已经成为必选的技术和手段,因为它比起其他的安全技术存在着很多优势。用户在选用IDS时,总是从各自不同的需要来考虑。要衡量IDS的优劣,就需要明确IDS应该具备的性能指标,设计有效的方法来测试。实际上入侵检测系统的测试是一个难度较大的问题,也是一件费时耗力的工作。对于这一工作,许多研究机构都进行了相应的研究,给出了自己的测试方法和测试结果。例如MIT的林肯实验室分别在1998年和1999年进行了 IDS的两次测试,这两次测试的结果曾受到广泛的关注。IBM的苏黎世研究院和其他一些研究机构也做过相似的工作。他们的工作都专注于IDS评估和测试的本身,没有过多考虑到开发者的需要,而且他们的方法实现起来代价都很大。本文既考虑到测试的目的,又考虑了开发者的需要,尽量能够保证测试环境和开发环境的融合,提出模拟现实的网络环境,然后搭建软件平台进行IDS测试的方法。该方法比较容易实现,可控制性强,能够满足IDS测试的多种需要,随后的仿真测试说明该方法是有效的。
1 IDS测试目的及指标
入侵检测系统是一个软硬件结合体系,可以借鉴软件测试方法来测试和评价入侵检测系统,但是纯粹的软件测试方法并不能很好地满足IDS测试的需要。首先要确定应该以什么样的标准来测试IDS,也就是选择测试指标。根据IDS的特点采取定量的测试方法,这些测试指标侧重于那些定量的测量,以及与检测准确度相关的项目。
IDS的主要目的就是有效地检测出入侵行为,并进行及时处理。检测率用来确定在一个时间段内及在给定的环境中IDS可以正确检测到攻击的比率。当系统将正常的行为确认为人侵行为时就是发生误报(False Positive)。误报率用来确定在一个特定的时间段内及在给定环境中IDS所产生的误报比率,大多数产生误报的原因是正常的非恶意的后台流量引起的。当系统将入侵行为确认为正常行为时,则发生漏报(False Negatire)。漏报率用来衡量一个特定的时间段及在给定环境中IDS所产生的漏报比率。
检测率和误报率是紧密相关的,受试者行为特性曲线(Receiver Operating Characteristic,ROC)反映了这两者之间的关系。ROC曲线的横轴是IDS的误报次数,纵轴为检测率,该曲线准确地刻画了IDS的检测率与误报率情况。利用ROC曲线还可以找出IDS的检测和误报之间的平衡点,但是为了获得这个点需要预先做很多工作。
除了上面的几项指标外,还有几项重要的指标需要加以考虑。它们包括:自身安全性(抵抗对于入侵检测系统本身的攻击)、处理高数据流量的能力、事件关联能力、检测未知攻击的能力、确认攻击是否成功的能力等。
2 IDS测试环境
测试环境是对IDS进行评估和测试的基础,因为它直接关系到测试的结果,也直接影响测试的真实性和客观性。无论何种类型的IDS,其运行的真实环境总是一个具体的网络。但是测试中环境却不拘泥于是否是在某种特定的网络里,IDS的部署和配置总是根据它所在的网络环境而千差万别,建立的测试环境应该能够满足 IDS测试中多样性的需要,使它不仅能对测试环境进行灵活的调整,又能在现实网络中使其流量要求与技术指标相符合。测试环境分为三种:现实网络环境、纯软件模拟环境和模拟网络环境。
2.1 现实网络环境和模拟环境
现实网络环境就是本地现有的正在实际使用的网络环境。整个因特网就是一个最大的现实的网络测试环境,如图1所示。
在内网中布置了IDS,该IDS可以是基于主机(Host-based IDS)的,也可以是基于网络(Network-based IDS)的。发起攻击的主机(产生攻击行为的主机,这样的主机可以是一台也可以是多台)可以在网内,也可以在网外。网内和网外是一个相对而言的概念,把与 IDS同在一个局域网中的设备和节点看作网内,其他情况称为网外。发起攻击测试的主机如果是在网内,那么它们应该与所要测试的IDS在同一个局域网内,如果这台主机是在网外,那么它的位置跨度可以很大,它们可以是因特网上的任何机器。
另外,还有一种完全用软件来模拟的方法。这种方法类似于虚拟机技术(如Vmware)和网络仿真技术(如OPNET,ns2)的结合。用一台单主机模拟出一个完备的网络环境,在此虚拟网络环境中部署IDS,然后再配合测试软件就可以进行IDS的测试。这种方法有一定的可行性,因为它的环境单一性使得测试人员能够方便地测试一些轻量级的IDS或者测试IDS某个特定的功能方面。但是这种测试环境下测试效果的好坏还有待于进一步的研究和试验证明。
现实环境的优点是不需要专门建立,实时性高,对特定类型的IDS测试时其测试结果的可信度高;但是也有很多缺点,最主要就是可控性不高,所能测试的IDS范围比较窄,种类比较少。纯软件环境因其本身的运行,十分消耗资源,因此难以胜任较大规模的IDS测试工作。
2.2 模拟网络环境
本文选择模拟网络环境来进行测试环境的设计,模拟测试环境大多数可以由实际的开发环境经过简单的改动而得到。它与前两种测试环境相比,优势在于:可控性好,能够根据测试需要定制和更改环境,可以测试的攻击范围大,种类多等。另外,在设计合理的情况下,其测试效果并不亚于真实的网络环境。从实现的角度考虑,这种模拟测试环境也能够满足绝大多数IDS测试的需要。基本思路是根据测试的要求,用一个简单的局域网来模拟规模较大的城域网和因特网。使用模拟网络环境进行IDS测试时需要开发与之相配套的软件平台。模拟网络结构如图2所示。
此网络可以模拟规模较大的、实际的网络结构和设备,也可以模拟实际网络中多种多样的网络服务。具体方法是利用专门产生网络流量的计算机来产生所需要的网络流量,然后使用软件把这些流量动态地分派给网络中的节点。一般需要两种产生流量的机器:外部流量产生器,产生模拟网络和因特网之间的会话和流量;内部流量产生机器,产生网络内部需要的会话和流量。这两种流量产生器能够产生比实际网络上更为丰富的会话和流量,因为它们可以进行人为的控制。流量的产生要考虑测试所需流量的大小以及网络规模的大小;另外还需要对多种网络服务和网络协议进行模拟,以及模拟一些分布式的流量,所以这样的流量产生器有时要占用好几台性能优越的计算机。
边界路由器介于流量产生器和网络环境之间,它起到划分内部流量和外部流量的作用。边界路由器还有向网内的其他路由器和设备分配流量的作用。其他的如防火墙和主机等设备与它们在实际网络中的作用和位置相同。这样的模拟环境基本上反映了真实网络的情况,进行合理的配置完全可以模拟真实网络环境的技术参数、流量要求等指标,而且整个模拟环境可以与外界完全隔离开来独立使用。
3 IDS测试平台
有了测试环境还不能完成IDS的测试工作,还需要针对测试环境利用软件搭建一个测试平台。基于上面的模拟网络的测试环境,建立软件测试平台,其流程如图3所示。
MIT在入侵检测系统测试评估上发展了一种系统和通用的评估方法。全部工作流程包括数据集的构造、测试过程、测试结果分析,提供改进算法的意见。这里提出的平台既考虑了通用性,也考虑了实际IDS开发环境的因素,它能够完成上述流程的全部工作,其中的关键部分有流量仿真、攻击仿真、事件合成等。
3.1 流量仿真
评估所需的网络流量仿真是一项很复杂的工作。常规用于研究网络性能的流量仿真方法所产生的数据包,不考虑数据内容,极有可能引起IDS的大量误报。一般的 IDS都工作于网络层或网络层之上,它们在协议规定的框架内对网络数据包的内容进行分析。因此,IDS评估环境中的网络流量仿真,一定是具体到各个协议的流量仿真。流量仿真的子系统结构如图4所示。
由于流量的产生不仅来自网络外部,还有来自网络内部其他主机的流量,这样就需要生成两种类型的网络流量:外部网络流量和内部网络流量。对应上一节中的测试环境,这两种网络流量是由测试环境中的外部流量产生器和内部流量产生器分别产生的。这两种类型的流量中又根据测试需要包含有正常的网络会话流量和非正常的 (有时是攻击性的)网络会话流量。
3.2 攻击仿真
攻击仿真是整个测试过程的关键,也是测试结果是否合理的关键。攻击仿真的前期准备工作是收集足够多的攻击数据,实际上是收集现有所有已知的攻击和系统的弱点数据。这些数据主要来自一些研究机构,像MIT的林肯实验室、IBM的苏黎世研究院和一些网络界有名的讨论组(社区),如The NSS Group等,其中MIT林肯实验室的数据就其可用性、全面性和权威性都得到了广泛的认可。
测试用例的选择应该尽可能的全面,但是不可能把每一种现有的攻击都试验一遍,因此要把所有的攻击按照某种标准进行划分,在所划分的每个子集里挑选若干个典型的攻击来完成测试。实施具体的攻击,可以利用软件直接来实现,也可以用编写脚本的方法来实现,利用shell编程和脚本语言编写攻击脚本来模拟入侵用户的行为,实现攻击的重放。
使用脚本和脚本解释器的方法来模拟用户的行为,对编写好的脚本进行解析,执行再利用网络连接命令连接到远端主机,就能够实现多种多样的攻击重放。如果编写并输人多个不同的脚本,用并行算法加以控制就能够模拟多个并发用户的行为,实现多用户并发攻击的模拟。攻击脚本的编写要事先制定统一的编写规范和格式。
3.3 事件合成
事件合成也是很重要的环节,它是对网络流量、模拟攻击和测试对比的综合考虑。一个仿真事件要包括事件的发生时间、结束时间和事件的内容等其他一些必要的相关信息。网络流量仿真中的事件可以是每一个网络连接,基于连接的流量如TCP,也可以是一个网络数据包,基于数据包的流量如UDP。主机使用仿真中的事件可以是网络服务的每次使用,也可以是一条用户指令的执行。合成好的原始事件一方面给测试模块做测试之用,一方面用日志记录下来以备离线考察。将测试结果和原始事件进行有效的对比就可以得出大部分的测试结果。
3.4 其他模块
正常流量数据库存放准备好的网络流量数据,为流量仿真模块的调用做事先的准备;攻击数据库存放收集到的攻击数据,攻击仿真模块从攻击数据库取得数据处理后形成攻击。事件日志记录合成事件的日志和事件原始数据,这些数据用于对测试结果的补充和一些离线的测试。运行日志专门记录IDS运行产生的一系列事件及其对入侵行为的反应。测试结果模块最终向用户提交一份指定格式的测试报告,记录测试结果,还可以进一步给出对IDS改进的意见等。
3.5 测试过程
整个平台的工作过程如下:流量数据库提供网络会话流量由流量产生模块处理后生成所需的网络流量,攻击数据库提供原始的攻击素材,由攻击仿真模块加工后形成攻击数据流;两者经过事件合成模块合成为攻击事件;攻击事件一方面对待检测的IDS发起攻击,另一方面送给测试模块作对比之用;测试模块根据测试算法通过和待测IDS的双向交互,评估IDS的各种行为和对入侵事件的反应;事件日志对攻击事件进行记录,运行日志对IDS的运行情况进行记录;最后由测试结果模块报告测试的结果。
3.6 测试结果
测试环境也可以用于IDS的开发环境,只需要进行简单的调整。IDS开发过程中的一些性能测试、算法测试和攻击特征优化测试等都能够在这个环境中完成。本研究的初衷就是能够使开发环境和测试环境相统一。利用这个环境对开发的基于多代理的入侵检测系统进行了相应的测试,其结果如下:此IDS运行时,CPU占用率为0%~5%,内存开销为7 492+6 648 KB;用tcpreplay产生TCPDUMP格式的文件,进行9 Mb/s的流量重放时,IDS处理到的流量为5.46 Kb/s;对于攻击测试,主要测试了Dosnuke,SYN FL00D攻击以及扫描攻击等,其检测率和误报次数的ROC曲线如图5所示。可以看出,该IDS在误报比较少的情况下能够达到比较好的检测率。
4 结 语
网络的发展和新网络入侵方式的出现,促使了入侵检测系统的不断发展和完善,入侵检测系统的测试技术也随之不断发展。实际而言,入侵检测系统的测试不但存在很多的困难,而且也非常的耗时耗力,例如MIT有名的1998年和1999年测试都分别耗时一年时间。但是对于入侵检测系统的测试又是一个不得不解决的事情。当然,IDS的测试本身还存在一些难题需要解决,如攻击脚本和受害软件难于收集,对基于异常的系统还缺乏有效的方法进行测试等。这些都有待于更进一步的深入研究。 |
|