基于kvm虚拟化平台的虚拟机在线杀毒系统的制作方法

文档序号:7779175阅读:424来源:国知局
专利名称:基于kvm虚拟化平台的虚拟机在线杀毒系统的制作方法
技术领域
本发明涉及计算机技术领域,尤其是涉及一种基于KVM虚拟化平台的虚拟机在线杀毒系统。
背景技术
随着因特网的发展,越来越多的大型企业或者实验室趋向于使用虚拟化架构来节约服务器成本或提高应用灵活性。虚拟化的实质就是利用众多的虚拟机来代替原来的物理机进行各项工作。图1表明了虚拟化的基本结构,其中最下面一层X86 Architecture(x86 结构)为物理机的硬件设备,包括重要处理器(CPU)、内存(Memory)、网络适配器(NIC)、硬盘(Disk)等设备,第二层为虚拟化层(Virtualization Layer),负责对物理机上的物理设备进行虚拟化,以便各虚拟机进行使用,各虚拟机中包括操作系统(Operating System)和应用程序(App),同时专门有一台虚拟机作为服务控制台(Service Console)。传统计算机的使用,每个用户都有自己的一套硬件设备,包括显示器、内存、硬盘、CPU、网卡等,而在虚拟化平台下,每个用户不再需要拥有整套设备,只需一个终端显示设备即可。虚拟机运行在虚拟机服务器上,由服务器分发给要使用虚拟机的用户。图2表明用虚拟机(VM)代替物理机的工作方式,服务器上设置多个虚拟机,企业内部的客户端A、B、C可以直接连接服务器使用虚拟机,企业外部的客户端D、E也可以通过防火墙后连接到服务器使用虚拟机。虚拟化在各种应用中,包括有服务器虚拟化、桌面虚拟化,以及当下最流行的云计算等各种应用中担当着举足轻重的地位。面对这些应用,数据中心少则部署几台虚拟机,多则几十上百台。虚拟机可以完成物理机能进行的各种工作,在虚拟机中可以进行各种网络通信, 所以虚拟机和物理主机一样,面临着各种各样的安全威胁,对虚拟机进行安全维护特别是
病毒查杀有着重要的意义。传统的虚拟机杀毒工作方式中,需要用户在每个虚拟机里面都安装杀毒软件, 在开机时单独对各个虚拟机进行病毒查杀,如图3所示,在图3所示的虚拟化基本结构下,需要在每个虚拟机(VM)安装安全杀毒软件(Antivirus),然后由虚拟机的操作系统 (Operating System)调用杀毒软件。但是,这种反病毒框架不能有效利用虚拟化的优势, 直接部署到虚拟化平台下效率较低,不能实现对虚拟机的集中管理,会导致人力和计算资源的浪费,与此同时,传统反病毒软件自身的安全性已经受到严重威胁。如在Windows系统中,使用Rootkit等先进技术的病毒能在内核空间中,与反病毒软件“平等”竞争系统控制权。传统的方法只能控制病毒进入内核的已知通道,难以可靠地防止病毒进入系统内核破坏杀毒软件。随着虚拟化和云计算技术的广泛推进,国内外对于虚拟化平台上安全系统的研究也呈现多元化、专业化的趋势。在虚拟机进程管理方面,中国科技大学的张纪胜等人实现了在VMM (Virtual Machine Monitor,虚拟机监视器)下客户机(Guest)操作系统进程级的管理工具,大大提高了管理性能。在虚拟机安全检测方面,Xuxian Jiang等人实现了基于VMM的Rootkit检测,复旦大学的杜海等人实现了基于完全虚拟化技术的可疑进程与可疑模块的检测。在商业应用方面,趋势科技新推出了 Deep Security安全系统,实现了 VMWare平台上“客户机不安装任何辅助软件”的透视防护(仍然要安装特殊驱动程序),一定程度上代表了服务器安全领域的发展方向。

