您好!欢迎来到光通信

当前位置:资讯首页 -> 行业动态

入侵检测系统

浏览:2749次

入侵检测系统(Intrusion Detection System,IDS)是一个目前热门的研究领域。由于无法完全避免系统被攻击或者入侵,入侵检测系统就成为一个能及时发现攻击或入侵,并能够向安全管理者提供有价值的安全警报的系统。由于入侵事件的实际危害越来越大,人们对入侵检测系统的关注也越来越多。入侵检测系统便成为网络安全体系结构中的一个重要环节。


那么,如何才能够检测出入侵呢?其实入侵检测跟其他检测技术有同样的原理,那就是:从一组数据中,检测出符合某一特点的数据。攻击者进行攻击时留下痕迹,这些痕迹和系统正常运行时产生的数据混在一起,入侵检测系统的任务就是从这个混合数据中找出入侵的痕迹,如果有入侵的痕迹就报警有入侵事件发生。


通用入侵检测框架(Common Intrusion Detection Framework,CIDF)阐述了一个入侵检测系统(IDS)的通用模型,是当前IDS 的典型结构。它将一个入侵检测系统分为以下组件:


事件产生器(Event generators)

事件分析器(Event analyzers)

响应单元(Response units)

事件数据库(Event databases)

CIDF 将入侵检测系统需要分析的数据统称为事件(Event),它可以是基于网络的入侵检测系统中网络中的数据包,也可以是基于主机的入侵检测系统从系统日志等其他途径得到的信息。它也对各部件之间的信息传递格式、通信方法和标准API 进行了标准化。事件产生器的目的是从整个计算环境中获得事件,并向系统的其他部分提供此事件。事件分析器分析得到数据,并产生分析结果。响应单元则是对分析结果作出反应的功能单元,它可以作出切断连接、改变文件属性等强烈反应,甚至发动对攻击者的反击,也可以只是简单的报警。事件数据库是存放各种中间和最终数据的地方的统称,它可以是复杂的数据库,也可以是简单的文本文件。


在 CIDF 模型中的四个组件中,应该说事件数据库是更重要的核心。事件产生器、分析器的不同只是采集和分析的效率,比如,很多厂商的IDS 都采用更多的协议分析模块来加强数据的分析能力。而事件库则很明显地体现了 IDS 的检测能力(不是性能),也同检测引擎有密切关系,因为通常的误报和漏报都同事件定义明确相关。


一、入侵检测系统的结构


入侵检测系统在部署时,通常也要考虑部署的总体结构。入侵检测系统的总体机构就是其各个组件建在网络上的分布,以及它们之间的关系。一个入侵检测系统可以由一个或者多个检测单元组成。一个检测单元就是一个有相当独立的信息源和检测技术。也就是说,一个检测单元可以检测某个范围内的入侵事件,例如检测某个网段、检测某个服务等。


从结构来看,一个检测单元可以分为:单型、主从型和对等型入侵检测系统,如图1所示。这三种类型可以把入侵检测系统体系结构的发展过程体现出来。


图1  单元检测的三种结构


在初始阶段,入侵检测系统的结构是单型 IDS,就是信息收集器、分析器和其他部分都由一台机器完成。分析器和其他部分叫做判决中心。单型IDS的优点是设计简单,适用于小型入侵检测。它的弱点是局部性检测。大部分基于主机的入侵检测工具可以归为这一类。虽然目前的入侵检测系统采用分布式的,但是它都以单型IDS为基础。


随着入侵事件的发展,入侵检测系统发展到分布式结构。一个有典型的分布式结构的IDS是主从型IDS,它包括多个信息源分布在网上不同位置和信息处理中心(分析)。信息源收集信息,集中在信息处理中心处理。这种结构的优点是解决了单型IDS的局部性。它的弱点是,信息收集器传来的数据在网上流量过大,对网络性能有一定的影响。集中式处理的局限是如果信息处理中心被受到攻击(例如DOS攻击),则整个网络就处于不安全状态。如果信息收集器只负责收集信息,没有信息处理功能,这样的模型被叫做 sensors/console 型。若信息收集器具有一定的信息处理功能,能够检测出入侵相关的事件,则被叫做agents/console型。实际上每个agent可以看成一个单型的入侵检测系统。


对等型IDS目前处于入侵检测研究理论的初级阶段。这种模型放弃了集中式处理的概念。它包括多个相当独立的小型入侵检测系统。每个小型的入侵检测系统运行在某个特殊的环境下。它可以灵活和智能地检查该环境的任何变化。这些小型入侵检测系统能互相通信。对等型IDS的优点就是解决了主从型的集中式处理问题,它的可扩展性很强。可是这种模型的实现难度很大。


如果一个入侵检测系统由多个入侵检测单元组成,这些检测单元之间可以交换数据,检测结果,甚至命令等信息。这些检测单元的分布结构有三种:星型、树型和对等型。


第一种是星型控制,如图2所示。


图2  星型控制示意图


星型就是所有的检测单元都直接受一个控制中心管理。所有的检测结果、响应都可以直接传给控制中心。控制中心也可以直接向这些检测单元发控制命令。检测单元和控制中心之间可以交换数据,例如响应信息。


星型是一种集中控制形式。这种控制易于实现,但是它的性能比较差,因为,控制中心要处理的范围太大,如果控制中心受到攻击(如DOS)攻击,那么整个系统就处于不安全状态。


第二种控制形式是树型,如图3所示。


图3  树型控制示意图


树型控制就是不同检测单元有不同控制级别。高级别的单元可以控制低级别的单元,也就是可以向低级别的单元下命令。检测单元之间的数据传输也是相邻级别之间的传递。


树型控制就是一种部分分布控制形式。控制权不集中在一个控制中心而分布在各个检测单元中。由于各个检测单元的控制级别不同,它们之间有一定的依赖性,所以叫做部分分布控制形式。


第三种控制就是对等型控制。一个对等型控制示意图如图4所示。


图4  对等型控制示意图


对等型控制就是各个检测单元都有很强的独立性,它们互相有平等关系。任何一个单元都可以向其他单元发请求或者传递数据信息。为了实现这样一个控制形式,每个单元都必须知道其他单元的身份信息(如地址、检测范围等)。因此必须存在一个地方——信息服务中心,来保存各个单元的身份信息。


对等型控制就是全分布控制形式。可以说,控制权均匀分布在所有的检测单元上。检测单元之间没有一个很强的依赖性,所以若任何一个单元不工作的话,不会影响其他单元的正常工作。


二、入侵检测系统的分类


一种最常见的入侵检测系统分类方法是根据它们的信息源。有的入侵检测系统分析来自骨干网或者局域网的数据包,有的采用分析操作系统或者应用程序自动生成的信息源。


1、基于网络的入侵检测系统


大多数入侵检测系统商业产品是基于网络。为了检测入侵,这种入侵检测系统捕获并分析网络数据包。通过监听某个网段的流量,一个基于网络的入侵检测系统可以监控并分析该网段发生的事件,从而可以保护该网段的所有主机。基于网络的入侵检测系统一般包括一组传感器分布在网络的不同网段。由于这些传感器专门为了入侵检测系统设计,所以它们具有很多对付攻击的安全措施。很多传感器有一个运行模式叫做“秘密行动”,这样,攻击者难以确定它们的存在以及位置。


(1)优点


一个基于网络的入侵检测系统可以监控多个主机。


基于网络的入侵检测系统在网络上的存在一般对现有的网络影响比较小。基于网络的入侵检测系统只是被动地监听网络流量,根本不妨碍网络的正常运行。所以一个现有的网络可以很容易地安装上一个基于网络的入侵检测系统。


基于网络的入侵检测系统可以设计成非常健壮,有时攻击者根本都看不到它的存在。


(2)缺点


基于网络的入侵检测系统的处理能力可能有限。在一个高速网络上,基于网络的入侵检测系统可能会处理不了所有的数据包,从而有的攻击可能会检测不到。有的厂家为了克服这个问题把基于网络的入侵检测系统做成硬件,提高它们的处理速度。提高速度的另一种途径是减少检测的攻击类型或者大量使用系统资源,这样影响检测的效率。


在一个交换式的网络中,基于网络的入侵检测系统的很多优点都起不到什么作用。交换器把网络分成多个小片段并对各个主机之间提供专用的连接。一般交换器不提供通用的监控端口,限制了传感器对一个主机的监控范围。尽管交换机提供一些监控端口,一个端口也不能监控到通过交换器的所有流量。


基于网络的入侵检测系统不能分析加密信息。现在越来越多人(包括攻击者)使用虚拟专用网(VPN)。在这样的网络环境下传输的信息都被加过密,基于网络的入侵检测系统就作废了。


多数基于网络的入侵检测系统不能确定一次攻击是否成功,它们只能检测出攻击者使用某种方法进行攻击。所以,在基于网络的入侵检测系统检测出一次攻击之后,安全管理员必须再做调查才能确定这次攻击是否已经成功地穿入系统。


一些基于网络的入侵检测系统在处理包含一些碎片包的网络攻击的时候可能会出问题。这些异常的数据包由可能会导致入侵检测系统运行不稳定,甚至崩溃。


