基于层次化多代理的分布式入侵检测系统杨仕喜河海大学,江苏南京(210098)E-mail:yangshixi@hhu.edu.cn摘要:随着入侵检测技术的发展,IDS越来越呈现出分布性、智能性的特征。传统的基于多Agent的分布式入侵检测系统,往往采取一种分布式数据采集和层次化数据分析的方法。这虽然使系统的逻辑结构简单严谨,却很大程度上限制了系统的分布性、智能性与实时响应能力。本文提对传统的层次化结构的分布式入侵检测系统进行改进。为提高系统的健壮性,提出一种三层协同工作的系统结构,并且在各层次内部通过多Agent的协作来完成本层工作;对传统的分布式入侵检测系统进行了有效的改进。关键词:多Agent系统;分布式入侵检测;通信;协作1.引言随着对入侵检测系统(IntrusionDetectionSystem,简称IDS)研究的深入,如今的IDS逐渐呈现出智能性、分布性的特点。在最近10年中,入侵检测系统正走向这样一种结构:它们由一组分布式的监测器构成,在这个结构中每个监测器都负责本地的检测并为全局检测提供信息,如:DIDS[1],AAFID[1](图1所示),EMERALD[1]和COIDS[1](图2所示)等等。可以发现,它们实际上都是采取一种分布式数据采集和层次化的数据分析的方式来对网域进行监控。采用这种方式来构造分布式入侵检测系统,具有结构简单、系统的逻辑结构严谨的优点。但也有明显的不足,主要表现在三个方面:(1)集中的分析构件承受的负载较高,使每个分析构建的负载达到动态的平衡比较困难;(2)集中的分析构件可能会成为系统的瓶颈与单一的失败点[2];(3)多级层次化的分析降低了系统的实时性[2]。本文主要论述对传统的层次化结构的分布式入侵检测系统进行改进。为提高系统的健壮性,提出一种三层协同工作的系统结构,并且在各层次内部通过多Agent的协作来完成本层工作;为提高系统实时性,检测精度与负载平衡,将原有一个分析构件分析功能划分成多个有针对性的分析构件,使他们动态分布在整个网络。本文第2节简介系统逻辑结构及各层次的代理类型及功能;第3节给出基于层次协作技术的若干方法;第4节给出了系统实现的关键技术与部分。最后总结我们的研究工作,并且讨论未来研究开展的思路。2.系统介绍设所监控的网域由一系列的局域网构成,则系统的逻辑上由3个层次的Agent构成,自底向上分别是:数据采集层,数据分析层,决策控制层;如图3所示:该结构一改以前多个数据采集代理向同一个代理发送所有数据,以及数据采集代理单一的弊端,将数据采集代理与数据分析处理代理的功能更加的细化,形成数据采集层,数据分析处理层;加强各层次间代理的互动,减少了由集中式带来的各种不足;下面简单介绍三个层次的代理类型:数据采集层:数据采集层有主机数据采集代理(HostDateCollectAgent,HDCA)与网络数据采集代理(NetDateCollectAgent,NDCA)[3]两种;主机采集代理主要采集主机系统的系统日志和审计记录,并将其转化成标准格式数据提交数据分析处理层;采集主机时时运行的性能数据;在有请求的情况下,协同其他代理监视主机的异常操作。网络数据采集代理主要采集原始网络数据包作为数据源,进行简单协议分析,转化成标准格式数据提交到数据分析处理层;主机数据采集代理在注册时,每台主机都拥有一个主机数据采集代理(HDCA)和一个网络数据采集代理(NDCA);数据分析处理层:根据网络协议分析原理[4]将数据分析处理代理(DataAnalysisAgent,DAA)进行分类(如图4所示),数据分析处理层包含Telnet_DAA、FTP_DAA、HTTP_DAA、SMTP_DAA、DNS_DAA、SNMP_DAA、ICMP_DAA和Other_DAA八种代理,加上主机数据分析处理代理(HostDAA,HDAA),共九种代理;主机数据分析处理处理所属辖域内所有主机数据采集提交的采集数据;Telnet_DAA,FTP_DAA,HTTP_DAA,SMTP_DAA,DNS_DAA,SNMP_DAA,ICMP_DAA处理各自所属网络数据采集代理提交上的对应的网络数据;Other_DAA处理不是上述协议类型的网络数据。数据分析处理代理根据需要分布在整个网络系统的的计算机中,各个代理协同工作;控制决策层:1)中央控制部件:系统的核心部件,常驻IDS服务器中,控制和协调其他各代理的中心,管理着系统中所有的代理及部件的运行。2)响应代理:根据数据处理层提交的数据分析结果,做出相应响应,如跟踪,切断网络通讯等。3)优化代理:根据系统长期稳定运行的情况,先给出相对优化的模型;运行时,可根据实时的情况进行调整优化;系统工作步骤:Step1:系统初始化,IDS系统服务器初始化所有代理及模块,其中CU是中央控制部件,所有移动代理的,移动,挂起都由此CU发出;Step2:主机A1向CU发出注册请求,CU同意,派出HDCA1和NDCA1,并由优化代理指定HA1和NA1对应的数据提交代理;Step3:HDCA1采集主机实时数据,并将此数据提交给对应的主机数据分析代理。Step4:NDCA1收集原始网络数据,进行协议分析分类;如:根据以太网协议规则[4],应在第13个字节处有2个字节的第三层网络层协议标志,如为“0800”,可见以太网帧数据区域中携带的协议是IP协议。再从第24字节处起有1个字节的第四层传输层协议标志号,从图中得知其值为“06”,可见IP帧中数据区域携带的协议为TCP协议。TCP协议表明,在第35字节处,有2个字节的应用层协议标志,即“端口号”,从图中知其值为“0050”,转为十进制为80,而端口号80知其是个HTTP访问。Step5:网络数据代理不但具有网络数据采集的功能,而且具有网络数据数据分析的功能,根据主机运行的实时情况,执行数据提交策略(DataSubmitStrategy,DSS);Step6:数据分析处理层各代理协同工作,遇到异常情况,可向响应代理发出响应请求;Step7:优化代理实时检查数据分析处理层各代理运行情况,优化数据采集代理数据提交对象;优化数据分析处理层各代理的数量和位置;整个系统实际上是一个互相合作的多Agent系统。为了能使这个多Agent系统能顺利地运行并且实现分布式入侵检测的功能,必须建立合适的方法体系来实现Agent之间的协调与合作。3.层次化协同检测我们将系统分成三个逻辑层;不但要实现各层同类代理之间的协作,而且要实现各层之间的协作。在以前的系统之中,每一个局域网只有一个网络数据采集代理,它将采集到的网络数据基本上直接提交数据分析代理,功能比较单一;而在本系统中,每个主机都存在一个HDCA与NDCA,HDCA将所采集到的主机数据去掉冗余后将数据转化称为标准格式,提交HDAA进行分析。NDCA将所采集到的网络数据按照协议进行分类,实时判断主机运行状态,根据系统设置和主机的运行状态判定数据提交策略。网络数据采集不仅仅采集网络原始数据包,并且要按照协议分析将其分别归类,实时检测所在主机的系统情况,根据实际运行情况使用如下数据提交策略(DSS):(1)全部发送对应代理,本机不分析任何数据;(2)本机分析HTTP数据包,其它都发送到对应的数据分析代理中;(3)本机分析HTTP,FTP数据包,其它都发送到对应的数据分析代理中;(4)本机分析TCP数据包,其它都发送到对应的数据分析代理中;(5)本机分析UDP数据包,其它都发送到对应的数据分析代理中。这样动态承担系统负载,使得系统整体处于最优化状态。优化代理是个移动代理,实时对网络数据采集代理提交的对象进行优化,主要是确定数据采集代理提交对象,已经所需要经过的路由。不但使得数据分析层的各个代理所承担的负载动态平衡,而且使整个网络处于最优状态,不出现因为某个网络节点上的瓶颈导致整个系统性能下降。数据分析处理层各代理的协同主要表现在:(一)合理配置数据分析处理层的移动代理的类型,数量,位置;确保从网络数据采集层提供的分析数据能够及时准确的处理,并且对代理所在的主机运行影响最小。(二)同一类数据分析代理之间的协同,当一个数据分析代理发现异常行为时,可与同类数据分析代理进行关联分析,特别是针对一些复合攻击时,可以及时了解其他同类代理的处理情况,使得处理简单明了。在我们的系统中,每个代理的分工明确,工作正常且整个系统趋于自动化,智能化。将数据分析处理代理细分生成一些处理专用数据的代理,这些代理所含的规则少,算法简单,易移动,可直接派遣到目标主机直接处理流量大,数据单一的数据;比如处理tcp:4662端口的eMule下载工具下载的数据。这样减少网络数据流量的同时也减少了流量增大对承载数据分析处理代理主机的负担。4.系统实现为了实现上述基于移动代理的入侵检测系统,移动代理系统采用IBM的Aglets[5],主要使用其包含的一个移动代理服务器Tahiti,远程计算机运行Tahiti服务器以提供移动代理运行环境.为了平台无关性,我们采用Java作为开发语言,开发工具为JDK1.42。4.1系统通讯Agent间的通信是系统的核心问题之一,Agent之间要能够可靠、安全、高效地传递信息。系统的通信包括主机内Agent之间的通信和主机间Agent之间的通信,这两者的要求不同。主机内的通信为线程之间的通信,侧重于线程之间的同步和通信的效率;而主机间的通信则要重点考虑通信的安全性问题,需要建立一个安全的通信协议。前者,我们采用管道方式[6],因为管道非常适合于在同一主机内的两个线程之间交换大量的数据,并且能很好地解决线程之间的同步问题。对于同一主机内Agent间大量数据的传输(数据源Agent和分析Agent之间的数据交换)适宜采用管道的形式。后者,采用TCP为传输层协议,通信双方通过特定的协议消息来传递会话控制消息和系统消息,协议消息用来封装会话控制消息和系统消息。4.2数据采集与分析处理的实现入侵检测系统的数据源主要包括基于主机的数据源和基于网络的数据源。基于主机的数据源主要是指操作系统审计日志和各种应用程序日志等,基于主机的数据源可以提供较为完备的日志信息。应用程序日志是从面向用户活动的层次来记录系统活动的用户级抽象信息,除去了大量的冗余信息,更易于理解和分析。基于主机的数据采集应该结合操作系统行为和用户行为来进行判定,对特定事件从多方面证据来进行检测,从而提高准确性。基于网络的数据源主要是指实时网络原始数据包的采集。使用JPCAP(JavaPackageforLibpcap)[5]开发包来捕捉网络链路上的数据包;按照协议分析,捕捉到的数据包分类发送对应的数据处理代理中去;我们将数据分析处理代理按照网络协议的特征进行分类,并将规则按照数据分析处理代理的类型进行分类;每个数据分析处理代理拥有自己的分析策略与规则库;对于数据采集代理提交的数据,直接进行对应的处理;它即减少数据处理代理分析的工作量,提高运行效率,又减少了分析处理代理在移动过程中的资源消耗。4.3实验结果实验表明,即使在重载的高速网络上,大量的包也可以被及时地分析,遗漏少,降低了漏报率;正确性高,数据采集层按协议分析的方法将采集到数据提交到对应的数据分析处理代理,使得每个代理的策略算法都具有针对性,也减少了简单模式匹配方式中大量的误报,因为它知道每种协议中潜在的攻击行为所在的精确位置,每种特征的真正含义被理解了;负载平衡得到了保障,由于将数据分析处理层的代理进行了细化,使得数据得到及时的处理,但数量的量增大时对代理所在主机的影响也比较小;扩展性强,每个代理比以往的代理更加小巧灵活,代理可以及时得到更新,代理的增加,移动对系统的资源消耗比较小。可以检测分片攻击和协议验证,如果IP协议被分片,包首先在网络采集时就被重组,然后再细节地分析攻击行为,采用重组技术,系统可以检测出利用躲避技术的攻击,如包分片,TCP,RPC分段边界欺骗等。5.结束语层次化主动协同和移动代理技术应用到分布式网络入侵检测系统中,有以下优点:能实现全局范围内的入侵检测功能,具有清晰的系统结构和良好的可扩展性;具