发明内容
针对传统的虚拟机杀毒工作方式效率低下的问题以及现有反病毒软件自身的安全性缺陷,提供一种基于KVM虚拟化平台的虚拟机在线杀毒系统。本发明的技术方案为一种基于KVM虚拟化平台的虚拟机在线杀毒系统,所述KVM 虚拟化平台包括服务器上的KVM内核模块和多个虚拟机,设置安全内核模块、安全控制模块和网络模块,
在KVM内核模块中添加读取内存的函数,并提供安全内核模块注册钩子的接口 ; 安全内核模块设置于服务器中,用于通过接口在KVM内核模块中注册钩子,向安全控制模块发出扫描命令,接受安全控制模块所得扫描查毒结果,暂停可疑进程,对可疑进程进行相应处理;所述钩子通过执行钩子回调函数实现操作,包括获取当前进程在虚拟机内存中的地址,根据所获地址通过KVM内核模块中读取内存的函数获得虚拟机的进程信息,根据进程信息将虚拟机的进程的可执行代码由虚拟机内存映射到安全控制模块的内存;
安全控制模块设置于服务器中,用于接受安全内核模块发出的扫描命令,调用杀毒引擎对安全控制模块的内存中所有虚拟机的进程的可执行代码进行扫描查毒,并将结果报告给安全内核模块;
网络模块由服务器端网络模块和客户端网络模块构成,其中的客户端网络模块设置在管理客户端中,服务器端网络模块设置在服务器中,客户端网络模块和服务器端网络模块通过网络连接进行通信,服务器端网络模块与安全内核模块建立通信,当管理客户端远程登录服务器后,管理客户端发出的命令经客户端网络模块和服务器端网络模块发到安全内核模块,所述命令包括扫描命令。而且,安全内核模块对可疑进程执行结束进程操作的具体方式为,若可疑进程位于用户私有进程空间,则插入结束代码;若可疑进程处于用户共享DLL空间,则备份信息, 插入结束代码,在进程切换时进行还原;若可疑进程处于内核空间,则暂时不作处理。本发明提供的技术方案改进了 KVM内核模块,设置了安全内核模块、安全控制模块和网络模块;在Linux KVM虚拟化平台以及虚拟机开机状态下,实现不在客户虚拟机中安装任何杀毒软件,而是采用虚拟机透视技术,让主机中的杀毒引擎直接扫描客户虚拟机中的内存和进程,找到并清除目标系统内的病毒。