2、基于主机的入侵检测系统


基于主机的入侵检测系统处理信息来自一台计算机系统里边(请注意,基于应用程序的入侵检测系统实际上就是基于主机的入侵检测系统的一个子集)。这个特点允许基于主机的入侵检测系统可以非常可靠和准确地分析主机上的发生入侵事件的时间,正确地指出系统上的哪些进程和用户包含在一起入侵事件内。与基于网络的入侵检测系统不同,基于主机的入侵检测系统可以通过检查系统上的文件系统、日志以及进程,判别出哪些攻击已经成功地穿入系统。


基于主机的入侵检测系统分析的信息源一般有两种:审计记录和系统日志。审计记录是操作系统的内核在操作的时候生成的,所以比系统日志有更多和更可靠的信息。然而,系统日志比审计记录要少,简单易懂,处理起来更方便。有的基于主机的入侵检测系统采用集中控制方式。在每一台主机上运行一个传感器,传感器收集本机上的信息,传输到一个控制中心集中处理。这样就实现了基于主机的集中控制模式的入侵检测系统。有的基于主机的入侵检测系统的输出格式与其他基于网络的入侵检测系统的控制中心的数据格式兼容,这样可以与该基于网络的入侵检测系统相结合。


(1)优点


基于主机的入侵检测系统可以看到主机上基于网络的入侵检测系统看不到的事件。


只要信息源被生成于数据被加密之前或者数据被解密之后,基于主机的入侵检测系统就可以在网络流量加密的环境下正常工作。


基于主机的入侵检测系统不受交换式网络的影响。


通过处理操作系统的审计记录,基于主机的入侵检测系统可以检测出特洛伊木马或者其他有关软件完整性破坏的攻击,因为,这种攻击都导致操作系统的进程调用有些矛盾。


(2)缺点


基于主机的入侵检测系统比较难管理,因为不同的系统使用不同的操作系统。在一个操作系统上运行的程序必须先编译好才能运行。


如果基于主机的入侵检测系统运行在被监控的主机上,它和主机上的应用程序公用一些系统资源,所以有时候基于主机的入侵检测系统也可能受到攻击而瘫痪。


基于主机的入侵检测系统不能很好地检测网络扫描攻击,因为,它只能看到自己主机已经收到的那些网络数据包。


基于主机的入侵检测系统没有隐蔽性,可能会受到拒绝服务(DOS)的攻击而瘫痪。


处理系统审计记录使得基于主机的入侵检测系统需要大量的系统资源,如存储空间、内存和CPU,因为审计记录的信息非常庞大。


基于主机的入侵检测系统使用本机的资源,所以影响被监控系统的性能。


3、基于应用程序的入侵检测系统


基于应用程序的入侵检测系统是基于主机的入侵检测系统的一个特殊子集。它分析由应用程序生成的事件。基于应用程序的入侵检测系统常用的信息源是应用程序处理的记录文件。


由于了解特定应用程序的行为,还与应用程序有直接接口,基于应用程序的入侵检测系统可以发现用户超越自己权限的可疑行为,这是因为这个问题常见于由用户、数据和应用程序之间的操作引起。


(1)优点


基于应用程序的入侵检测系统可以监控应用程序和用户之间的操作,所以有能力检测出哪个用户超越自己的权限。


基于应用程序的入侵检测系统一般可以在加密环境下运行。因为它和应用程序的接口一般是数据传输处理过程的终点,给用户的数据必须是非加密的。


(2)缺点


由于应用程序的记录文件受到的保护没有像操作系统的审计记录受到的保护严密,所以,基于应用程序的入侵检测系统比基于主机的入侵检测系统更容易受到攻击。


由于基于应用程序的入侵检测系统只监控应用层和用户层的事件,因此它不能检测出特洛伊木马。很多人建议使用基于应用程序的入侵检测系统与基于主机或者网络的入侵检测系统相结合。


三、入侵检测目标


虽然系统安全机制可能有很多目标,入侵检测系统通常有两个主要目标:寻找攻击源和系统恢复。


1、寻找攻击源


入侵检测系统的一个目标就是寻找入侵的发起源包括谁是入侵者、入侵事件从哪开始,并提供有效证据。通常用于事件的归档。支持这个目标的人声明:“只要找到入侵源,以后所有相关的安全问题都可以解决”。在TCP/IP网络,寻找攻击源遇到很多困难,因为,入侵者常常利用TCP/IP协议的缺点,伪造源地址的身份。


2、系统恢复


入侵检测系统的另一个目标着重于把系统恢复成正常。主要包括:发生了什么事件、事件影响的范围以及可能使用的安全缺陷有哪些。支持这个目标的人声明:“我们不关心谁是入侵者,也不关心他们攻击的动力和方法。我们只关心我们的系统受到什么损害和怎么去恢复它”。


四、入侵检测系统的部署


一个真正有效的入侵检测系统应该是基于主机和基于网络的混合。图5 表示基于网络的入侵检测的位置的例子。


图5  基于网络入侵检测系统的位置


图5画出内部网(要保护的网络)和因特网被一个防火墙隔开。我们有四个基于网络的入侵检测系统,分别放在网络的不同位置。由于位置不同,它们的检测范围也不一样。


IDS1:第一个入侵检测系统放在防火墙的外面,它不但能检测对内部网的攻击,还能检测对防火墙的攻击。在这个位置,入侵检测系统看不到来自内部网的攻击。


IDS2:第二个入侵检测系统处理防火墙转发的数据包。防火墙在转发数据包之前,被送到入侵检测系统处理,然后再转发,这样会影响防火墙的转发功能。


IDS3:第三个入侵检测系统只检测成功地穿过防火墙的数据包。这个位置是基于网络的入侵检测系统常放的位置。


IDS4:第四个入侵检测系统放在内部网里边,它能检测对内部网的攻击(请注意,大部分攻击来自内部网)。


五、入侵检测技术分析


入侵检测系统的另一个重要概念是要用什么检测方法去分析。根据检测方法,入侵检测又可以分为两种:误用检测和异常检测。大部分现有的入侵检测工具都是使用误用检测方法。异常检测方法虽然还没有得到广泛的应用,很多人都认为,异常检测技术在未来的入侵检测系统中会有一定的发展。


误用检测技术应用了系统缺陷和特殊入侵的累积知识。入侵检测系统包含系统的缺陷并且检测出利用这些缺陷入侵的行为。每当检测到入侵,系统就报警。换句话说,不符合于规则的所有行为都被认为是非法的,所以误用检测的准确度很高。但是它的查全度(能够检测所有入侵的能力)跟入侵规则的更新程度有密切关系。


基于误用检测的入侵检测系统的一个优点是误警率很低,并且对每一种入侵都能提出详细资料,使得使用者能够更方便地做出响应。


这种方法的缺陷就是入侵信息的收集和更新的困难。这需要很多的时间和很大的工作量。另外,还需要很强的安全知识,例如攻击、操作系统版本、平台、应用程序等知识。所以这种方法适用于特殊环境下的检测工具,另外,这种方法难以检测本地入侵(例如权限滥用),因为没有一个确定规则来描述这些入侵事件。


基于异常检测技术有一个假设,就是入侵事件的行为不同于一般正常用户或者系统的行为。通过多种方法可以建立正常或者有效行为的模型。入侵检测系统在检测的时候就把当前行为和正常模型比较,如果比较结果有一定的偏离,则报警异常。换句话说,所有不符合于正常模型的行为都被认为是入侵。这种方法的查全率很高但是查准率很低。


基于异常检测的优点就是它能够检测出新的入侵或者从未发生过的入侵。它对操作系统的依赖性较小。它还可以检测出属于权限滥用类型的入侵。由于没有一个确定规则来描述这些入侵事件,因此不能用第一种方法检测。用一句话来概括,所有未见过的事件都被认为是有危险的。


过多误警是该方法的主要缺陷,这是因为系统的所有行为不可能用一些有限的训练数据来描述。并且系统行为随时改变,所以必须要有一种在线的训练机制,实时地学会被认为误警的行为,使得系统模型尽量包含不被认为是入侵的行为。


1、异常检测


异常检测识别出在主机或者网络上的异常事件或者行为。异常检测是有效的如果下面假设成立:“攻击的行为总是与正常的用户行为不同,所以通过这些不同点去检测攻击和入侵”。异常检测先在用户,系统或者网络正常操作的一段时间收集事件和行为的信息,再根据这些信息建立该用户,系统或者网络的正常模式。在检测的时候,通过某种量度,计算事件的行为偏离正常行为的程度。如果偏离程度超过一定的范围,就被认为是攻击。下面介绍几种常用的异常检测技术。


(1)极限检测


极限检测把用户和系统行为的某一特征表示成一个数值,这个数值有不同级别的可容许程度,表示用户和系统不同程度的异常。常用特征可以是:用户在一段时间只能访问的文件数目;系统允许登录错误的次数;一个进程的CPU利用率等。这个可容许程度的级别可以是静态的,也可以是动态的(例如:随着工作时间而改变)。


(2)统计异常


