一种基于kvm的虚拟机文件强制访问控制方法及系统的制作方法

文档序号:8473240阅读:474来源:国知局
一种基于kvm的虚拟机文件强制访问控制方法及系统的制作方法
【技术领域】
[0001]本发明属于云计算和信息安全技术领域,更具体地,涉及一种基于KVM的虚拟机文件强制访问控制方法及系统。
【背景技术】
[0002]基于内核的虚拟机(Kernel-based Virtual Machine,以下简称KVM),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个虚拟机管理器。KVM自Linux 2.6.20之后集成在Linux的各个主要发行版本中,使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。
[0003]KVM是基于X86架构,支持硬件虚拟化(Intel VT或AMD-V)的Linux全虚拟解决方案,包括一个为处理器提供底层虚拟化可加载的核心模块和一个经过修改的Qemu软件作为虚拟机上层控制和界面。KVM支持全虚拟化技术,即在不改变操作系统镜像的情况下运行多个虚拟机,并为每个虚拟机配置个性化硬件环境。
[0004]由于KVM作为Linux的一个内核模块存在,因此对其修改和部署不需要重新编译内核,也不需要对当前内核做任何修改,只是几个可以动态加载的驱动模块。KVM结构更加精简、代码量更小,所以出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。鉴于以上优点,KVM作为一种全虚拟化技术已经获得了广泛的支持。
[0005]传统KVM虚拟机的文件访问控制只能基于操作系统实现,例如SELinux等技术,通过操作系统自身来限制文件访问行为。这种方法有时限于操作系统自身的漏洞而易于被攻击者攻击,达不到文件强制访问控制的目的。

【发明内容】