图1为虚拟化的基本结构框架。图2为用虚拟机代替物理机的工作方式。图3为用户在传统模式下进行虚拟机的杀毒维护。图4为本发明实施例的系统架构图。图5为本发明实施例中经过修改的KVM内核在处理VM Exit时的工作流程图。
具体实施例方式
本发明的基于KVM虚拟化平台是包括在一台具备支持虚拟化CPU的裸机上安装了 Linux的服务器,或由多台这样的服务器所组成的Linux服务器集群。在每个服务器上安装KVM (Kernel-based Virtual Machine,基于内核的虚拟机),加载KVM内核模块,并且在服务器上安装了数台虚拟机。KVM是Linux操作系统上的一个全虚拟化解决方案,使用KVM 可以运行多台虚拟机,在这些虚拟机上可以运行不加修改的Linux或Windows镜像。Linux 2. 6. 20版本及以上版本的内核中都自带了 KVM。杀毒引擎位于主机的安全控制模块中,虚拟机中没有安装任何辅助杀毒模块,在基于KVM虚拟化平台的多台虚拟机开机的前提下,通过对虚拟机系统资源的单向透视功能,实现对这些虚拟机中的文件进行扫描杀毒。基于KVM虚拟化平台中的虚拟机处于开机状态,即虚拟机占用服务器上物理的CPU,网卡,内存资源,并且在物理硬盘上保存着该虚拟机的配置和磁盘数据。虚拟机中不安装杀毒软件,同时不安装任何特殊驱动程序。因为在主机上安装杀毒模块,虚拟机中不安装任何杀毒模块,虚拟机中的恶意软件无法检测主机中的杀毒模块,更无法干扰杀毒操作,同时因为不需要在客户端安装任何杀毒软件,从而消除了部署多个软件客户端所产生的成本。具体实施时,本领域技术人员可采用计算机软件技术实现本发明技术方案。以下结合附图和实施例详细说明本发明技术方案。参见图4,其中,qemu进程中运行着虚拟机的实例,用户可以在PC上使用虚拟机远程控制台来登录访问虚拟机;RingO是Intel系列CPU中特权级别的一种,只有操作系统能运行在RingO特权级别;Ring3是Intel系列CPU中特权级别的一种,操作系统和应用程序能运行在Ring3特权级别。本发明实施例提供的虚拟机批量在线杀毒系统,包括服务器上的KVM内核模块和多个虚拟机,并设置安全内核模块、安全控制模块和网络模块。本发明提出在现有技术的KVM内核模块中进行改进,包括添加读取内存的函数, 并提供安全内核模块注册钩子的接口。实施例在KVM内核模块中添加一个导出函数Kvm_ register_vm_av_modu 1 e禾口一个回调函数av_handle_vm_exit,用于向KVM注册一个安全内核模块,在导出函数中定义了一个回调函数指针vm_op和回调函数感兴趣事件vm_event。 其中,回调函数原型为int av_handle_vm_exit (struct kvm_vcpu氺vcpu);回调参数为一个kvm_vcpu结构体指针vcpu,代表发生VM Exit事件的虚拟CPU。如果检测到已经注册了安全内核模块,同时对当前发生的事件感兴趣。则调用注册的回调函数。回调函数处理完成之后,KVM继续进行处理。经过以上修改的KVM在处理VM Exit的时候的工作流程如图5 所示
通过导出函数Kvm_register_vm_av_m0dule注册回调函数,当虚拟机运行过程中发生了 VM Exit事件时,CPU从非根模式切换到根模式,从虚拟机切换到KVM运行,KVM捕获该事件,依次执行回调函数1、回调函数2、回调函数3…然后执行kvm标准处理程序,最后返回VM继续执行。根操作模式,是指虚拟机监视器运行时cpu所处的模式,简称根模式。非根操作模式,是指虚拟机运行时CPU所处的模式,简称非根模式。VM Exit是指CPU从非根模式切换到根模式,从运行虚拟机切换到运行虚拟机监视器的操作。为便于理解技术方案起见,提供回调函数示例回调函数中,判断是否发生感兴趣事件,是则处理该事件,否则执行下一个回调函数。
实施例还导出了 KVM内核模块中的两个原有的函数int kvm_read_guest_virt_ system (用于读取虚拟机内存)和int kvm_write_guest_virt_system (用于写虚拟机内存),用于在安全内核模块中,读取客户机的虚拟内存。安全内核模块设置于服务器中,用于通过接口在KVM内核模块中注册钩子,向安全控制模块发出扫描命令,接受安全控制模块所得扫描查毒结果,暂停可疑进程,对可疑进程进行相应处理;所述钩子通过执行钩子回调函数实现操作,包括获取当前进程在虚拟机内存中的地址,根据所获地址通过KVM内核模块中读取内存的函数获得虚拟机的进程信息,根据进程信息将虚拟机的进程的可执行代码由虚拟机内存映射到安全控制模块的内存。实施例将获得的虚拟机的进程信息保存在为每一个虚拟机维护的结构体中。同时,使用一个结构体保存客户机中所有的活跃进程。安全控制模块设置于服务器中,用于接受安全内核模块发出的扫描命令,调用杀毒引擎对安全控制模块的内存中所有虚拟机的进程的可执行代码进行扫描查毒,并将结果报告给安全内核模块。实施例采用现有的clamav杀毒引擎。具体实施时,也可以采用其他现有杀毒引擎。网络模块由服务器端网络模块和客户端网络模块构成,其中的客户端网络模块设置在管理客户端中,服务器端网络模块设置在服务器中,客户端网络模块和服务器端网络模块通过网络连接进行通信,服务器端网络模块与安全内核模块建立通信,当管理客户端远程登录服务器后,管理客户端发出的命令经客户端网络模块和服务器端网络模块发到安全内核模块,所述命令包括扫描命令。服务器端网络模块和客户端网络模块构成C/S架构 (客户机和服务器结构),实施例中服务器端网络模块与安全内核模块进行使用netlink套接字进行通信。Netlink套接字是Linux操作系统中用以实现用户进程与内核进程通信的一种特殊的进程间通信,也是网络应用程序与内核通信的最常用的接口。具体实施时,管理客户端可以采用普通终端实现,例如个人计算机。用户可以通过管理客户端远程登录Linux服务器或者Linux服务器集群,利用虚拟化环境下提供的应用编程接口中远程登录函数实现与服务器指定端口的连接,完成用户名和口令的验证,取得对虚拟机服务器的操作权。用户通过管理客户端发送的扫描命令经客户端网络模块和服务器端网络模块发到安全内核模块,安全内核模块再发送扫描命令给安全控制模块,从而启动杀毒引擎。由于网络模块支持用户交互,本发明提出利用网络模块将向用户提供杀毒结果,并且根据用户操作处理可疑进程。考虑到用户不一定会实时监控起见,实施例提出,安全内核模块暂停可疑进程后, 将安全控制模块所得扫描查毒结果通过服务器端网络模块和客户端网络模块发往管理客户端,计时等待用户通过管理客户端发出的命令,对于用户终止命令,执行结束进程操作; 对于响应超时,执行结束进程操作;对于用户信任命令,执行放行操作。本发明进一步提供可具体结束进程操作的设计
若可疑进程位于用户私有进程空间,则插入结束代码。用户进程使用自己的地址空间, 其中只能由进程自己访问的地址空间就是用户进程的私有空间,如可疑进程位于这样的地址空间,则直接插入结束代码将进程结束。若可疑进程处于用户共享DLL空间,则备份信息,插入结束代码,在进程切换时进行还原。DLL (Dynamic Link Library,动态链接库)是一个包含可由多个程序同时使用的代码和数据的库。一些DLL是可以由多个用户进程共同使用的,这种DLL的物理内存空间会映射到不同的用户地址空间,这个内存空间就是用户共享DLL空间。若可疑进程处于内核空间,则暂时不作处理。内核空间是操作系统代码运行的地址空间,这个地址空间只有系统才能访问,普通的用户进程是不能访问的。对于出现在这样地址空间中的可疑进程,暂时不进行查杀。本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
权利要求
1.一种基于KVM虚拟化平台的虚拟机在线杀毒系统,所述KVM虚拟化平台包括服务器上的KVM内核模块和多个虚拟机,其特征在于设置安全内核模块、安全控制模块和网络模块,在KVM内核模块中添加读取内存的函数,并提供安全内核模块注册钩子的接口 ;安全内核模块设置于服务器中,用于通过接口在KVM内核模块中注册钩子,向安全控制模块发出扫描命令,接受安全控制模块所得扫描查毒结果,暂停可疑进程,对可疑进程进行相应处理;所述钩子通过执行钩子回调函数实现操作,包括获取当前进程在虚拟机内存中的地址,根据所获地址通过KVM内核模块中读取内存的函数获得虚拟机的进程信息,根据进程信息将虚拟机的进程的可执行代码由虚拟机内存映射到安全控制模块的内存;安全控制模块设置于服务器中,用于接受安全内核模块发出的扫描命令,调用杀毒引擎对安全控制模块的内存中所有虚拟机的进程的可执行代码进行扫描查毒,并将结果报告给安全内核模块;网络模块由服务器端网络模块和客户端网络模块构成,其中的客户端网络模块设置在管理客户端中,服务器端网络模块设置在服务器中,客户端网络模块和服务器端网络模块通过网络连接进行通信,服务器端网络模块与安全内核模块建立通信,当管理客户端远程登录服务器后,管理客户端发出的命令经客户端网络模块和服务器端网络模块发到安全内核模块,所述命令包括扫描命令。
2.根据权利要求1所述基于KVM虚拟化平台的虚拟机在线杀毒系统,其特征在于安全内核模块暂停可疑进程后,将安全控制模块所得扫描查毒结果通过服务器端网络模块和客户端网络模块发往管理客户端,计时等待用户通过管理客户端发出的命令,对于用户终止命令,执行结束进程操作;对于响应超时,执行结束进程操作;对于用户信任命令,执行放行操作。
3.根据权利要求2所述基于KVM虚拟化平台的虚拟机在线杀毒系统,其特征在于安全内核模块对可疑进程执行结束进程操作的具体方式为,若可疑进程位于用户私有进程空间,则插入结束代码;若可疑进程处于用户共享DLL空间,则备份信息,插入结束代码,在进程切换时进行还原;若可疑进程处于内核空间,则暂时不作处理。
全文摘要
本发明涉及计算机技术领域,提出一种基于KVM虚拟化平台的虚拟机在线杀毒系统。设置安全内核模块、安全控制模块和网络模块,在KVM内核模块中添加读取内存的函数,并提供安全内核模块注册钩子的接口;安全内核模块用于在KVM内核模块中注册钩子,向安全控制模块发出扫描命令,接受安全控制模块所得扫描查毒结果,暂停可疑进程,对可疑进程进行相应处理;安全控制模块调用杀毒引擎对安全控制模块的内存中所有虚拟机的进程进行扫描查毒,并将结果报告给安全内核模块;网络模块由服务器端网络模块和客户端网络模块构成。
文档编号H04L29/06GK102523215SQ20111042034
公开日2012年6月27日 申请日期2011年12月15日 优先权日2011年12月15日
发明者崔竞松, 李伟, 李华, 林翃翔, 郭迟, 陈式敏, 陈立娜 申请人:北京海云捷迅科技有限公司, 武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1