统计检测就是模式的参数被通过统计学习方法计算出来。统计检测通常在用户、系统或者网络行为比较复杂的统计分布中应用。统计检测需要标准的训练数据和一个好的统计学习方法。


下面简单介绍异常检测常用的一些统计学习方法。


异常检测的基本算法就是用统计模型。首先,系统对正常数据(训练数据)的各个特征进行统计,根据统计结果对每一个特征设定一个正常范围的门限。这些特征和相应的门限组成检测的统计模型。检测的时候,含有超过这个门限的特征的数据被认为是异常。


在异常检测系统中,随机过程的方法也起了很大的作用。在这样的入侵检测系统中采用了马尔科夫过程。首先,被监测的系统被定义了多种状态,系统在运行过程中,其实就是从一个状态转移到另一个状态。通过正常的训练数据,可以计算出系统各个状态之间的转移概率,再根据这个状态转移模型判断出系统在某一段时间内是否处于异常状态。这种方法一般常用于基于主机的入侵检测系统。


因为用户和系统行为的正常模式有可能变化得很复杂,异常检测的误警率很高。但是,不同于误用检测,很多研究员声明异常检测可以检测出新的攻击。


值得说明的是,异常检测的输出可以用来当做误用检测的信息源。例如:误用检测只处理异常检测已经认为是可能会包含入侵的数据,这样可以减少系统的计算量。


虽然异常检测在商业产品中运用很少,主要是用来检测网络和端口扫描。但是,异常检测留下一个可以发展的研究领域,将来会在入侵检测系统中起很大的作用。


①优点


由于异常检测只检测被认为不正常的行为,所以它可以在不知道很多安全知识的情况下,检测出攻击。


异常检测模块的输出可以用于定义误用检测的攻击特征。


②缺点


异常检测方法的误警率很高,因为用户和网络的行为变化得很复杂。


异常检测方法需要大量和良好的训练数据。这个数据比较难得到。


(3)人工智能


异常检测的另一种常用算法是神经网络。在用神经网络检测入侵的系统中,每个事件所产生的数据通过特征选择,被量化为一个向量,就是神经网络的输入数据。训练数据标志为正常数据和入侵数据两类,用来训练神经网络。训练后的神经网络可以把事件识别为正常和入侵的。一般神经网络都用在入侵检测系统的前段,检测出入侵相关的事件还要再处理。


模糊逻辑也被应用在异常检测算法当中。在这个系统中,输入数据经过简单的数据挖掘技术,产生一个入侵相关的矩阵。这个矩阵被看为一个模糊集合,这个模糊集合经过一个模糊分析器处理,产生不同程度的报警信息。这种方法也适用于网络的扫描检测和DOS攻击检测。


一种比较独特的算法就是遗传算法。在采用遗传算法的系统中,每一个数据被看成一个染色体。在某一段时刻内,所有数据的集合被看成一个群体。通过各种遗传变换,对这个群体进行优化,产生新的群体。一旦新的群体的某个特征出现异常,就认为是入侵。采用不同策略的遗传变换,可以达到不同入侵类型的检测。一般遗传算法用来检测扫描和DOS攻击。


如果把系统和网络事件空间看成一个平面,每个事件是该平面的一点。误用检测相当于描述一些特殊点,认为是入侵事件。只要发生的事件落在这些点上就是入侵,可见误用检测的查准率肯定很高,但是查全率会比较低。异常检测相当于在这个平面上划一条线,落在这条线的一边的事件就被认为是正常,而落在这条线的另一边的事件就被认为是异常,可见这种方法的查准率会很低,但是查全率会很高。并且检测出异常的事件基本上不能说明该事件属于哪一种入侵。有关这两种方法的示意图,请参考图6。


图6  误用检测和异常检测示意图


如果把正常事件归为一类,每一种入侵或者有相同特征的多种入侵事件归为某一类。这样,检测入侵的过程就是识别出发生的事件属于哪一类。如果从上述的事件空间来讲,就是在事件的空间平面上,划出若干个域,每个域对应于一种入侵或者正常事件。落在某个域的事件就认为是相应的入侵事件发生,如图7所示。可见,如果这些入侵域变得越来越小,这个方法就越来越靠近基于规则的,只不过我们所划分的域不是人工产生的,而是程序自动产生的。


图7  基于分类IDS示意图


2、误用检测


误用检测需要对已知的入侵事件提前描述。在检测的时候,如果系统的行为与入侵事件描述中匹配,则被认为是入侵。由于误用检测需要根据一组事件的签名进行匹配,所以误用检测有时候还被叫做基于签名的检测。误用检测每种攻击的行为都要用一个独立的事件签名去描述。但是,也有一些复杂的误用检测方法(例如“基于状态检测”的技术)可以用一个规则来描述一组攻击的行为。


如果防护部分已经把我们已知的所有缺陷清除掉,那么攻击者不可能利用这些缺陷进行入侵,或者尽管攻击也不可能成功。这意味着,已经成功地穿过防护系统的入侵不是利用我们已知的系统缺陷,那么误用检测,按道理,也没有这些攻击的特征,所以它也检测不到。在这个道理上,误用检测和防护部分所作的工作有一点重复。不过,误用检测并不是白白的检测,它可能检测不到未知的入侵但是它可以检测到一些不成功的攻击(已知的),这就是入侵的前兆。


(1)优点


误用检测是一种非常有效的检测方法,这种方法的误检率很低。


误用检测可以提供攻击的详细信息,帮助管理员追踪安全问题和进行简单的事件处理。


(2)缺点


因为误用检测只能检测出已知的攻击,所以必须经常更新事件签名描述库。这个工作一般都是手工的,需要很多时间和需要比较深的安全知识。


误用检测的查全率不高。为了降低误检率,误用检测的事件签名被定义得非常准确,这导致检测攻击的范围被缩小。基于状态的检测技术可以克服这个问题,可是它还不是一个很成熟的技术。


其实,目前的IDS 不管厂商如何宣传,它们产生事件报警的本质都是模式匹配,所谓的协议分析(有的称为协议解析)也就是用来提高匹配的效率,或者有的提供命令解释器来模拟某些协议的命令语法,这样来提高IDS的反躲避能力。IDS的模式匹配即通过对数据包的分析,并匹配自身的规则库,如果能够匹配就产生事件报警或者保留准备更多相关情况的分析,否则就丢弃(即便是属于攻击)。模式匹配并不仅仅局限于字符串的匹配,包括下面的匹配类型。


(1)协议匹配


通过协议分析模块,将数据包按照协议分析的结果对协议相应的部分进行检测。比如,TCP包的标志位、协议异常等。例如,snort中一条事件定义:


alert tcp $EXTERNAL_NET any->$HOME_NET any (msg:"SCAN NULL";flags:0;seq:0;ack:0;reference:arachnids,4; classtype:attempted-recon; sid:623; rev:1;) 其中就对TCP 的flags、seq、ack进行了协议位置的匹配。


协议匹配需要对特定协议进行分析,Snort 对IP/TCP/UDP/ICMP进行了分析,但是没有对应用协议进行分析。高层的应用协议分析,可以显著地提高匹配的效率,比如对TDS协议的分析能够准确地定位账号和密码位置。


(2)字符串匹配


目前这是大多数IDS 最主要的匹配方式,事件定义者根据某个攻击的数据包或者攻击的原因,提取其中的数据包字符串特征。通常IDS 经过协议分析后,进行字符串的匹配。


比如:Snort 中的一条事件定义,


alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS$HTTP_PORTS (msg:"WEB-ATTACKS ps command attempt";

flow:to_server,established; uricontent:"/bin/ps"; nocase;

sid:1328; classtype:web-application-attack; rev:4;),


该事件中要进行匹配的字符串就是"/bin/ps"。


字符串匹配主要就是算法问题,因为IDS 的规则多数属于字符串匹配,所以优秀的字符串匹配算法也能够显著提高IDS的效率,比如Boyer-Moore 、Aho-Corasick 、Set-wise


Boyer-Moore算法。


(3)长度匹配


多数情况下,这也应该属于字符串匹配的一种,不过,这种匹配方式对数据包中某段数据的长度而不是对具体的字符串进行匹配。比如,通过数据长度限制来对缓冲区溢出攻击进行检测。


比如:alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS

(msg:"WEB-IIS ISAPI .ida attempt"; uricontent:".ida?"; nocase;

dsize:>239; flow:to_server,established; reference:arachnids,552;

classtype:web-application-attack; reference:bugtraq,1065;

reference:cve,CAN-2000-0071; sid:1243; rev:6;)


其中的关键字dsize就是对数据包的负载进行匹配,如果请求的命令总长度大于239,那么就检测出一条.ida溢出企图的事件。


(4)累积匹配


累计匹配或者数量匹配。通过对某些事件出现的量(次数或者单位时间次数)来产生新的事件,比如,某个IP在1分钟内报出了100条CGI 事件,那么就属于一次CGI扫描事件。


(5)逻辑匹配


逻辑匹配或者是集合匹配。一些有更强事件检测能力的 IDS,通过对不同类型的事件组合来进行判断,从而获得新的事件。少数IDS对多种事件的组合来构成逻辑推理,增强检测的智能。


