一种基于系统虚拟化技术的进程安全隔离方法

文档序号:6536641阅读:127来源:国知局
一种基于系统虚拟化技术的进程安全隔离方法【专利摘要】本发明公开了一种基于系统虚拟化技术的进程安全隔离方法,属于云计算中的信息安全领域。其包括如下步骤:加载被隔离进程,获取进程运行环境信息;创建进程虚拟机,创建上述进程环境,并设置虚拟机进入、退出机制;在虚拟机内存中写入进程引导程序,等待被引导进程的植入;将被隔离进程移植到虚拟机内部,并引导其正常运行。本发明优点在于:简化传统虚拟机,摒弃操作系统而将进程直接运行于虚拟机中,节省系统开销;虚拟机进入与退出机制保证进程访问系统资源所涉及的系统调用必须受到宿主机的控制,防止进程对系统资源的非法访问;只针对可疑进程进行隔离措施,有效阻止进程间非法通信,适用于高安全性需求的系统。【专利说明】一种基于系统虚拟化技术的进程安全隔离方法【
技术领域
】[0001]本发明涉及虚拟化【
技术领域
】,尤其涉及一种基于系统虚拟化技术的进程安全隔离方法。【
背景技术
】[0002]随着云计算概念的普及,作为其核心的虚拟化技术也受到前所未有的关注。虚拟化技术不仅可降低IT成本,还能增强系统的安全性和可靠性,因而其在商业应用上的优势得以充分体现。[0003]虚拟化技术的应用最早出现在IBM大型机系统上,其通过一种称为虚拟机监控器(VirtualMachineMonitor,VMM)的程序,在物理硬件上虚拟出多个完备的,可以独立运行操作系统软件的虚拟机(VirtualMachine)系统实例。[0004]VMM是实现虚拟机的关键,其通常具有三个特性:等价性,即除开时序、资源可用性,受控程序其他行为应与未受控情况无差异,并且可以自由执行预先编写的特权指令;效率性,即VMM不参与执行客户机绝大多数指令,其必须由宿主机硬件直接执行;资源控制,VMM具有ringO级权限,可管理所有系统资源。[0005]现今的虚拟化技术通常可分为三个大类,分别是:平台虚拟化(PlatformVirtualization)、资源虚拟化(ResourceVirtualization)、应用程序虚拟化(ApplicationVirtualization)。通常所说的虚拟化主要指的是平台虚拟化,其通过控制程序(VirtualMachineMonitor或Hypervisor)对计算机和操作系统进行虚拟化,隐藏其真实物理特性,为用户模拟一个统一、抽象的计算环境——虚拟机。[0006]平台虚拟化通常可分为如下几类:完全虚拟化(FullVirtualization)、超虚拟化(Paravirtualization)、硬件辅助虚拟化(Hardware-AssistedVirtualization)、部分虚拟化(PartialVirtualization)和操作系统级虚拟化(OperatingSystemLevelVirtualization)。全虚拟化是对真实物理机最彻底,最完整的模拟,包括其各种底层硬件,如:处理器、物理内存、各种外设、时钟等等。通过此种虚拟化方式,操作系统或其他系统软件可以不做任何修改无差别的运行在虚拟机中;超虚拟化的实现必须建立在对客户机代码的修改之上,操作虽不便,但客户机可以通过此种方式与VMM直接进行交互。VMM支持Hypercall龚客户机直接调用,以此来替代部分硬件接口;硬件辅助虚拟化必须有硬件的支持,现今流行的是Intel-VT技术和AMD-V技术,通过硬件辅助,客户机可直接运行于系统的最高级别,VMM和客户机在运行环境上自动隔离开。[0007]基于虚拟化各种优越性,其被广泛应用于各个领域,最常用的虚拟化技术应该是普通操作系统都支持的虚拟内存技术,其通过内存映射使应用程序以为自己拥有连续的可用内存;云计算通过服务器虚拟化技术,把多机多系统的计算节点组成群组,统一通过一个入口向外提供服务,使用户感觉其享受的服务来自于一台专用的计算机。在系统安全方面,研究人员利用系统虚拟化技术将安全敏感程序或是可疑进程置于安全的隔离执行环境中,以此不仅能得到更小的可验证的计算基,而且可将不同的应用程序和操作系统隔离开来,防止它们之间发生干扰和破坏,从而能够获得程序和系统在虚拟机抽象底层真实有效的执行状态和运行信息。【
发明内容】[0008]针对以上现有技术中的不足,本发明的目的在于提供一种能够阻止进程间的非法通信,即使进程取得超级用户权限,也无法对宿主机进行违法操作,最大限度的提高系统的安全性能的基于系统虚拟化技术的进程安全隔离方法,本发明的技术方案如下:一种基于系统虚拟化技术的进程安全隔离方法,其包括以下步骤:[0009]获取LINUX平台下的待隔尚进程,米用Iinux命令行终端将L-QEMU和待隔尚进程引入内核进行装载,当待隔离进程完成内核装载并返回至用户空间时,L-QEMU替换LINUX默认的动态链接库解释器,获得程序控制权,在控制权移交给待隔离进程本身时,L-QEMU暂停进程,收集进程运行环境信息;[0010]102、在LINUX平台下创建KVM(Kernel-basedVirtualMachine)进程虚拟机,其中,KVM进程虚拟机主要包括虚拟机VM和虚拟CPU,在KVM进程虚拟机中布置步骤101中的进程运行环境,并设置KVM进程虚拟机的进入机制和退出机制;[0011]103、将进程引导程序写入到步骤102中建立的KVM进程虚拟机内存段;[0012]104、将步骤101中待隔离进程移植进入KVM进程虚拟机内,并利用步骤103中的进程引导程序将寄存器CS:1P的值设置为被隔离程序地址,使CPU执行被隔离程序,进而引导该进程在KVM进程虚拟机内正常运行。[0013]进一步的,步骤101中的L-QEMU用于装载待隔离程序所需要的动态连接库、创建KVM进程虚拟机、设置进程运行环境、写入进程弓I导程序及进程移植控制。[0014]进一步的,步骤101中的进程运行环境信息包括标志寄存器位、虚拟地址空间、物理地址空间和内存映射关系。[0015]进一步的,步骤102中的KVM进程虚拟机取消硬盘和其他外设的创建,所述KVM进程虚拟机不安装操作系统,使被移植进虚拟机内的进程可直接运行于裸机之上。[0016]进一步的,步骤101中的动态连接库解释器为ld-linux.s0.2,通过ELF二进制文件分析命令readelf获得。[0017]进一步的,步骤102中的虚拟机退出机制是通过修改ELFAuxiliaryVector中指针函数所指地址,发生系统调用时,虚拟机执行人为设置的代码,从而发生虚拟机退出事件。[0018]进一步的,步骤104中的待隔离进程移植进入KVM进程虚拟机内的步骤包括:[0019]Al:确定进程移植时机,移植时需保证进程运行在用户态,而不在内核态;[0020]A2:利用进程页表目录的基址,对被移植进程进行精确定位;[0021]A3:L-QEMU移植进程,进入虚拟机。[0022]本发明的优点及有益效果如下:[0023]本发明方法简化传统虚拟机,摒弃操作系统而将进程直接运行于虚拟机中,节省系统开销;虚拟机进入与退出机制保证进程访问系统资源所涉及的系统调用必须受到宿主机的控制,防止进程对系统资源的非法访问;只针对可疑进程进行隔离措施,有效阻止进程间非法通信,适用于高安全性需求的系统。【专利附图】【附图说明】[0024]图1是本发明一优选实施例进程安全隔离框架图;[0025]图2是进程移植图;[0026]图3是KVM框架图;[0027]图4是VM创建流程图;[0028]图5是vCPU创建流程图。【具体实施方式】[0029]下面结合附图给出一个非限定性的实施例对本发明作进一步的阐述。[0030]本发明提供一种基于系统虚拟化技术的进程安全隔离方法,整个方法的实现效果如图1所示。其包括如下步骤:[0031]第一步:L-QEMU装载被隔离程序时替换动态连接库解释器,并暂停进程,收集进程运行环境信息。[0032]在本实施方案中,隔离的首要关键点是在L-QEMU的作用下,使被隔离程序正常运行起来,内核在完成程序底层加载后,将控制权交于动态连接库解释器,解释器加载被隔离程序所需要的动态连接库。再者,运行程序时需将L-QEMU置于被隔离程序前面,通过此种方式,L-QEMU才可替代程序默认的ld-linux.s0.2解释器,得到控制权。程序具体加载过程涉及到内核空间和用户空间。内核首先根据ELF映像头部信息将目标映像装入当前进程用户空间的某个位置,之后,判断目标映像是否需要使用动态连接共享库,如果需要,则还要根据映像头部所提供的信息,将所需的“解释器”的映像也映射到用户空间的某个位置上,最后从系统调用返回到用户空间解释器的入口。[0033]在本实施方案中,所述程序装载包括如下具体步骤:[0034]Al:execv()或execve()调用系统调用do_execve(),打开目标映像文件,读取文件头部彳目息;[0035]A2:do_execve()调用search_binary_handler(),搜索Linux支持的可执行文件类型队列;[0036]A3:类型匹配成功,调用load_binary函数指针指向的对应目标映像文件对应的处理函数load_elf_binary();[0037]A4:load_elf_binary()调用load_elf_interp(),装入动态链接库解释器映像,设置l0ad_elf_interp()返回值为返回用户空间的入口地址,即解释器的入口地址。[0038]A5:在load_elf_binary()调用creat_elf_tables为目标映像和解释器准备被相关信息,复制到用户空间。[0039]A6:返回用户空间,移交控制权给解释器。[0040]第二步:L-QEMU创建KVM进程虚拟机,创建步骤A中进程运行环境,并设置虚拟机进入、退出机制。在本实施方式中,虚拟机的创建包括VM和vCPU的创建,如图4、图5所示。具体创建步骤包括:[0041]B1:内核加载KVM模块,进入KVM初始化模块;[0042]B2:根据平台特性调用modulejnitO对特定的特定模块进行初始化,然后调用kvm_init初始化通用模块;[0043]B3=L-QEMU首先打开/dev/kvm文件并且获得文件描述符fd;[0044]B4:利用系统调用ioctl写入KVM_CREATE_KVM指令,调用kvm_dev_ioctl_create_vm创建VM虚拟机,获得文件描述符vm_fd;[0045]B5:通过vm_fd描述符创建vCPU,获得vCPU的描述符,并初始化vCPU。[0046]在本发明的一种优选实施方式中,所述进程虚拟机是基于传统虚拟机简化而来,移除不需要的硬盘和其他外设,另一方面,介于操作系统本质上也是一个程序,该进程虚拟机摒弃操作系统,使被移植进虚拟机内的进程可直接运行于裸机之上,因此,虚拟机只需要提供一个普通进程运行所需要的运行环境即可,不仅简化虚拟机的创建过程,而且最大限度的节省系统资源。[0047]在本发明的一种优选实施方式中,所述虚拟机退出和进入机制需保证所有系统资源访问、文件读写涉及到的系统调用都必须产生虚拟机退出事件,而现今系统实现系统调用步骤包括:内核加载时,动态加载一个so文件到物理页;映射此物理也到用户空间;将函数根据其类型设置到ELFAuxiliaryVector中;glibc通过ELFAuxiliaryVector取得对应系统的调用函数实现系统调用。本发明中为实现对现有VM-Exit和VM-Entry的改进,在现有的Linux系统调用机制基础上,修改ELFAuxiliaryVector中指针函数所指地址,致使发生系统调用时,虚拟机执行人为设置的代码,从而发生虚拟机退出事件,以便L-QEMU截获进程的系统调用请求,通过分析判断后,L-QEMU将执行结果返回给进程。[0048]在本实施方式中,所述KVM是Linux内核的一个模块,具有很好的移植性,其特点在于和Linux内核结合的非常好,因此,KVM继承了Linux大部分功能。在结构上,KVM采用的是基于IntelVT技术的硬件虚拟化,结合上层QEMU来提供设备虚拟化。IntelVT技术是KVM模块正常运行的关键,其中,VT-x引入了两种操作模式:跟操作模式和非根操作模式,二者统称为VMX操作模式。[0049]根操作模式(VMXRootOperation)简称根模式,是VMM运行时所处的模式,在此模式下,所有的指令行为和传统IA32—样,因此,原系统中的软件都可以正常运行;非根操作模式(VMXNon-RootOperation)简称为非根模式,在此模式下,所有敏感指令的行为都被重新定义,使得它们能不经过虚拟化就直接运行或者通过“陷入再模拟”的方式来处理。[0050]在非根模式下,敏感指令所引起的“陷入”称为VM-Exit,与其对应的是VM-Entry,其由VMM发起。当VM-Exit出现时,CPU自动从非根模式切换到根模式下,而VM-Entry的产生通常是因为VMM调度某个客户机运行时,CPU由根模式切换成非根模式。[0051]第三步:L-QEMU将进程引导程序写入虚拟机内存,退出虚拟机,等待被引导进程的植入。在本实施方案中,将步骤101中待隔离进程移植进入KVM进程虚拟机内,并利用步骤103中的进程引导程序将寄存器CS:1P的值设置为被隔离程序地址,使CPU执行被隔离程序,进而引导该进程在KVM进程虚拟机内正常运行。写入引导程序的步骤包括:[0052]Cl=L-QEMU创建完虚拟机,并通过退出机制退出虚拟机,保存其运行状态;[0053]C2:L-QEMU定位虚拟机内存段0x07C00_0x07DFF;[0054]C3=L-QEMU将引导程序写入上述内存段。[0055]上述步骤C2中,所述内存段0x07C00-0x07DFF存在于vCPU加电时的IM内存中,BIOS将此内存其分成7段内存,分别存放中断向量表、BIOS数据、引导程序等数。据系统会从该内存段调用弓I导程序,弓I导程序正常运行。[0056]第四步:L_QEMU将被隔离进程移植到虚拟机内部,利用步骤C中引导程序弓丨导被移植进程正常运行。在本实施方式中,进程移植步骤包括:[0057]Dl:确定进程移植时机,移植时需保证进程运行在用户态,而不在内核态;[0058]D2:利用进程页表目录的基址,对被移植进程进行精确定位;[0059]D3:L-QEMU移植进程,进入虚拟机。[0060]在本实施方式中,进程移植首先要考虑的问题是移植的时机,最佳的移植时机能够避免破坏系统的连续性和安全性,从而保证被移植进程和操作系统的正常运行。由于加载被移植程序是从用户态到内核态,再到用户态的过程,为保证程序加载完毕,兼顾系统和程序的有效运行,进程的移植需等到进程进入用户态时,即当控制权移交给L-QEMU时,才执行进程移植命令。在执行命令之前,VMM必须叫停虚拟机,即产生一个VMExit退出事件,并保存退出时的虚拟机状态。[0061]确定进程移植时间后,需要获得进程移植内容,本发明中进程移植是在内核加载完毕,返回用户时进行,相比于动态进程移植,时间上更早,因此,不需要将用户级指令可访问的代码和数据同时转移,只需要转移进程相关的执行环境(如寄存器值)和内存页帧。[0062]图2描述了进程移植过程,在此过程中,首先利用Linux进程管理机制,暂停运行的进程,并锁死进程页表,保持与虚拟机中环境同步;L-QEMU通过进程描述结构task_struct得到进程相关信息,并从CPU运行状态得知寄存器值,然后根据进程虚拟地址空间的到进程物理页帧;L-QEMU将进程物理页帧转化为虚拟机中的客户物理页帧,VMM在本地缓冲区中存入进程信息,随后调用injectjrqO函数,通过虚拟终端请求的方式返回虚拟机;[0063]以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明方法权利要求所限定的范围。【权利要求】1.一种基于系统虚拟化技术的进程安全隔离方法,其特征在于包括以下步骤:101、获取LINUX平台下的待隔离进程,采用LINUX命令行终端将L-QEMU和待隔离进程引入内核进行装载,当待隔离进程完成内核装载并返回至用户空间时,L-QEMU替换LINUX默认的动态链接库解释器,获得程序控制权,在控制权移交给待隔离进程本身时,L-QEMU暂停进程,收集进程运行环境信息;102、在LINUX平台下创建KVM进程虚拟机,其中,KVM进程虚拟机主要包括虚拟机VM和虚拟CPU,在KVM进程虚拟机中布置步骤101中的进程运行环境,并设置KVM进程虚拟机的进入机制和退出机制;103、将进程引导程序写入到步骤102中建立的KVM进程虚拟机内存段;104、将步骤101中待隔离进程移植进入KVM进程虚拟机内,并利用步骤103中的进程引导程序将寄存器CS:1P的值设置为被隔离程序地址,使CPU执行被隔离程序,进而引导该进程在KVM进程虚拟机内正常运行。2.根据权利要求1所述的基于系统虚拟化技术的进程安全隔离方法,其特征在于:步骤101中的L-QEMU用于装载待隔离程序所需要的动态连接库、创建KVM进程虚拟机、设置进程运行环境、写入进程弓I导程序及进程移植控制。3.根据权利要求1所述的基于系统虚拟化技术的进程安全隔离方法,其特征在于:步骤101中的进程运行环境信息包括标志寄存器位、虚拟地址空间、物理地址空间和内存映身寸关系。4.根据权利要求1所述的基于系统虚拟化技术的进程安全隔离方法,其特征在于:步骤102中的KVM进程虚拟机取消硬盘和其他外设的创建,所述KVM进程虚拟机不安装操作系统,使被移植进虚拟机内的进程可直接运行于裸机之上。5.根据权利要求1所述的基于系统虚拟化技术的进程安全隔离方法,其特征在于:步骤101中的动态连接库解释器为ld-linux.s0.2,通过ELF二进制文件分析命令readelf获得。6.根据权利要求1所述的基于系统虚拟化技术的进程安全隔离方法,其特征在于:步骤102中的虚拟机退出机制是通过修改ELFAuxiliaryVector中指针函数所指地址,发生系统调用时,虚拟机执行人为设置的代码,从而发生虚拟机退出事件。7.根据权利要求1所述的基于系统虚拟化技术的进程安全隔离方法,其特征在于:步骤104中的待隔离进程移植进入KVM进程虚拟机内的步骤包括:Al:确定进程移植时机,移植时需保证进程运行在用户态,而不在内核态;A2:利用进程页表目录的基址,对被移植进程进行精确定位;A3=L-QEMU移植进程,进入虚拟机。【文档编号】G06F21/53GK103778368SQ201410032134【公开日】2014年5月7日申请日期:2014年1月23日优先权日:2014年1月23日【发明者】刘宴兵,袁仲,董涛,蹇怡,龚波,张海军,肖云鹏,徐光侠,李娜申请人:重庆邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1