作者简介:张海辉(1988-),男(汉族),广东省韶关市人,深圳大学硕士研究生. E-mail: 790590335@qq.com
中文责编:坪 梓; 英文责编:雨 辰
Zhang Haihui, Zhang Yong, and Ou ZhengguangATR National Defense Science and Technology Key Lab, Shenzhen University, Shenzhen 518060, P.R.China
information security; cloud computing; vulnerability scanning; task driven; multi-agent; load balance
DOI: 10.3724/SP.J.1249.2014.01071
针对基础设施即服务云计算平台多目标虚拟机的漏洞扫描问题,设计一个多代理分布式漏洞扫描系统,提出一种分布式漏洞扫描任务分配算法.所设计的系统包括控制中心模块和检测代理模块,控制中心控制检测代理运行及分配扫描任务,检测代理实施漏洞扫描任务并返回扫描结果.提出的任务分配算法主要是根据待分配任务及检测代理负载信息分配扫描任务.采用OpenStack搭建了单节点云计算平台进行漏洞扫描模拟实验.实验结果表明,该算法可行、有效,并降低了多目标虚拟机的漏洞扫描耗时.
A multi-agent distributed vulnerability scanning system is proposed for vulnerability scanning on an IaaS(infrastructure as a service)cloud computing platform. The system contains two modules of control center and multiple agents of scanning. The state of the agents, the assignment of task and the return of scanning results are determined by the control center. In the proposed task-assigning algorithm, the scanning tasks are assigned based on the the tasks to be allocated and the loading information on the agents. The single point IaaS cloud platform is implemented with OpenStack. The experiment results demonstrate that the proposed system is feasible and effective. The time required for vulnerability scanning in multi-virtual machines is also reduced.
云计算是当前IT界最具影响力的技术之一,对于云计算相关技术的研究和应用正逐渐改变着人们管理和使用IT资源的方式[1].云计算服务提供商为用户提供满足需求的计算资源,资源可动态伸缩,按使用付费.通过云计算,用户无需再部署和维护硬件设施,多个用户共享云计算中心的硬件资源,这不仅降低了用户的资金投入,且可提高资源利用效率.当前提供云计算服务的主要有亚马逊EC2[2]、微软Windows Azure[3]、谷歌GAE[4]和新浪SAE等.据报道,用户选择云计算服务商所考虑的因素中“云计算服务的安全性”占所有因素的第2位[5].因此,随着云计算的落地实施,云计算中用户数据的安全性问题将影响用户对云计算服务的接受程度,也将进一步影响云计算服务的发展,文献[6-7]就对云计算安全提出了指导性意见和关键领域云安全解决方案.
虚拟化技术是云计算的关键技术之一,其安全尤为重要,文献[8-9]对云计算中虚拟化的安全问题进行了一定研究.作为云计算服务类型之一的基础设施即服务(infrastructure as a service,IaaS),主要是为用户提供完整的虚拟机操作环境,用户可方便地在虚拟机上部署操作系统及应用程序,与此同时,用户的虚拟机环境会存在安全漏洞隐患,进而使用户受到安全威胁.为了降低用户使用云计算的风险,同时保证云平台虚拟机环境的安全,可将漏洞扫描及补丁更新工具部署在IaaS 云计算平台中.通过对虚拟机进行漏洞扫描,检测虚拟机的安全漏洞并评估风险和提供解决方案,以提高虚拟机抗攻击能力,保证用户虚拟机环境的安全.文献[10]对云计算漏洞扫描进行了研究,文献[11]提出了一种基于云平台的虚拟机镜像安全管理的方法. 针对网络漏洞扫描时TCP连接较多、漏洞扫描开销大,IPv4网络中外部网络无法扫描内部网络目标主机漏洞等问题,文献[12]基于云计算平台,提出了一种结合TURN扩展协议机Sock5协议的NAPT代理漏洞扫描方法.针对IaaS平台虚拟机中应用软件如何及时更新等安全隐患问题,文献[13]提出了一种对云平台不同租用者不同应用软件实时扫描更新的方法.
本文针对IaaS云计算服务的虚拟机环境,设计一种多代理分布式漏洞扫描系统,为提高扫描效率提出了一种基于任务驱动的漏洞扫描任务分配算法,并利用OpenStack云计算平台进行了实现和仿真.
传统的漏洞扫描主要有基于主机的漏洞扫描[14]和基于网络的漏洞扫描[15].若采用基于主机的方案(即在每台虚拟机上安装漏洞扫描)对云计算平台的虚拟机漏洞进行扫描,会造成资源浪费[16].且当虚拟机同时进行漏洞扫描时,会引起物理主机的资源占用率瞬时升高,进而影响虚拟机的性能.基于此,宜采用基于网络的漏洞扫描,并把漏洞扫描系统部署到虚拟机监视器层(virtual machine monitor,VMM).但是检测的目标主机过多时,服务器端也会成为性能瓶颈[17].为解决此问题,本文提出了一种基于任务驱动的多代理分布式漏洞扫描方法.
云计算平台多代理分布式漏洞扫描系统主要由控制中心(control center)和检测代理(agent)2个功能模块组成.在云平台的逻辑子网中部署检测代理,通过控制中心管理检测代理和任务分配,实现对云计算平台虚拟机的漏洞扫描.图1为所提出的云计算平台多代理分布式漏洞扫描系统框架示意图.本系统需满足以下要求:
1)检测代理间负载相对均衡,如 cpu 使用率、内存占用率等,保证每个检测代理的资源得到最大化利用;
2)在硬件资源紧张的情况下,最大化利用云计算平台当前可用资源,避免由于漏洞扫描而开启新的物理服务器;
3)保证云计算平台中因漏洞扫描而产生的网络流量最小化,以降低对正常云计算服务的影响.
图1中的控制中心是漏洞扫描任务的控制端,部署在云计算平台的管理模块上.控制中心控制检测代理的启动(即检测代理镜像的实例化)、停止,为检测代理分配检测任务,控制检测过程,汇总、显示检测结果,与云计算平台交互以及监控云计算平台负载等.
控制中心的功能模块组成如图2.各模块功能描述为:
1)资源信息管理及控制模块.
该模块负责与漏洞扫描系统管理员交互.资源信息包括云计算平台中虚拟机信息、检测代理agent的状态信息(如运行、停止)和漏洞扫描任务的状态信息(如任务的进度、执行状态)等.控制部分包括检测代理镜像的插件更新命令和发送给agent的检测任务控制命令.检测任务控制命令包括对agent正在运行的任务控制(如任务开始、暂停)和任务分配,以及开启新的检测代理等,其中任务分配命令由任务分配模块的任务分配信息得到.
2)检测插件更新模块.
该模块为检测工具提供漏洞扫描插件更新的功能.为了检测出最新的漏洞,就要及时更新工具的漏洞库.因为检测代理由检测代理镜像实例化而来,所以只要更新检测代理镜像中的漏洞库,即可在新启动的检测代理中得到最新的检测插件.
3)日志管理模块.
该模块为系统提供日志记录.日志包括每个检测代理的漏洞扫描历史,每个检测任务信息,漏洞扫描插件更新记录,每个被检测对象的检测结果及被检测到漏洞的详细信息等.
4)安全评估模块.
该模块实现对云计算平台安全风险评估.由被检测对象的检测结果,评估该对象的安全性.根据所有被检测对象的评估结果,再综合评估整个云平台的安全风险.
5)任务分配模块.
该模块实现任务驱动的分配算法.模块的输入信息包括物理机负载监控模块信息和检测代理负载信息.
6)物理机负载监控模块.
该模块实时获取云计算平台物理服务器的资源使用情况.资源使用情况主要包括物理服务器的CPU、内存和网络的使用率,并判断它们是否超过负载阈值.
7)通信模块.
该模块的用于控制中心与各个检测代理之间的通信.包括控制命令的发送,检测结果的接收等.
图1中的检测代理是漏洞扫描任务的执行端.它是云计算物理服务器中一个虚拟机实例,在该实例上安装漏洞扫描工具.检测代理接收来自控制中心的命令,采集自身负载信息,以及控制漏洞扫描工具,如任务的启动、执行.检测代理功能模块如图3.各模块功能描述为:
1)任务接收模块.
该模块接收任务控制信息,并把信息发送给漏洞扫描模块,作为漏洞扫描模块的控制信息.
2)漏洞扫描模块.
该模块接收、执行任务接收模块转发的任务信息.漏洞扫描模块根据任务信息判断被检测对象是否可达,执行漏洞扫描检测任务,生成检测报告并把检测报告发送给控制中心的安全评估模块.
3)检测代理负载监控模块.
该模块实时获取agent 的资源使用情况,并将资源使用率传送给控制中心,为控制中心的任务分配模块提供任务分配依据.资源使用包括agent 的CPU和内存使用率.
4)通信模块.
该模块用于检测代理与控制中心的通信.包括接收控制中心的控制命令,传送检测代理负载信息以及漏洞扫描的检测结果等.
云计算提供了可动态扩展的计算资源.为使漏洞扫描尽可能小地影响云平台性能,提出了任务驱动的扫描任务分配算法.agent在完成所分配的任务后成为空闲agent,将被关闭.即开始时,不会重复部署agent.同时,分配算法保证当前agent达到阈值,才转移到下一agent上,或部署新的agent.算法流程图如图4.算法描述如下:
1)通过物理机负载监控模块获取所有物理服务器的资源使用情况,评估物理服务器的负载,获取未超过负载阈值的物理服务器IP地址,把IP地址保存到server_list列表;
2)判断server_list是否为空.若为空,则执行第3)步.若不为空,则执行第5)步;
3)判断检测代理agent 组是否为空. 使用agent_list保存各agent 的IP地址.若agent_list为空,说明当前运行的物理服务器已达到或超过阈值,无法在现有服务器上启动agent,执行第4)步.若agent_list不为空,执行第7)步;
4)开启新的物理服务器,跳转到第1)步;
5)从server_list中选择一个物理服务器,并在其上部署一个agent,把该agent 的IP地址加入agent_list, 执行第6)步;
6)给第5)步部署的agent 分配检测任务.若被检测对象与agent 处于同一逻辑子网,则任务优先分配给此agent,避免检测数据包被子网间防火墙拦截,保证漏洞识别率.跳转到第8)步;
7)轮询agent_list中的agent,看是否存在未超过阈值的agent.若不存在符合条件的agent,跳转到第1)步(此时将保持当前待分配的任务,直到已开启的物理服务器中的某agent 负载下降到阈值范围内,把任务分配到此agent).若存在符合条件的agent,跳转到第6)步;
8)判断任务列表task_list是否为空,若为空,则任务分配完成,跳转到第10)步; 否则执行第9)步;
9)判断当前agent 是否达到或超过负载阈值,若是,则跳转到第1)步; 否则跳转到第6)步;
10)任务分配完成,结束.
OpenStack[18]是一个开源云计算平台,提供了一种基础设施即服务的云计算方案.本文在DELL PowerEdge 2950服务器上利用OpenStack部署实验环境,搭建了单节点形式的IaaS云计算平台,数据库使用MySQL 数据库,检测代理上部署的漏洞扫描工具为开源漏洞扫描工具OpenVAS,开发语言为python 2.7 版本,云平台管理工具为euca2ools.euca2ools最早由亚马逊用于管理其云平台aws(amazon web services),只要云平台兼容aws接口, 所设计系统即可工作, 或稍微改进即可工作.
1)硬件环境.DELL PowerEdge 2950 服务器一台,64 bit、2.0 GHz CPU × 2 × 4核,内存16 Gbit,硬盘空间292 Gbit,2个100 Mbit/s网卡.
2)软件环境.服务器操作系统:Ubuntu 12.04.2 Desktop i386.OpenStack 版本为 OpenStack Essex,以单节点形式安装该版本的nova,keystone,glance及horizon模块,满足基本功能需求.OpenStack上的虚拟机和检测代理配置见表1.
根据OpenStack官方文档给出的公式,可运行虚拟机数量为:(重用因子 × 物理核数)/ 每实例所需虚拟核,重用因子默认为16.物理主存确定的虚拟机数目为:(扩展因子 × 物理主存)/ 每实例内存,默认因子为1.5.
根据已有服务器配置及表1,当前平台最多可运行虚拟机数量为48个.
检测代理的负载阈值设定为:内存使用率70%,CPU 使用率70%.
首先进行执行检测任务数量和启动检测代理数量的实验,检测任务数量为当前需要进行漏洞扫描的目标虚拟机个数.检测代理数量为执行相应检测任务数量时需要启动的检测代理的个数.表2检测任务数量分别为1、2、3、4、5和6时对应启动检测代理数量的实验结果.
由表2实验结果可见,检测代理负载阈值的设定为70%的情况下,一个检测代理可以同时执行两个漏洞扫描任务.当任务数量多于当前检测代理可同时运行的任务数量时,将把多出来的任务分配到新的检测代理上.
图5为采用任务驱动分配算法和未使用任务分配算法的漏洞扫描系统对系统中的虚拟机进行漏洞扫描所耗费时间对比.横坐标表示目标虚拟机数量,即检测任务的数量.纵坐标表示完成所有检测任务花费的时间.
由图5可以看出,当目标虚拟机即检测任务数量为1和2时,2种算法所耗费的检测时间大体相当,从表2也可以看出,此时仅开启了一个检测代理.而当目标虚拟机即检测任务数量再继续增加后,采用本驱动算法进行任务分配的漏洞扫描耗时明显比未使用分配算法少.尤其是,当目标虚拟机增加到6个,系统启动了3个检测代理(表2),并行地对目标虚拟机进行漏洞扫描,耗时为23 min,而未使用分配算法的扫描其耗时为48 min,耗时降低了52.1%,说明本文算法进行漏洞扫描的效率较高.理论上,采用任务驱动分配算法的漏洞扫描系统可以并行进行漏洞扫描,并可以根据物理服务器和虚拟机的负载情况适当调节计算资源分配,其耗时的增加主要来源于检测代理负载探测、检测代理的启动等.而未采用任务驱动分配算法的漏洞扫描系统,由于只有一个检测代理进行漏洞扫描,检测任务越多则检测代理负载越大,超过负载部分的检测任务需要排队等待,其耗时随着检测任务数量的增多而显著增加.
因此,本文所提出的基于任务驱动的计算平台多代理分布式漏洞扫描系统是有效和可行的.
随着云计算技术的迅速发展,对云计算安全的研究和实施已不容忽视.而在对云计算平台中的虚拟机进行漏洞扫描时,需要考虑云平台资源利用率和效率等问题.本文提出的基于任务驱动的云计算平台多代理分布式漏洞扫描系统,借鉴基于网络的漏洞扫描技术,根据检测任务的需要启动足够的检测代理执行扫描任务,以OpenStack 为基础搭建了相应的实验平台进行相关实验,实验结果表明,本文所提出的算法有效、可行.进一步还需要增强实验环境,特别要考虑当云平台的网络拓扑发生变化时,如何保证针对同一虚拟机的漏洞扫描结果的一致性,并根据检测结果进行安全风险评估.
深圳大学学报理工版
JOURNAL OF SHENZHEN UNIVERSITY SCIENCE AND ENGINEERING
(1984年创刊 双月刊)
主 管 深圳大学
主 办 深圳大学
编辑出版 深圳大学学报理工版编辑部
主 编 阮双琛
国内发行 深圳市邮电局
国外发行 中国国际图书贸易集团有限公司(北京399信箱)
地 址 北京东黄城根北街16号
邮 编 100717
电 话 0755-26732266
0755-26538306
Email journal@szu.edu.cn
标准刊号 ISSN 1000-2618
CN 44-1401/N