[0006]针对现有技术的以上缺陷或改进需求,本发明提供一种基于KVM的虚拟机文件强制访问控制方法及系统,采用KVM自省的方式监控虚拟机的系统调用,并通过语义解析的方法来还原虚拟机中的文件访问。本发明包括系统调用截获、语义解析和策略分析三个部分。系统调用截获是指当虚拟机内部发生系统调用时,发生VMEXIT (即虚拟机退出),陷入KVM中;语义解析是指当虚拟机陷入KVM后,通过虚拟处理器(VCPU)中的寄存器信息还原出虚拟机陷入前的状态信息;策略分析根据虚拟机陷入前的信息与系统调用信息来确定是否对文件进行强制访问控制。本发明整个过程对虚拟机完全透明,这样保证即使虚拟机内部操作系统遭受漏洞攻击,也能过通过本发明获取文件访问信息,实施对文件的强制访问控制。
[0007]为实现上述目的,根据本发明的一个方面,提供一种基于KVM的虚拟机文件强制访问控制方法,包括以下步骤:
[0008]步骤I在前端指定文件访问控制策略;
[0009]步骤2将虚拟处理器中特殊模块寄存器的值保存,并设置其值为O ;
[0010]步骤3当虚拟机发生系统调用时,在所述虚拟处理器中设置的所述特殊模块寄存器的值被加载到CS寄存器中,系统调用号被压入EAX寄存器中,所述虚拟机切入内核态;[0011 ] 步骤4CPU根据代码段为O的地址寻址,产生一般保护错误,发生虚拟机退出,虚拟机陷入KVM ;
[0012]步骤5为所述KVM添加处理所述一般保护错误的代码,分析出错原因,如果出错原因是由于设定CS寄存器值为O引起的,则执行步骤6 ;否则,将原先保存的所述特殊模块寄存器的值写入所述CS寄存器,执行虚拟机进入,恢复虚拟机执行;
[0013]步骤6屏蔽所述虚拟处理器中保存的堆栈段寄存器ESP字段的低13位得到thread_info结构体的地址;
[0014]步骤7根据所述thread_info结构体的地址读取task_struct结构体的地址,以获取进程控制块的信息;
[0015]步骤8重构所述进程控制块内存,获得文件系统信息,遍历进程文件目录,获取进程打开所有文件的绝对路径;
[0016]步骤9获取所述虚拟处理器中的EAX字段的值,该值对应虚拟机所发生系统调用的系统调用号,如果该值为3或4,则读取虚拟机中发生系统调用的文件描述符,转入执行步骤10,否则将原先保存的所述特殊模块寄存器的值写入所述CS寄存器,执行虚拟机进入,恢复虚拟机执行;
[0017]步骤10根据所述文件描述符获取发生读写文件的绝对路径及对文件的读写模式,对比所述文件访问控制策略,如果所述文件访问控制策略允许该文件操作,则将原先保存的所述特殊模块寄存器的值写入所述CS寄存器,执行虚拟机进入,恢复虚拟机执行,否则转入执行步骤11;
[0018]步骤11执行文件强制访问控制,恢复虚拟机系统调用堆栈,并执行虚拟机进入,系统调用被禁止执行。
[0019]为实现上述目的,根据本发明的另一方面,提供一种基于KVM的虚拟机文件强制访问控制系统,包括系统调用截获模块,语义解析模块和策略分析模块,其中,所述系统调用截获模块用于当虚拟机内部发生系统调用时,发生虚拟机退出,陷入KVM中;所述语义解析模块用于当虚拟机陷入KVM后,通过虚拟处理器中的寄存器信息还原出虚拟机陷入前的状态信息;所述策略分析模块用于根据虚拟机陷入前的状态信息与用户自定义策略对比决定是否对文件进行访问控制。
[0020]总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
[0021 ] 1、普通访问控制方法需要对每台虚拟机进行单独设置,一旦访问控制策略发生变化,需要对每台虚拟机进行修改。在本发明中,云管理员只需要制定对文件的访问控制策略,即可实现对一个节点的多台虚拟机进行批量化定制;
[0022]2、本发明在KVM中截获虚拟机中发生的系统调用,并通过语义解析还原虚拟机中的系统调用信息来实现文件的强制访问控制。整个访问控制过程对虚拟机透明,相比于普通访问控制方法,可以防止发生由于虚拟机操作系统漏洞或用户操作不当而导致的强制访问控制失败。
【附图说明】
[0023]图1为本发明虚拟机系统调用截获的原理示意图;
[0024]图2为本发明KVM虚拟机文件强制访问系统结构图;
[0025]图3为本发明KVM虚拟机文件强制访问方法的流程图。
【具体实施方式】
[0026]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0027]图1所示为本发明虚拟机系统调用截获的原理示意图。应用程序本质上是一系列的系统调用的集合。当应用程序执行系统调用时(现代操作系统一般采用快速系统调用方式),将特殊模块寄存器SYSENTER_CS_MSR的值装入CS寄存器中,由于在KVM初始化虚拟机的过程中,将特殊模块寄存器SYSENTER_CS_MSR的值设置为0,所以此时CS寄存器的值为O。CPU寻址CS:IP即代码段为O的地址会发生一般保护错误(#GP),虚拟机陷入KVM,实现对系统调用的截获。当完成对系统调用的语义解析后,重新进入虚拟机,继续执行应用程序。
[0028]图2所示为本发明KVM虚拟机文件强制访问系统结构图,主要包括系统调用截获模块,语义解析模块和策略分析模块。系统调用截获模块用于当虚拟机内部发生系统调用时,发生VMEXIT,陷入KVM中;语义解析模块用于当虚拟机陷入KVM后,通过VCPU中的寄存器信息还原出虚拟机陷入前的状态信息;策略分析模块根据虚拟机陷入前的状态信息与用户自定义策略对比决定是否对文件进行访问控制。本发明具有两种模式:普通模式和访问控制模式。普通模式下,不对系统调用截获和语义解析,不进行文件访问控制;访问控制模式下,截获发生的系统调用并进行语义解析,并对文件进行访问控制。
[0029]图3所示为本发明KVM虚拟机文件强制访问方法的流程图,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1