累积匹配和逻辑匹配都是建立在对初级事件检测基础上进行的,都是通过将原始事件的某些组合来构成新的事件,因此不可能出现在老式IDS架构中,除非其中增加对事件的多次分析过程。


Snort主要进行的是协议匹配、字符串匹配和长度匹配,而检测引擎中没有两次或者多次匹配的过程,也就是累计匹配和逻辑匹配,因此它不能检测分布事件,不能确定哪些事件是成功的,也不能检测流量异常,而只能通过端口协议字符串等来检测那些具有字符串数据特征的特定拒绝服务攻击工具的事件,这可以从Snort的DDOS规则集看得出来。当然Portscan和Stream4等预处理器的增加为Snort在累计匹配和逻辑匹配上有一些表现,比如,Portscan预处理器可以跟踪端口扫描事件的速率问题。


单从 Snort 提供的规则也可以得到上面的结果,因为规则中所体现的基本都是对 IP、ICMP、TCP、UDP 这样的三、四层上的协议进行了解析,而对更上面的协议,比如第七层的应用协议等基本没有作协议分析(除了数据的Request 部分),这些规则中也主要进行的前三种方式的单包匹配。


当然这里的重点不是在匹配算法上,而更看重整个检测的结构和过程。首先能够看到的问题就是snort的规则树型结构过于简单,也就造成可能某些RTN下的OTN链比较庞大; 没有对高层协议分析也是一个大问题,因为协议分析可以更有效地定位匹配位置,加快匹配速率,所以现在很多IDS使规则树更平坦,尽量让深度和宽度不失调,同时进行高层协议分析,这一代的IDS结构也就基本如此了。同时,有些IDS 采用多层引擎的方式,来实现和加强累计匹配和逻辑匹配的检测能力。其实,现在 Snort 的结构发展也基本是对这些问题的解决和发展。


因为负责任的事件定义需要对入侵进行详细分析,这些入侵的分析基本结果都很相近,比如溢出攻击的长度,某种攻击中的数据特征等,所以可能各个厂商的事件大同小异,但是,可能就是这些小小的差别就能看出不少端倪。虽然多数商业IDS 的事件定义是不公开的,但是可以通过构造类似特征来猜测,并逆向推理真实的事件定义内容,因为IDS都总是使用上面介绍的匹配方法来作检测的。


3、文件完整性检查


文件完整性检查系统检查计算机中自上次检查后文件变化情况。文件完整性检查系统保存有每个文件的数字文摘数据库,每次检查时,它重新计算文件的数字文摘并将它与数据库中的值相比较,如不同,则文件已被修改,若相同,文件则未发生变化。


文件的数字文摘通过Hash函数计算得到。不管文件长度如何,它的Hash函数计算结果是一个固定长度的数字。与加密算法不同,Hash算法是一个不可逆的单向函数。采用安全性高的Hash算法,如MD5、SHA时,两个不同的文件几乎不可能得到相同的Hash结果。从而,当文件一被修改,就可监测出来。在文件完整性检查中功能最全面的当属 Tripwire,其开放源代码的版本可从www.tripwire.org中获得。


文件完整性检查系统的优点有:


从数学上分析,攻克文件完整性检查系统,无论是时间上还是空间上都是不可能的。文件完整性检查系统是非常强劲的监测文件被修改的工具。实际上,文件完整性检查系统是一个监测系统是否被非法使用的最重要的工具之一。


文件完整性检查系统具有相当的灵活性,可以配置成为监测系统中所有文件或某些重要文件。


当一个入侵者攻击系统时,他会干两件事,首先,他要掩盖他的踪迹,即他要通过更改系统中的可执行文件、库文件或日志文件来隐藏他的活动;其次,他要做一些改动保证下次能够继续入侵。这两种活动都能够被文件完整性检查系统监测出。


文件完整性检查系统的弱点是:


文件完整性检查系统依赖于本地的文摘数据库。与日志文件一样,这些数据可能被入侵者修改。当一个入侵者取得管理员权限后,在完成破坏活动后,可以运行文件完整性检查系统更新数据库,从而瞒过系统管理员。当然,可以将文摘数据库放在只读的介质上,但这样的配置不够灵活。


做一次完整的文件完整性检查是一个非常耗时的工作,在Tripwire中,在需要时可选择检查某些系统特性而不是完全的摘要,从而加快检查速度。


系统有些正常的更新操作可能会带来大量的文件更新,从而产生比较繁杂的检查与分析工作,如,在Windows NT系统中升级MS-Outlook将会带来1800多个文件变化。


六、入侵检测后的响应


一旦入侵检测系统发现攻击或者入侵,它们会有一定的响应。这些响应包括相关入侵的报告文档、追踪入侵发起源和入侵者。有的入侵检测系统具有自动响应功能。虽然不受到很多研究员的重视,响应工作却是一件很实际和十分重要的事。入侵检测商业产品一般都有多个响应选项,一般可分成主动响应和被动响应或者两者的混合。


1、主动响应


入侵检测系统的主动响应就是当一次攻击或入侵被检测到,检测系统自动作出一些动作。主动响应分成三类:


(1)收集相关信息


一种最基本但最花时间的主动响应就是再一次深入地收集可疑攻击和入侵的有关信息。在生活当中,当夜里被一个奇怪的声音吵醒,我们可能也会做一个类似于这种响应的工作。在这种情况下,每个人一般都想办法靠近发出声音的地方,听得更清楚,收集、理解相关信息再决定采取什么行动。


在入侵检测系统的场合上,这种响应一般是检查一些敏感的信息源(例如,查看操作系统审计记录的事件,查看网络上的数据包等)。收集相关信息并总结出多种可能的原因。这些相关信息可以帮助用户确定入侵事件的状态(特别是确定攻击是否成功地穿入用户的系统)。这个选项也帮助调查入侵者的身份,提供入侵行为的法律证据。


(2)改变环境


另一种自动响应就是中断攻击过程和阻止攻击这的其他行动。通常,入侵检测系统没有能力阻止一个人的行为,但是它可以封闭这个人可能使用的IP地址。封闭一个有经验的攻击者是一件很困难的事,下面的行动可以阻止新手攻击者,对有经验的攻击者有一定的限制。


在攻击者和受害系统的连接中插入TCP Reset包。根据TCP/IP协议,连接就被终止。


重新配置路由器和防火墙,禁止来自攻击者的IP地址的包。


重新配置路由器和防火墙,禁止攻击者访问文件系统的网络端口和服务。


(3)反击攻击者


有些人认为,入侵检测系统的主动响应的第一选项应该是反击攻击者。这种响应包括反攻击攻击者的主机或者网站,或者利用攻击方法去收集攻击者身份的信息。但这不是一个对的主意!在一个没有明确的法律的网络环境下,这样的措施可能有很大的风险。


第一个原因就是反攻击别的主机可能是非法的行为;此外,很多攻击者使用假的网络地址,所以反攻击很可能会伤害无辜;最后,反击攻击者有可能会把情况弄得更坏,攻击者本来只是想浏览一下用户的站点,一旦受到反攻击后,可能会采取一些其他的行动。


我们建议这个选项不应该随意使用。虽然是自动响应,但管理员也要有一定的监控和控制。


2、被动响应


被动响应提供攻击和入侵的相关信息,再由管理员根据所提供的信息采取适应的行动。这种响应方法是很多入侵检测系统商业产品的选择。


(1)报警和告示


当攻击被检测出来,入侵检测系统作出报警和告示通知管理员或者使用者。大多数入侵检测系统的商业产品允许使用者灵活地决定系统在什么场合上作出报警和通知给谁。


一种常用的报警就是在屏幕上打出报警或者弹出报警窗口。这些报警在入侵检测系统的控制台还是其他地方显示由管理员在安装、配置的时候指定。报警信息有各种形式,简单的就是什么入侵事件发生,详细的就是攻击者的身份、使用的攻击工具和入侵造成的危害。


另一种报警和告示是通知给多个远程管理员和有关组织。有的入侵检测系统允许用户选择在紧急响应的时候使用的通知方式:呼机和手机。


有的产品提供电子邮件的通知方式。这种通知方式不是很安全,因为,攻击者经常能监视到电子邮件系统,甚至可以阻止它。


(2)SNMP协议通知


有的入侵检测系统类型的商业产品提供报警和告示通知给网络管理系统。这些消息使用SNMP协议作出报警和告示。SNMP协议是网络管理系统所使用的协议,所以网络管理系统的组件和管理员可以对入侵检测系统的报警信息进行操作。使用这种报警方式有很多好处,包括允许整个网络参与到入侵检测和响应过程。另一个好处就是可以很快地把入侵事件通知到入侵发起源的负责机构,让他们协助调查和处理。


很多入侵检测系统类型的商业产品提供定期事件报告文档。有的允许用户选择要报告的期间(如一个星期、一个月等)。有的还提供入侵事件的统计数据,甚至提供标准的数据库接口,让用户使用其他数据统计的软件包。


在选择入侵检测系统的时候,还有一个重要问题要考虑就是入侵检测系统的健壮性能。健壮性能意味着入侵检测系统本身受到攻击的时候,可以保护自己。这个性能一般体现出标准系统管理工具和一般安全管理工具的区别。


