基于XMLRPC的网络安全管理平台的设计与实现

资源类型:pdf 资源大小:612.00KB 文档分类:工业技术 上传者:徐贤如

相关文档

批量下载下列文档
关闭
关闭
关闭

文档信息

【作者】 薛静锋  曹元大 

【关键词】网络安全 管理平台 XMLRPC 

【出版日期】2005-05-10

【摘要】针对传统网络安全管理方式的不足,设计实现了一个基于XMLRPC的网络安全管理平台,分析了平台中各安全产品的日志和数据信息的格式统一与融合问题,提出了解决方法并详细论述了实现过程。该平台可以统一管理运行在不同操作系统上的安全产品,并能对各种安全产品的日志数据进行统一分析。

【刊名】计算机应用

全文阅读

0 引言面对层出不穷的网络安全问题,很多机构和部门都购置了各种各样的网络安全产品,如防火墙、漏洞扫描器、入侵检测系统等,对网络安全起着重要作用。但是,当使用了种类繁多的网络安全产品后,如何有效地对它们进行统一的管理和配置就成了使用者面临的一个主要问题。目前,网络安全管理方式存在的主要问题在于:①管理系统依赖于被管部件所在的操作系统甚至硬件平台;②各种被管部件的日志数据格式不一,难以集中分析 [1, 2]。1 开放式网络安全管理平台的体系结构鉴于传统网络安全管理方案存在的不足,本文提出了一种网络安全管理平台的设计方案。其设计目标是:通过该平台对运行在各种操作系统和硬件平台上的网络安全产品实施统一的配置、统一的策略、统一的日志和统一的报告。在网络安全管理平台的设计中,选择了当前网络安全系统中 3种不可或缺的安全部件:防火墙、入侵检测系统和漏洞扫描系统。在具体实现中,选择了以下几个比较典型的开放源代码软件:防火墙Netfilter、入侵检测系统Snort和漏洞扫描系统Nessus。本文设计的网络安全管理平台的体系结构如图 1所示,主要由浏览器、平台Server和平台Agent组成。平台Server运行在Windows2000平台上,平台Agent运行在被管部件所在的平台上。  图 1 网络安全管理平台的体系结构平台Server在逻辑上分为用户层、应用层和系统层 3层。平台Server的各个组成部分分布在这 3个层次中,起着不同的作用,完成各自的功能,而同一层次的各组成部分又共同完成该层的逻辑功能。用户层与平台用户的浏览器直接接口,为用户提供了单一整合的远程操作接口,使得用户可以通过浏览器随时随地地对安全产品进行远程管理和配置。应用层是平台Server应用处理的核心,主要由部件管理模块、本地数据处理模块和日志告警处理模块组成。该层采用完全组件化的模块结构,当需要增添或更改某些功能时,只需要增添或更改相应模块,使得平台具有很好的可扩充性。系统层是平台Server应用层进行应用处理的基础,为应用层提供各类必要的系统库,包括存放数据的库(.mdb文件)、WebServer(IIS)、XMLRPC和libwww库。用户层的Web应用模块采用ASP程序实现。应用层的各个模块是用VC++实现的ActiveX控件(.dll),其中部件管理模块和本地数据处理模块形成Web应用可使用的组件,而日志告警模块是在平台服务器上的后台运行程序,它不断地监视来自被管理部件的SNMPTrap和syslog消息。平台Agent安装在被管部件上,它与被管部件的功能函数库直接接口,由XMLRPCServer应用模块和XMLRPCServer库组成。其中XMLRPCServer应用模块是平台Agent与平台Server间进行通信的接口模块,XMLRPCServer库为XMLRPCServer应用模块的通信提供了库的支持,该库完成Server与Agent间通信协议的封装。平台Agent是平台的一部分,但它和平台之间在实现上具有一定的独立性,采用Agent结构,无论被管部件运行于何种系统,只要是开发了支持该系统的Agent,就可以把它纳入平台的管理之下,使得网络安全管理平台能够管理运行于各种系统的安全产品,并且可以很方便地随时添加或删除被管部件。2 安全管理平台的通信方式浏览器和平台Server之间采用SSL加密的HTTP协议进行通信,平台Server和平台Agent之间的通信方式有 3种:HTTP+SSL封装的XMLRPC调用 (双向 )方式;SNMP(v3 )Trap日志与告警方式 (单向 );syslog日志与告警方式 (单向)。平台的统一管理配置功能和跨平台管理的特性通过应用XMLRPC来实现。XMLRPC是一个能够用于Internet的轻量级的远程过程调用协议。它支持异构的操作系统环境,使用HTTP进行传输,使用XML进行编码。一个XMLRPC消息就是一个HTTP POST请求,请求体使用的是XML格式,过程在Server上执行后,返回到Client的值也是使用XML格式 [3]。平台Server的部件管理模块是实现对被管部件访问的核心模块,其功能是通过XMLRPC控件的访问实现的,该模块的功能实现主要体现在若干“XMLRPCClient功能调用”方法中,对于每一次调用,都将实现一次对被管部件的某个功能函数的调用。在XMLRPC中,过程调用的参数可以是标量、数字、字符串和日期等,也可以是复杂的记录和列表结构,给配置和管理带来了很大的灵活性。此外,XMLRPC基于w3c libwww,不但可以实现同步调用,而且可以实现异步调用。平台Agent是一个用C语言编写的CGI程序,该程序接收来自平台Server的XMLRPC调用,然后通过与被管部件的接口函数调用被管部件的功能函数库,从而为平台Server提供服务。在CGI程序中,每项配置或管理功能对应一个方法,每个方法对应一个功能函数,需要扩充功能时,只需增加相应功能函数,而不需要改变其他代码,因此对系统的功能进行修改和扩充非常方便。XMLRPC可以有很多种实现方式,这里采用C语言实现,C语言可以适用于多种平台,而XMLRPC也支持多种平台,因此具有较好的移植性,便于在各种操作系统上开发Agent模块。部件管理模块和平台Agent之间的通信内容是用XMLRPC封装的,XMLRPC支持OpenSSL,具有很好的安全性,而且,XMLRPC消息使用XML进行编码并封装,对用户是透明的,有利于开发工作的进行。3 平台中日志数据格式的统一与融合在平台中的三个安全产品中,Snort启动后会实时地在硬盘上记录大量的报警信息,Nessus每次扫描结束后会生成一个结果报告,而Netfilter的日志比较少,只有启动和停止的时间信息 [4]。所以我们只做了Snort日志和Nessus数据的格式统一与融合。3. 1 日志数据格式的统一Snort监听网络数据时会实时地在硬盘上记录大量的报警信息。Snort各种日志信息的内容都包括:攻击事件发生的时间;Snort提示信息 (报警的分类和优先级 );攻击方IP地址;攻击方端口号;被攻击主机的IP地址;被攻击的端口号。为此,我们设计了一种数据格式,其中前 6个字段分别对应上述 6个内容,最后 1个字段存放备注信息。在Agent端按此格式对每一条Snort日志信息进行格式化处理,再将处理过的数据传给Server。Nessus对网络上的计算机进行扫描后会生成一个报告,该报告的内容包括:被扫描的计算机名或IP地址;被扫描主机的端口号;包括在此端口的服务 (端口号 /协议 );扫描所使用的插件的ID号;安全告警信息或安全漏洞报告;告警信息或漏洞报告的内容。用Agent对该报告进行处理,把“被扫描主机的端口号”与“在被扫描端口的服务和使用的协议”分开,加入扫描开始时间和扫描结束时间,然后设计一种包含 9个字段的数据格式,每个字段分别对应:被扫描主机的IP地址;被扫描主机的端口号;在被扫描端口的服务 /协议;扫描所使用的插件;安全告警信息或安全漏洞报告;告警信息或漏洞报告的内容;扫描开始时间;扫描结束时间;备注信息。在Agent端按此格式对每一条Nessus数据进行格式化处理,再将处理过的数据传给Server。通过分析比较Snort日志格式和Nessus数据格式可以发现,两者有一个交集,即IP地址和端口。Snort检测到的攻击是针对某一主机的某一端口,而Nessus扫描到的漏洞也是运行在一个主机某一个端口上的软件或服务存在的漏洞。因此可以通过对两者取并集的方式进行格式统一。对Snort日志格式和Nessus数据格式取并集,并将交集的IP地址字段和端口字段合并,生成一种新的数据格式,包含以下内容:“时间 |Snort提示信息 (报警的分类和优先级 ) |攻击方端口号 |被攻击方(被扫描主机)的IP与被攻击 (被扫描)的端口 |在此端口的服务和使用的协议 |扫描所用到的插件 |安全告警信息或安全漏洞报告 |告警或报告的内容 |扫描开始时间 |扫描结束时间 |备注信息”。我们称此格式为“统一格式”,用该格式对Snort日志和Nessus数据分别进行扩展,实现格式的统一。3. 2 日志数据的融合由于Snort是实时写日志的,而Nessus是按计划隔一段时间进行一次扫描的,因此在进行融合时,要做到Snort日志和Nessus数据在时间上互相具有参考性。这需要对各个Agent端的系统时间进行校正。我们把Server端的时间作为标准时间,在Server端ping各Agent端,根据包返回的时间可以计算出每一条传输路径上的网络延迟,把标准时间与每个网络延迟时间之和传给相应的各个Agent,再由Agent修改系统时间,使得在此平台管理下的所有主机在时间上达到一致。如果Server和Agent所在的主机处于一个局域网内,则可不考虑网络延迟时间。在统一了Snort日志和Nessus数据格式并校准了各主机的系统时间后,就可以进行融合了。我们采取的方法是:以时间为坐标轴,第i次Nessus扫描开始时间对应坐标轴上的一个点,设为Ai,用向后靠拢的方法,把在时间上满足 (Ai-1,Ai] (称为融合条件)的Snort日志与第i次扫描得到的数据进行融合,此功能在Server端实现。在Server端设计了 3个数据库,分别存放Agent传来的Snort日志、Nessus数据和融合后生成的新数据。具体实现过程如下:(1)Agent将加密的Snort日志信息和Nessus数据传送给Server;(2)Server将Snort日志信息解密后存入数据库 1,将Nessus数据解密后存入数据库 2;(3)从数据库 1中取出未融合的Snort日志数据,从数据库 2中取出与Snort日志数据共同满足融合条件的Nessus数据进行融合,融合后的数据存入数据库 3。这时需要考虑的一种情况是:Snort日志和Nessus数据的交集为空,也即在遭到攻击的主机的端口上没有漏洞,或存在漏洞的端口没有受到攻击。这时只需用统一格式分别对二者进行扩展,扩展部分取值为空,然后存入数据库 3,这样的数据从内容上等于单一的Snort日志数据或单一的Nessus数据。因为数据库 1和 2中保存着Snort日志和Nessus数据的完整内容,因此通过提供接口,本平台的日志分析系统还可以进行扩展,集成现在流行的一些日志分析工具软件。4 结语本文设计了一个基于XMLRPC的网络安全管理平台,实现了对防火墙Netfilter、入侵检测系统Snort和漏洞扫描系统Nessus的统一管理。同时本文分析和实现了网络安全管理平台中Snort日志和Nessus数据的格式统一和融合功能,为平台中的日志告警和处理模块提供了更有价值的数据,使得平台可以对网络中的安全事件做出比较准确的判断、分析和处理。在该平台的实现中,采用了基于Web的管理模式,引入了XMLRPC,很好地解决了传统网络安全管理中存在的问题。基于XMLRPC的网络安全管理平台的设计与实现@薛静锋$北京理工大学软件学院!北京100081 @曹元大$北京理工大学软件学院!北京100081网络安全;;管理平台;;XMLRPC针对传统网络安全管理方式的不足,设计实现了一个基于XMLRPC的网络安全管理平台,分析了平台中各安全产品的日志和数据信息的格式统一与融合问题,提出了解决方法并详细论述了实现过程。该平台可以统一管理运行在不同操作系统上的安全产品,并能对各种安全产品的日志数据进行统一分析。[1] 薛静锋,曹元大.集成化网络安全管理平台的设计[J].北京理工大学学报,2001(21):732-736. [2] RAYH.SNMP,SNMPv2andCMIP-thetechnologiesformul tivendornetworkmanagement.ComputerCommunications,1997,(20):73-88. [3] ERICK.XML RPCHOWTO[DB/OL]. h

1 2

问答

我要提问
关闭