基于MA的分布式入侵检测系统设计的研究
2015-07-13徐凯华王乐
徐凯华 王乐
摘要:在分析入侵检测模型的基础上,结合模型体系的结构、工作流程及针对目前入侵检测系统成为被攻击目标的现状和代理技术给系统带来的安全问题,提出了基于MA的分布式入侵检测系统开发工具及平台,详细描述了Aglet开发环境及实现技术,并结合现实情况提出了改进方法。
关键词:分布式入侵检测;Aglet开发环境;Agent实现技术
中图分类号: TP391.9 文献标识码:A 文章编号:1009-3044(2015)13-0024-02
Abstract: According to the characteristics of DIDS model based on MA distributed intrusion detection system development tool and platform is proposed in this paper, a detailed description of the Aglet development environment and implementation technology, combined with the reality of improving method is put forward.
Key words: distributed intrusion detection; Aglet development environment; Agent Technology
基于MA的分布式入侵检测系统应用十分广泛,能有效地检测出外来的攻击和破坏,通过对系统用户需求的分析,确定了本系统的开发工具及所使用的移动代理平台:
系统采用基于Web页面的入侵检测系统,Web服务器为Apache2.0;后台数据库使用SQL 2008;开发语言用C++,JSP脚本语言;移动代理平台:IBM Aglet 2.0。
在整个系统中,移动代理的设计是关键。选择合适的移动代理平台就显得尤为重要,并将直接影响到系统功能的实现。在这里,我们选用Aglets软件开发工具箱(ASDK,Aglets Software Delevopment Kit)进行原型设计、概念证明与评价。
Aglets的设计主要是为移动代理系统的标准化提供参考。与操作系统中进程类似,Aglet是有生命周期的,且每个Aglet在其生命期内都有一个的唯一标志符。标志符中包含了Alget独一无二的类名。Alget的拥有者(AgletOwner)定义了Aglet的安全优先权(Security Preference),并时刻关注和检查Aglet的安全性, 这个优先权主要是限制Aglet的权利以确保安全,如防止巡游Aglet非法通信,规定最大允许的CPU消耗量等。
在Aglets系统中,为了降低管理的成本,引入域(Domain)的概念。域是由多个长期存在的上下文对象组成的。系统中的DBMS 采用的是关系型的SQL Server,它是一个效率高,功能完善,安全性能优且同时API丰富的一种数据库开发环境。
Aglet提供了一个简单而全面的移动代理编程模型,在安全策略保障的情况下,为移动Aglet提供灵活的互通信机制。 在开发语言上选择Java和C++。Java开发工具包(Java Development Kit,简称JDK)是升阳公司开发的基于Java语言的开发环境,对于数据模块的分析要产成若干代理,要与移动代理平台保持频繁通信,而本系统中,用纯Java语言编写移动代理平台。开发环境是微软的Visual C++6.0,编程语言是C++。
1 Aglet开发环境
Aglet在一台主机上以线程的形式产生一台工作站,之后整个Aglet物件被分派到另一台工作站上,在分派的过程中,Aglet暂停自己正在运行的程序;当整个Aglet全部派遣到另一台工作站后,新的Aglet将会重新启动继续执行刚才暂停的任务[1]。Aglets执行过程有序进行,只需要消耗很小的系统资源,有效地保护了Aglets执行后续任务的可用资源。Agent系统框架如图1所示.
Agent系统、agentid、内容长度等字节数组AgletAglet Runtime层安全、缓存、持久管理器等ATCI层(ATP、CORBA、RMI)Aglet Runtime层安全、缓存、持久管理器等ATCI层(ATP、CORBA、RMI)AgletTCP/IPTCPIP。从Agent系统框架图看出,Agent的执行分为发送、请求、处理、接受几个过程,最终便可在远端主机上执行。
2 Agent实现技术
Agent实现的关键是最佳路由的选择,最佳路由一般考虑传输路径、规划路由上的网络吞吐量、远程主机负载及主机上是否能快速查到存在信息的概率。MA的主要任务是在规划的最佳移动路径上完成任务,时间越短,执行效率越好。通过Agent的协同工作,移动Agent系统发现本地主机和网络的入侵行为[2]。
2.1 Agent的设计模式
在系统的整个设计中,采用了主从设计模式。根据检测的实际需要,主Agent查找距离自己最近的从Agent,把任务委派下去;待从Agen收到任务后,成为新的主Agent;再次查找距离自己最近的从Agent,以此类推。直到任务迁移到指定的目的地,通信完成,返回结果。
下面以收发器Agent产生功能Agent为例来说明上述过程。Create程序片断如下:
//功能Agent的生成
public void CreateAgent( ) {
try{
setText(“begin Agent…”);
waitMessage(2*2000);
init object[ ];
object[ ] =new Object[ ]{transceiverProxy,pmlsi};
AgletProxy proxy=getAgletContext[ ].CreateAglet(null,” Agent”,init);
}
catch(Exception ex)
{
ex.PrintStackTrace( );
}
}
}
当产生功能Agent后,Agent会自动呼叫方法OnCreation( ),在OnCreation( )中,接收收发器Agent传过来的参数值,指定给相对应的变量,而后呼叫方法run( ),run( )执行,完成所交付的任务。
Agent.java中相关被产生的程序片断如下:
public void onCreation(Object o) {
try{
transceiverProxy=(AgletProxy)((Object[])init)[0];
mlsi=(AgletProxy)((Object[])init)[1];
Proxy=getProxy( );
}
catch(Exception ex) {
}
} //end of onCreation( )
public void run( ) {
//doTask( ) 执行任务;
readalertVecInfo=readAlertInfo.size( );
if(Vecsize > 0)
SendMessage(ReadalertVecInfo);
}
2.2 Agent的通信过程
在移动Agent系统中,Agent的通信是整个系统设计的核心,关系到系统设计的成败。Agent的通信犹如最佳路由的选择,不是单个Agent能完成的;各个Agent之间相互通信进行信息交换[3],协同工作。
在Aglet中,Value和Kind是每个消息对象MO(Message Object)的初始值。为了说明Agent的通信过程,现以收发器Agent和功能Agent的沟通协调为例来来说明。当功能Agent发现入侵信息,即系统存在入侵行为后,功能Agent使用方法SendMessage( )将入侵消息传给收发器Agent功能,此处的Kind和Value分别是ReportInformation和 AlertinfoVec(Vector类型)。在收发器Agent收到消息后,又会如何处理收到的消息呢?这时收发器Agent会使用方法HandleMessage( )去处理刚刚收到的消息,同时给功能Agent传输一个boolean值,以便告知处理消息的结果是否成功。我们知道, Agent间的通信是通过一个代理(Proxy)来分步骤实现的,所以当收发器Agent向控制台Agent汇报信息时,必须要使用控制台Agent的代理,即收发器Agent与此代理联系。
2.3 Agent的移动
IBM提出的指定执行环境和服务接口,可以被看作是一个最小实现代理传输协议,基于移动智能体传输协议ATP(Agent Transfer Protocol)框架定义了一组原语的接口和基本信息设置,实现智能体在整个异构网络环境中的传输,并为其分配执行环境和服务接口,可以看作是一个Agent传输协议的最小实现, ATP框架结构定义了一组原语性的接口和基础消息集,其基本操作如图2所示。
在实现本系统的过程中,对Agent的迁移采用了巡行(itinerary)模式。这种模式能最大限度地维护着所有可能到达的目的地的列表,并将新发现的路由加入这一个列表,使得列表的规模不断壮大;负责路由策略的制订和最佳路由的选择,并按时到达指定目的地;当在检测过程中有异常情况(如目的地不存在)发生时,也能及时处理。
3 小结
基于移动代理(MA)的分布式入侵检测系统(DIDS),可以降低网络负载,在不影响有效传输数据使用的情况下,对整个网络中是否有入侵行为的发生、入侵后对内部系统的破坏程度进行检测。能够防御针对IDS自身的入侵行为,有较好的安全性;下一步在以下两方面对系统进一步完善,使之成为分布式入侵检测的中间件,充分发挥Agent在DIDS中的灵活作用。
(1)智能化入侵检测。在入侵检测上也可以采用智能化的方法进行快速、准确的入侵。常用的有基于免疫原理的方法检测、基于神经网络的智能化检测及基于遗传各种算法的等方法。这些方法的共同点就是入侵特征的提取与判断。
(2)网络安全技术相结合。入侵检测过程结合PKIX,防火墙技术,安全电子交易(SET)等技术,提供完整的网络安全。例如,基于网络和基于主机的入侵检测系统相结合,将基于网页的检测技术很好地结合在一起的主机都相辅相成,提供集成的攻击签名,检测,报告和事件关联等功能。提供完整的网络安全保障,将入侵行为拒绝在门外。
参考文献:
[1] 李剑峰,王乘.在分布式入侵检测系统中应用MobileAgent[J].计算机工程与应用,2004,40(7):161-164.
[2] 马恒太,蒋建春,陈伟锋,等.基于Agent的分布式入侵检测系统模型[J].软件学报,2012,11(10):1312-1319.