在响应的时候,健壮性能也要考虑在内。例如,入侵检测系统要求隐蔽地监视攻击者的行为。如果检测到攻击的时候,入侵检测作出的报警引起攻击者的注意,例如在网络上广播文本消息。因此就暴露出入侵检测系统的存在。这样可能使情况变得更坏,因为攻击者可以把入侵检测系统作为它的攻击目标。


为了保证入侵检测系统的安全响应,入侵检测系统最好使用安全、加密和加以认证的通信机制。


七、数据协同


入侵检测需要采集动态数据(网络数据包)和静态数据(日志文件等)。基于网络的IDS,仅在网络层通过原始的IP包进行监测,已不能满足日益增长的安全需求。基于主机的IDS,通过直接查看用户行为和操作系统日志数据来寻找入侵,却很难发现来自底层的网络攻击。


目前的IDS将网络数据包的采集、分析与日志文件的采集、分析割裂开来,即使是综合基于网络和基于主机的IDS也不例外,没有在这两类原始数据的相关性上作考虑。此外,在网络数据包的采集上,IDS 一直是通过嗅探这种被动方式来获取数据,一旦某个数据包丢了就无法挽回。而且,将来的网络是全交换的网络,网络速度越来越快,许多重要的网络还是加密的。在这种情况下,对网络数据包这种动态数据的采集就显得更加困难了。因此,在数据采集上进行协同并充分利用各层次的数据,是提高入侵检测能力的首要条件。


数据采集协同有两个很重要的方面:


(1)IDS 与漏洞扫描系统的协同:漏洞扫描系统的特点是利用完整的漏洞库,对网络中的各个主机进行扫描,对主机所存在的网络、操作系统和运行的应用存在的漏洞给出综合报告,然后提出漏洞的修补办法,并最终给出风险评估报告。IDS 与扫描系统的协同的一个方面是可以利用扫描系统的扫描结果,对目前网络或系统和应用所存在的漏洞做到心中有数,然后利用扫描结果对预警策略进行修改,这样既可以尽可能地减少误报,也可能对隐含在正常行为中的攻击行为做出报警。另一方面,IDS 也可以利用对日常警报信息的分析,对漏洞扫描系统的扫描策略进行修改,然后进行预约扫描,对目前可能正在遭受攻击的漏洞进行及时的防范。同时,漏洞扫描系统也可以利用IDS的报警信息,对有些主机的进行特定漏洞的扫描,查看正在受攻击的漏洞是否真的存在,如果真的存在,做出必须及时封堵的报告。


(2)IDS 与防病毒系统的协同:对越来越多来自网络的病毒攻击,IDS 可能根据某些特征做出警告,但由于IDS本身并不是防病毒系统,对网络中的主机是否真的正在遭受计算机病毒的袭击并不能非常准确地预报,这时防病毒系统就有了用武之地,可以有针对性地对IDS的病毒报警信息进行验证,对遭受病毒攻击的主机系统进行适当的处理。


1、数据分析协同


入侵检测不仅需要利用模式匹配和异常监测技术来分析某个监测引擎所采集的数据,以发现一些简单的入侵行为,还需要在此基础上利用数据挖掘技术,分析多个监测引擎提交的审计数据以发现更为复杂的入侵行为。


理论上讲,任何网络入侵行为都能够被发现,因为网络流量和主机日志记录了入侵的活动。数据分析协同需要在两个层面上进行,一是对一个监测引擎采集的数据进行协同分析,综合使用监测技术,以发现较为常见的、典型的攻击行为; 二是对来自多个监测引擎的审计数据,利用数据挖掘技术进行分析,以发现较为复杂的攻击行为。考核IDS数据分析能力可以从准确、效率和可用性三方面进行。基于这一点,可以认为,监测引擎是完成第一种数据分析协同的最佳地点,中心管理控制平台则是完成第二种数据分析协同的最佳地点。


当监测引擎面对并非单一的数据时,综合使用各种监测技术就显得十分重要。从攻击的特征来看,有的攻击方法使用异常监测来监测会很容易,而有的攻击方法使用模式匹配来监测则很简单。因此,对监测引擎的设计来说,首先需要确定监测策略,明确哪些攻击行为属于异常监测的范畴,哪些攻击属于模式匹配的范畴。中心管理控制平台执行的是更为高级的、复杂的入侵检测,它面对的是来自多个监测引擎的审计数据。它可就各个区域内的网络活动情况进行“相关性”分析,其结果为下一时间段及监测引擎的监测活动提供支持。例如黑客在正式攻击网络之前,往往利用各种探测器分析网络中最脆弱的主机及主机上最容易被攻击的漏洞,在正式攻击之时,因为黑客的“攻击准备”活动早已被系统记录,所以IDS就能及时地对此攻击活动做出判断。目前,在这一层面上讨论比较多的方法是数据挖掘技术,它通过审计数据的相关性发现入侵,能够监测到新的进攻方法。


传统数据挖掘技术的监测模型是离线产生的,就像完整性监测技术一样,这是因为传统数据挖掘技术的学习算法必须要处理大量的审计数据,十分耗时。但是,有效的IDS必须是实时的。而且,基于数据挖掘的IDS仅仅在监测率方面高于传统方法的监测率是不够的,只有误报率也在一个可接受的范围内时,才是可用的。


美国哥伦比亚大学提出了一种基于数据挖掘的实时入侵检测技术,证明了数据挖掘技术能够用于实时的 IDS。其基本框架是: 首先从审计数据中提取特征,以帮助区分正常数据和攻击行为;然后将这些特征用于模式匹配或异常监测模型;接着描述一种人工异常产生方法,来降低异常监测算法的误报率;最后提供一种结合模式匹配和异常监测模型的方法。实验表明,上述方法能够提高系统的监测率,而不会降低任何一种监测模型的效能。在此技术基础上,实现了数据挖掘的实时IDS则是由引擎、监测器、数据仓库和模型产生四部分构成。其中,引擎观察原始数据并计算用于模型评估的特征; 监测器获取引擎的数据并利用监测模型来评估它是否是一个攻击;数据仓库被用作数据和模型的中心存储地;模型产生的主要目的是为了加快开发以及分发新的入侵检测模型的速度。


2、响应协同


前面已经论述,由于IDS在网络中的位置决定了其本身的响应能力相当有限,响应协同就是IDS与有充分响应能力的网络设备或网络安全设备集成在一起,构成响应和预警互补的综合安全系统。响应协同主要包含下面的几个方面。


(1)IDS与防火墙的协同


防火墙与IDS可以很好地互补,这种互补体现在静态和动态两个层面上。静态的方面是IDS 可以通过了解防火墙的策略,对网络上的安全事件进行更有效的分析,从而实现准确的报警,减少误报;动态的方面是当IDS发现攻击行为时,可以通知防火墙对已经建立的连接进行有效的阻断,同时通知防火墙修改策略,防止潜在的进一步攻击的可能性。


(2)IDS与路由器、交换机的协同


由于交换机、路由器和防火墙一样,一般串接在网络上,同时都有预定的策略,可以决定网络上的数据流,因此IDS与交换机、路由器的协同与IDS同防火墙的协同非常相似,都有动态和静态两个方面,过程也大致相同,这里不做详细的论述。


(3)IDS与防病毒系统的协同


IDS 与防病毒系统的协同在数据采集协同中已经进行过论述,但实际上对防病毒系统来讲,查和杀是不可或缺的两个方面,在查的层面有数据采集协同,在杀的层面有响应协同。如果说IDS还可以通过发送大量RST报文阻断已经建立的连接,某种程度上代替防火墙的响应机制的话,在防止计算机遭受病毒袭击方面简直是无能为力,目前由于网络病毒攻击占所有攻击的比例不断增加,IDS与防病毒系统的协同也变得越来越重要。


(4)IDS与蜜罐和填充单元系统协同


有一些工具可以作为IDS的补充,由于它们的功能相似,销售商常把它们也表示为IDS。但实际上这些工具的功能是相当独立的,所以这里不把它们当做IDS的组成部分讨论。而是对其功能进行简单介绍,同时介绍这些工具如何与IDS协同,共同增强一个组织的入侵检测能力。


蜜罐:是试图将攻击者从关键系统引诱开的诱骗系统。这些系统充满了看起来很有用的信息,但是这些信息实际上是捏造的,诚实的用户是访问不到它们的。因此,当监测到对“蜜罐”的访问时,很可能就有攻击者闯入。“蜜罐”上的监控器和事件日志器监测这些未经授权的访问并收集攻击者活动的相关信息。“蜜罐”的目的是将攻击者从关键系统引开,同时收集攻击者的活动信息,并且怂恿攻击者在系统上停留足够长的时间以供管理员进行响应。


利用“蜜罐”的这种能力,一方面,可以为IDS提供附加数据,另一方面,当IDS发现有攻击者时,可以把攻击者引入“蜜罐”,防止攻击者对系统造成危害,并收集攻击者的信息。


“填充单元”采取另一种不同的方法。“填充单元”不试图用引诱性的数据吸引攻击者,它等待传统的IDS来监测攻击者,然后,攻击者被无缝地传递到一个特定的填充单元主机。攻击者不会意识到发生了什么事情,但是攻击者会处于一个模拟环境中而不会对系统造成任何伤害。与“蜜罐”相似,这种模拟环境会充满使人感兴趣的数据,从而会使攻击者相信攻击正按计划进行。“填充单元”为监测攻击者的行为提供了独特的机会。


以上的论述只是为了说明IDS需要协同,同时其他所有的安全工具也需要协同,这些工具和设备的很好的协同工作也许就是前面关于如何保障信息系统安全的一个答案。我们可以把所有这些协同工作的工具或者设备整体看做一个安全工具,至于是把这个系统称作综合型IDS或者其他的什么名字已经不重要了,关键是它可以保证我们的信息有相对的安全性。


八、入侵检测效果的评测


1、测试数据源


测试数据的来源有两种:标准测试数据和实际测试数据。标准测试数据就是在某种标准的信息源中预先得到并整理好的数据,使用标准测试数据的方法叫做后台测试方法。而实际测试数据是在检测的现场得到,采用实际测试数据的方法叫做在线测试方法。在线测试方法需要一个实验环境叫做测试实验床。这两种方法各有自己的优缺点。


使用标准测试数据是一种高效率、低成本的测试方法。只要一组标准数据,我们就可以重复地测试多个系统。如果测试数据整理得好,测试检测性能比较准确。这一点,实际上可以做到,因为标准数据只要做一次就可以给很多人共享。再加上这种方法与测试环境无关,所以测试的范围可以很广,并且很灵活。然而,这种方法的缺点就是测不出入侵检测系统的实际检测速度和各种临时问题,影响系统的鲁棒性等。


使用实际测试数据需要检测一个测试实验床,这使得测试的成本很高。测试的时候还要模拟出攻击的时间,这导致检测需要很多时间和精力,不但如此,还限制了很多检测范围,因为实验床可能模拟不出很多实际的攻击环境。这种方法的好处就是能够测出入侵检测系统在实际运行的时候遇到的问题,例如最高检测速率、鲁棒性等。


(1)标准测试数据


标准测试数据包括若干不同类型的攻击、入侵和正常事件的数据。每一条数据都被标注成为是哪种攻击的或者是正常的事件。测试的时候,入侵检测系统根据自己的检测算法,对每一条数据进行检测,再将检测出来的结果跟数据的标志比较,可以得出这次检测的结果是否正确。入侵检测系统通过标准数据可以计算出它的检测错误率、查全率、查准率,以及ROC曲线等统计性能。


标准数据应该从实际环境中得到(例如从某个大网络的出口监听)。在经过人工的仔细分析,得出哪些数据是攻击的,哪些不是攻击的。


标准数据应该随不同信息源而不同。基于网络的入侵检测系统所用的标准数据应该从网络流量中得到,基于主机的入侵检测系统应该从主机上的审计记录、日志文件等得到。


标准数据的分布应该符合实际。例如在网络标准数据的情况下,WWW协议,FTP协议和SMTP协议的数据应该比别的数据多一些。


标准数据还有一个用处就是用来训练异常检测系统的模型。我们在前面提过,异常检测技术要根据标准数据,建设一个正常(或者异常)或者分类模型,再通过这个模型去检测入侵。


建立标准测试数据库是一件很困难的事情。国际上有一个入侵检测系统的标准测试数据库放在MIT Lincoln 实验室(URL:http://www.ll.mit.edu/IST/ideva l/index.html)。这个站点上提供国际认可的入侵检测系统的标准测试数据,使入侵检测系统的研究者节省了很多时间和精力。


(2)测试实验床


测试数据源的另一个来源就是测试实验床。这种测试方法把入侵检测系统放在一个实际的系统或者网络环境中,通过某种方法模拟攻击事件和正常的使用,测试入侵检测系统的检测性能。


测试实验床是一个很高成本的测试方法,因为实验床上需要多种不同的操作系统、各种不同的服务和不同的缺陷。在测试的时候,我们还要模拟出各种不同的攻击,这要求测试人员对网络安全有很高深的技术。这种测试方法限制了测试范围,因为测试实验床不可能提供所有缺陷环境和攻击类型,但是,这种测试方法有自己的优点,就是可以测出入侵检测系统的最高处理速度,另外还可以测出系统运行的种种临时问题。


测试实验床的一个重要技术就是仿真技术。由于测试实验床上不可能有在实际应用中那么多用户,所以它必须使用仿真技术,自己模拟出实际上遇到的各种现象,如多用户使用、高速率网络流量和各种模拟攻击等。


实验床的另一个意义就是给学习、研究和开发人员提供一个良好的工作环境。


是入侵检测系统测试实验床的一个例子。


 入侵检测系统测试实验床


测试实验床分为内部网和外部网两部分。这两个部分之间的连接是一台 Cisco 路由器。这样的安排比较符合实际,它允许我们测试入侵检测系统检测从外部网攻击内部网的事件和从内部网攻击内部网以及本地的攻击。


内部网具有四台不同操作系统的主机:Solaris、Windows NT、Linux 和 SunOS。这四种操作系统是目前因特网上最有代表性的,所以在这四种操作系统上可以安装绝大部分的常用软件及其缺陷,可以模拟各种常见的攻击和入侵。


该实验床用仿真技术模拟出内部服务器和外部服务器。由于服务器的主要性能体现在用户数目和网络流量上,所以必须用仿真技术实现这几点。一般来说,外部网的服务器的流量要比内部服务器的流量少。


内部网和外部网还提供网络监听、系统审计记录分析等辅助工具。


2、检测错误


在检测标准测试数据的时候,如果入侵检测系统的检测结果跟数据的标志不一样,那么入侵检测系统对这条数据的检测结果被认为是错误。检测错误可以有两种形式:第一,正常数据被入侵检测系统认为是攻击的;第二,攻击数据被入侵检测系统认为是正常的。第一种错误叫做虚警(False Positive),第二种错误叫做漏警(False Negative)。


在实际应用过程中,虚警(还被叫做误警)不会引起什么危害,因为事件本身是正常的。虚警(误警)的坏处可能就是浪费了安全管理员的一些阅读、检查的时间。反过来,漏警是一个很严重的错误。实际上,漏警就等于入侵事件没有被检测出来,对系统可能会引起很大的危害。


一般来说,如果一个系统的虚警越多,它的漏警就越少。反过来,如果虚警越少,漏警可能会越多。这是因为,虚警越多表示入侵检测系统对事件的警觉程度越高,这样,它忽略入侵的事件造成漏警的可能性就越小。从检测技术的角度来看,入侵检测系统对事件的警觉程度越高意味着检测算法对入侵事件的约束条件越宽松。从技术的角度,异常检测技术就有这个倾向。


如果虚警越少,表示入侵检测系统对事件的警觉程度越低,这样,它忽略入侵的事件的可能性就越大。从检测技术的角度来看,入侵检测系统对事件的警觉程度越低意味着检测算法对入侵事件的约束条件越紧。从技术的角度,误用检测技术就有这个倾向。所以,误用检测技术所造成的误警并不高,但很可能会漏掉一些入侵事件,特别是新的入侵类型。请注意,在很多误用检测系统(例如Snort)的误警率被认为很高,其实,这些并不都是误警,有的是实实在在的攻击现象,只不过攻击不成功而已。


(1)错误率


评测入侵检测系统的一个很重要的性能就是错误率。错误率越低,表示入侵检测系统的性能就越好。在测试过程中,入侵检测系统对标准测试数据进行检测。错误率就是检测错误次数占标准测试数据总数的比例:


一般来说,人们都认为错误率越低的入侵检测系统的性能就越好。同样的错误率,漏警越少,检测性能就越好。


(2)查准率


和错误率的概念一致的性能就是查准率。查准率就是检测正确的次数占标准测试数据总数的比例:


或者:


查准率=1 - 错误率


(3)查全率


错误率和查准率还不能很确切地表明系统把入侵事件给忽略掉的可能性。因为同样的错误率,如果漏警的比例越大,这样的入侵检测系统把入侵事件给忽略掉的可能性就越大。所以,除了错误率和查准率的性能以外,评测入侵检测系统的另一个重要性能就是能正确地检测出来的入侵事件占标准测试数据中包含的入侵事件总数的比例,这个性能叫做查全率:


(4)数值分析


为了简单易懂,我们用数值来表示测试的错误率、查全率等性能。


假设测试数据DATA中有N条数据,其中包括A条是攻击的数据,其余B条是正常的数据:


N=A+B


我们用标准测试数据DATA去测试入侵检测系统IDS。检测的结果为:


IDS在A条攻击的数据中,只检测出C条(C<A),其余D(D=A - C)条攻击被认为是正常的。


IDS在B条正常的数据中,有E条(E<B)被入侵检测系统认为是攻击事件,其余F(F=B - E)条正常数据被正常地识别出来。


那么:


标准测试数据总数=A+B

A=C+D

B=E+F

虚警(False Positive)=E

漏警(False Negative)=D

检测错误数目=D+E

错误率=

正确率=1-错误率=

查全率=


(5)工作曲线(ROC曲线)


高查全率的入侵检测系统保证在实际应用中把入侵事件忽略掉(检测不出来)的可能性比较少,这意味着,它对入侵事件的约束条件定义得比较宽松(覆盖的范围比较广)。这样导致它检测的错误率会比较高,其中包括很多误警或者漏警。反过来,低查全率的入侵检测系统的错误率就比较低。


在选择入侵检测系统的时候,人们往往根据自己的安全目标而定。有的环境对攻击不是很敏感,就需要比较低的误警率。也有的环境对攻击比较敏感,就需要低错误率的入侵检测系统,而宁愿接受误警率较高的性能。例如:在检测垃圾邮件的系统中,人们要求自己信件被识别为垃圾邮件的概率尽可能低。每个人都宁愿收到 10 封垃圾邮件而不愿意丢失一封自己的邮件。


对于一个入侵检测系统,查全率随错误率的变化而变化的曲线叫做入侵检测的工作曲线(ROC曲线),一般来说,查全率越高,则错误率就越高。所以入侵检测工作曲线一般都是上升曲线(查全率随着错误率增加而增加)。图9所示是两个不同的入侵检测系统的工作曲线的例子。


图9  入侵检测系统的工作曲线


图中画出两个入侵检测系统IDS1和IDS2的工作曲线。可以看出这两条曲线都有一些共同点:


这两条曲线都是上升曲线,这表明随着错误率增加,查全率也增加。


当查全率为零的情况下,工作曲线有一段沿着横轴走(这是IDS1的OA1和IDS2的OA2段)。在这种情况下,查全率为零表示什么入侵都没有检测到。可是错误率并不为零,这表示检测出来的都是虚警(误警)。


随着错误率逐渐增加,查全率有很大幅度的增加,这时工作曲线看起来比较陡(这是IDS1的A1B1和IDS2的A2B2段)。在这种情况下,只要牺牲一点错误率(让错误率提高一点)就可以得到查全率很大的改善。这个时候,大部分常见的攻击都随着错误率增加而被检测出来,虚警(即误警)相对来说比较少。


如果错误率继续增加,查全率开始缓慢地上升。这时,工作曲线看起来比较平坦(这是IDS1的B1C1和IDS2的B2C2段)。在这种情况下,尽管错误率增加得很大,查全率也只有很小的改善。这个时候,基本上常见的攻击都已经全被检测出来了,有少数的新的攻击可能会被检测出来,所以虚警(即误警)相对来说也开始多起来。


不难看到这两个入侵检测系统的最佳工作点应该是B1和B2附近。


比较这两种入侵检测系统,在同样的错误率的任何情况下,第一个入侵检测系统的查全率比第二个入侵检测系统的查全率要高,所以第一个入侵检测系统的性能比第二个入侵检测系统的性能要好。


3、包装评测


除了上面提到的检测性能,对于一个商业产品来说,包装界面也是十分重要的。对于包装界面一般评测以下几个方面:


安装,升级,卸载过程

界面友好程度

帮助文档的编写

攻击事件的说明

响应选项


一般来说,包装的评测都是根据评测人和用户的主观决定。


九、入侵检测系统的未来


入侵检测系统是一个比较新的研究领域。除了系统自带的审计功能已经有几十年的发展历史,入侵检测系统的一些重要概念和基础都是在20世纪80年代末,90年代初才开始被提出来。此外,入侵检测系统的商业产品在90年代中期开始在市场上出现,作为网络安全产品中的一个重要类型。入侵检测系统是根据市场上的需求而发展起来,所以入侵检测技术的发展趋势也受市场需求的影响。


1、入侵检测系统有很大的市场前景


首先,入侵检测系统具有其他安全产品不具备的功能,所以它是系统安全策略中的不可缺少的一部分。也就是说,在信息网络扮演生活的重要角色的这个时代,入侵检测系统还会有很广阔的发展前景。


2、提高入侵检测的速度


入侵检测技术包括误用检测和异常检测两种。其中,误用检测技术已经发展得比较成熟,市场上的产品大部分都是以这个技术为基础。目前入侵检测产品的处理带宽不超过100Mbit/s,在速率超过 100Mbit/s 的网络环境下,入侵检测系统就运行不稳定,出现丢包现象,甚至会崩溃。这样的处理速度对目前的宽带信息网络的需求是远远不够的。所以,误用检测系统的一个必要发展方向就是提高处理速度。


3、硬件化


提高处理速度的一个方向就是从软件转移到硬件。误用检测的核心技术就是模式匹配,目前都用软件来实现。随着攻击的签名条目逐步增加,使入侵检测系统的处理速度出现一个瓶颈为100Mbit/s。如果误用检测的模式匹配部分可以用硬件来实现,那么入侵检测系统的处理速度可以大大提高。想象将来可以出现一些入侵检测芯片,只要在它的输入端输入一个事件的标准格式,它就能识别出该事件是否攻击事件。从软件转移到硬件虽然可以提高处理速度,但是它却失去了软件本身的好处,就是灵活性和可更新性,所以硬件化过程也应该把这些因素考虑在内。


4、专业化


提高处理速度的另一个方向就是减少攻击的签名条目。目前大部分入侵检测系统的签名条目都是很大,其中大部分都是很老很老的攻击的签名。这些老的攻击利用的缺陷已经很老了,现在的系统里边很多都不存在了。所以,去掉这些老的攻击签名不会影响入侵检测系统的查全度,而且还可以提高检测速度。


还有一个方向可以减少攻击的签名条目就是专业化检测。从用户的角度来看,没必要去检测所有的攻击,因为有的攻击用户明明知道不可能成功。例如用户的系统没有提供WWW服务,那么就没必要去检测有关 WWW 的攻击。反过来,如果系统只提供 WWW服务,那么用户只需要关心有关WWW服务的攻击即可。专业化的入侵检测系统不但能提高速度,而且还能提高检测的准确度。因为,同一类攻击的特性可能会比较相似,无论从理论还是实践上都是更容易处理的,所以,入侵检测系统的一个发展趋势就是走向专业化。基于应用程序的入侵检测系统就是这么发展起来的。


5、异常检测


和误用检测技术相比,异常检测技术还没有发展成熟。虽然异常检测具有一些误用检测所没有的功能,但异常检测的最大缺点就是错误率太高,就是因为这个原因,异常检测还没有应用在商业产品中。提高异常检测的准确度是入侵检测目前的研究热点。由于网络上的行为比较复杂,难以预测,所以提高异常检测的准确度是一个很困难的工作。但随着人门对网络行为有更深入的认识,异常检测技术可以解决准确度不高的问题。


走向专业化的入侵检测系统给异常检测开了一条新的路。因为同一种攻击类型,可能会有相同的行为。这样,用异常检测技术更能够准确地确定哪些事件是异常的,哪些事件是正常的。


异常检测作为误用检测的前段预处理将是将来很多入侵检测系统的选择方案。因为,误用检测的技术特点本身限制了入侵检测系统的处理速度,如果在误用检测的前段加上一个异常检测的模块,这个模块把高速率的数据进行过滤,只把攻击有关的数据交给误用检测处理。这样不但可以保持检测的准确度,而且可以提高检测速度。异常检测作入侵检测系统的前段预处理模块是异常检测技术的一个应用,也是入侵检测系统的一个发展方向。


6、人工智能的应用


很多人都说,网络安全本身是纯计算机技术的一门课。所以,搞网络安全的人一般都是学计算机专业出来的,而学计算机专业的人的思维总是对一些具体的、看得见、摸得着的东西感兴趣。误用检测之所以发展在先(和异常检测相比)可能就和这个问题有关。


随着人工智能在各个领域上得到广泛的应用,人工智能也将会在入侵检测领域上取得好的成果。实际上,目前研究人员也想出多种人工智能能够在入侵检测系统中的应用,例如神经网络、遗传算法、支持向量机等。异常检测技术将是人工智能最合适的应用之处。


入侵检测系统的智能化还有更深刻的意义。请想象攻击和检测的情况:攻击是由人去实现的,而且很多种情况是由很有经验的攻击者进行。而检测呢?入侵检测系统是一个计算机程序,计算机程序是由人写出来的。在这种人与机器斗争的战场上,人总是占上峰的!很多攻击者对入侵检测系统的技术相当了解,他有很多种办法可以绕过入侵检测而攻入系统。从这个意义来看,将来的入侵检测系统必须有一定的智能化。


目前在异常检测的人工智能应用过程中还有很多问题要解决,这就是将来入侵检测系统要发展的一个重要方向。


7、互连化


入侵检测系统的一个发展趋势是覆盖的范围越来越广。因为,因特网本身是一种跨国家的网络,攻击和入侵也常发生于两个不同的网络之间。为了检测以及处理这样的入侵,入侵检测系统必须向大规模的入侵检测系统发展。可是,因特网的另一个特点就是不同网络可能会属于不同的机构管理,由于安全的原因,不同机构之间的访问权限肯定会有限制,导致一个入侵检测系统需要在跨机构、跨公司或者跨国家的因特网环境下完成检测和处理攻击的功能,因此,入侵检测系统之间必须合作,叫做入侵检测系统的互连。


入侵检测系统的互连是入侵检测系统发展的必要方向。因为它符合于因特网的成功因素(因特网的一个成功因素是网络之间的可互连性)。由于在现在的因特网中,网络和网络之间的互连通过网络管理系统操作,而且网络管理系统已经有一套完整的运行机制。所以如果能够实现入侵检测系统之间的互连时,入侵检测系统可能会被集成在网络管理系统里边,作为网络管理系统的一个重要功能。


8、入侵防护


正如复杂的家庭安全系统可能包括摄像机、探测器及监控设备监视室内的可疑活动,譬如有人未经许可擅自闯入,入侵检测系统(IDS)也会警告IT系统管理员网络环境边界内部的潜在安全危险。与被更为广泛的IT安全规划吸纳的其他传统安全技术一样,入侵检测系统在过去五年已日益成为安全解决方案的一个必要条件。


然而,入侵检测技术的问题在于,它们与其他传统安全技术存在同样的严重缺陷:反应被动。这类战略性系统考虑再怎么周到,无论独立实施还是结合其他技术实施,经常发生的一系列安全攻击也一再表明:存在的缺口可能会导致网络资源受到破坏而瘫痪。


基于网络和基于主机的入侵检测系统都普遍存在几个弱点。首先,总的说来不能适应庞大、高速、复杂的网络。其次,实施及监控这类系统时会给IT人员增添管理负担。另外,传统的IDS技术实际上会给网络和用户活动带来障碍,这就影响了性能,最终导致不应有的管理负担和沮丧情绪。


尽管安全人员尽了最大努力,企业内部计算资源还是每天在遭受入侵。攻击的扩散同访问网上其他资源的速度一样快。就这一点而言,以应用为中心的入侵预防为保护如今庞大的网络及企业环境提供了一种新的方案。入侵预防技术是任何采取主动措施的安全模式的核心所在,而这类方案因而获得的优点注重应用程序和操作系统安全性和资源可用性。此外,入侵预防安全环境下的行为实施策略对不断发展的攻击采取了整体分析的方案。结果就是,基于应用行为的主动防御机制能防止重要的文件和网络资产受到破坏。


入侵预防软件与传统入侵检测产品的不同之处在于,前者实际上能预防攻击,而不仅仅是监测出现的攻击。正如前文所述,当前的入侵检测软件都是反应式的—通常是扫描配置存在的弱点、攻击发生后才发现攻击。防病毒厂商和入侵检测厂商常常会“随时待命”,对攻击事件迅速作出响应。但到这时候,攻击通常已经生效,网络或桌面系统因而陷入瘫痪。入侵预防安全架构则充当下一代网络安全软件,它能积极主动地加强桌面系统和服务器的安全,防止受到基于特征扫描的技术所无法发现的网络攻击的破坏。


入侵预防之所以有着重大优势,正是因为它减轻了企业安全管理的负担。不同于传统入侵检测产品,入侵预防实际上通过下列方式来保护内部资源免受来自网络内部的攻击:限制可能具有破坏性的代码的行为又不妨碍业务经营、提供攻击记录以及一旦击退攻击就通知企业安全人员。此外,高性能级别入侵预防技术能够击退基于网络的攻击,譬如拒绝服务、探测、畸形数据包及敌意连接攻击。


为了对计算资源提供全面真正有效的保护,网络安全管理人员就不能单单依靠发现已知攻击或及其变化形式。入侵预防的新方法定义了适当行为,然后在企业内部每个最终用户的桌面系统、网络服务器上实施这些行为。那什么是正当行为呢?我们不必浏览本文内容就知道:倘若某用户收到一封电子邮件,立即企图把邮件发送给用户地址簿上所列的每个联系人,那么这就不是正当行为。同样,倘若来自Web浏览器、邮件软件或微软Office程序组的进程企图写入到Windows NT系统文件,这也不是正当行为。确切地说,这极可能是一种宏病毒。入侵预防就是采用这种方式监控系统和应用的行为,并且定义哪些行为是正当的、哪些行为是可疑的,这样一旦企图作出超乎预期行为范围的举动,入侵预防技术会先发制人地消除不当的系统行为。


只要设定规则以控制应用程序能够对安装了入侵预防系统的文件、网络和系统资源执行哪些行为,这种高性能入侵预防系统就能使IT管理员受益匪浅。作为一种智能代理,入侵预防系统会不动声色地运行:截获系统行为、核查政策,然后根据这些政策的规定允许或拒绝有关行为。此外,一些高度结构化的入侵预防系统还能提供预先设定的规则,以保护Web服务器、邮件服务器及提供一般的最终用户桌面保护。


最后,统计日志数据可用来生成表明网络整体运行状况的报告。如果利用这种报告,IT人员就能监控当前规则集(rule set)的工作情况,必要的话可以进行调整。每当发现有人企图访问受限系统资源的特定行为,这种行为就会被记入日志。


入侵检测系统结合漏洞评估工具是攻击出现后对其进行审查及辨析的理想工具,可是这类系统无法预防破坏。为了更清楚地了解入侵预防如何比传统IDS更进一步从而实际上预防攻击造成的破坏,不妨看一下特洛伊木马攻击。


表面上来看,特洛伊木马攻击似乎没有危害—它就像一种有用的后台进程。然而,这类攻击通常隐藏破坏性程序,可能其目的在于最终破坏或改动文件,或者可能是建立后门入口点,以便入侵者访问系统。基于网络的IDS发现不了文件里面所隐藏的攻击。基于主机的IDS 系统也许能分析审查和事件日志,查找可能表明未授权访问企图的证据,但携带伪装成“安全”信息的恶性代码的授权访问企图则有可能溜掉。


在防范特洛伊木马方面,入侵预防要比IDS进一步:它能发现系统当中的不寻常行为,然后在入侵实施之前加以实时封阻。例如,IT 人员能够发现及联系应用行为,如导致 Web服务器缓冲器溢出以便入侵者潜入网络、映射其他可执行文件的内存以窃取机密、连接键盘截获输入字符、修改现有的可执行文件以隐藏恶性代码、访问http端口伪装成合法的Web程序,所有这些行为无不表明特洛伊木马攻击的存在。


预防电子商务应用或网站内容遭到实际破坏对保护如今的开放网络来说至关重要。对面临攻击需要主动预防的安全措施以应对环境的那些人而言,现有的入侵预防技术起到了一项合乎实际的替代策略的作用。


9、标准化


互连本身的意义就是交换信息。如果入侵检测系统要互连时,它们之间要交换的信息是什么?第一,交换攻击事件的数据;第二,共享技术,资源。攻击事件的交换让入侵检测系统可以互相协助,一起分析和处理跨网络、跨机构和跨国家的攻击事件。技术和资源共享节省了网络整体的资源。入侵检测系统之间可以共享一个攻击签名库,这样不但节省了整个网络的资源,还使更新和维护过程更加方便。


目前,入侵检测系统的发展处于比较封闭的状态。每个厂家,每个研究机构都有自己的技术和产品。为了不同厂家、机构的入侵检测系统之间可以互连,必须有两套标准:数据格式和通信协议。数据格式标准就是攻击(入侵)数据的标准格式、攻击签名的标准描述等。通信标准协议允许这些标准数据可以互相交换。入侵检测系统之间的通信要求可靠性和保密性很强,这样才能使入侵检测本身和通信不被攻击者破坏。


研究入侵检测系统的数据标准格式和通信协议是入侵检测系统的一个发展方向。


10、与法律结合


很多专家认为,入侵的防范离不开法律。目前之所以发生这么多入侵事件,是因为网络上没有法律。攻击尽管被检测到,但是没有一个有法律支持的有效证据控诉攻击者。入侵检测系统的标准化会解决这个问题。


11、蜜罐技术(Honey Pot)


蜜罐技术是入侵检测系统的一个重要发展方向。蜜罐技术就是建立一个虚假的网络,诱惑攻击者攻击这个虚假的网络,从而达到保护真正网络的目的。蜜罐对系统安全起了三方面的作用:


(1)诱惑攻击者攻击虚假的网络而忽略真正的网络。

(2)收集攻击者信息和企图,帮助系统的安全防护和检测、响应。

(3)消耗攻击者的精力,让系统管理员有足够的时间去响应。


蜜罐技术的基本思想是怎么建立一个虚假的网络。为了实现这个思想,目前已有一些研究。


网络空间仿真就是使用有限的资源,模仿一个大网络空间。增加网络搜索空间就是增加攻击者的工作量。利用计算机的多宿主能力(multi-home),只要使用一块以太网卡可以模仿很多IP地址,而且每个IP地址都有自己的MAC地址。现在的技术允许将4000个IP地址绑定在一台运行Linux的PC上。如果把网络服务放在这些IP地址上显然是增加了攻击者的工作量。光用扫描攻击扫完这么多IP地址也要花相当多的时间,而且攻击者还要区分哪些服务是真的,哪些是假的。可见,这个技术的费用极低,但是能取得很好的效果。


发送给朋友 分享到朋友圈
评论0 0
内容加载中……,请稍候!
给TA留言
留言