xen与kvm虚拟技术安全探究
2015-03-25广西现代职业技术学院
广西现代职业技术学院 秦 鹏
虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,使用户可以比原本的组态更好的方式来应用这些资源。虚拟化技术是云技术中极为重要的关键技术之一,在资源的有效利用、动态调配方面有巨大优势。随着云技术的不断发展,虚拟化技术的应用更为广泛,其潜在的安全风险日益受到关注。目前的主流虚拟化技术有Xen、KVM、VMware、Hyper V等,本文将对Xen和KVM两种典型的虚拟化技术进行分析对比,对技术上存在的安全风险和应对措施进行探讨[1]。
1 虚拟化技术
按虚拟对象划分,虚拟化技术可分为软件虚拟化和硬件虚拟化。软件虚拟化是指用纯软件的方法在现有的物理平台上实现对物理平台访问的截获和模拟。硬件虚拟化指物理平台本身提供了对特殊指令的截获和重定向的硬件支持,甚至新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,从而提升性能。
按虚拟化程度划分,虚拟化技术又可分为半虚拟化和全虚拟化。全虚拟化(Full virtualization),也称为原始虚拟化技术, 全虚拟化则为虚拟机提供了完整的虚拟计算平台(例如X86),包括处理器、内存和外设,支持运行任何理论上可在真实物理平台上运行的操作系统,为虚拟机的配置提供了最大程度的灵活性。KVM是典型的全虚拟化技术。半虚拟化(Paravirtualization)是一种类似于全虚拟化的热门技术。它使用Hypervisor(虚拟机管理程序)分享存取底层的硬件,但是它的客户操作系统集成了虚拟化方面的代码。该方法无需重新编译或引起陷阱, 因为操作系统自身能够与虚拟进程进行很好的协作[2]。Xen是典型的半虚拟化技术。
2 Xen与KVM虚拟化技术
(1)Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发。它打算在单个计算机上运行多达100个满特征的操作系统。操作系统必须进行显式地修改(“移植”)以在Xen上运行。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。
在Xen环境中,主要有两个组成部分。一个是虚拟机监控器(VMM),也叫hypervisor。Hypervisor层在硬件与虚拟机之间,是必须最先载入到硬件的第一层。Hypervisor载入后,就可以部署虚拟机了。在虚拟机中,其中一个扮演着很重要的角色,就是0号虚拟机,具有很高的特权。通常,在任何虚拟机之前安装的操作系统才有这种特权。Xen被设计成为微内核的实现,其本身只负责管理处理器和内存资源。Xen虚拟化方案在Hypervisor和0号虚拟机的功能上做了良好划分,既能够重用大部分Linux内核的成熟代码,又可以控制系统之间的隔离和针对虚拟机更加有效的管理与调度。Xen上面运行的虚拟机既支持半虚拟化,也支持全虚拟化,可以运行几乎所有在X86物理平台上运行的操作系统。此外,最新的Xen内核还支持ARM平台的虚拟化。
(2)KVM(Kernel Virtual Machine,内核虚拟机)最初是由一个以色列的创业公司Qumranet开发的。KVM基于Linux Kernel,通过加载新的模块使Linux Kernel本身变成一个Hypervisor。2006年10月,在先后完成了基本功能、动态迁移以及主要的性能优化之后,Qumranet正式对外宣布了KVM的诞生。
KVM是基于虚拟化扩展(IntelVT或AMD—V)的X86硬件,是Linux完全原生的全虚拟化解决方案。KVM目前设计为通过可加载的内核模块支持广泛的虚拟机操作系统,如Linux、BSD、Solari s、Window s、Haiku、ReactOS和AROSResearch Operating System。在KVM架构中,虚拟机实现为常规的Linux进程,由标准Linux调度程序进行调度。事实上,每个虚拟CPU显示为一个常规的Lihux进程。这使KVM能够使用Linux内核的所有功能。
3 Xan与KVM安全风险与应对措施
Xen和KVM通过虚拟化技术提高了物理资源的利用效率,但是虚拟化技术也面临虚拟机逃逸、跳跃攻击、虚拟机蔓延、隐通道、DMA攻击等安全风险。由于Xen和KVM均采用了开源的Linux内核,Linux操作系统存在的漏洞也是采用Xen和KVM虚拟化技术产品的漏洞[3]。根据CVE确认的漏洞,Linux内核存在的主要漏洞是拒绝服务漏洞、远程溢出漏洞、本地权限提升和信息泄露漏洞,这也是Xen和KVM主要存在的漏洞,同时在缓冲区溢出、未授权访问、本地整形溢出、命令执行等方面也存在少量漏洞。下面将对Xen和KVM面临的主要几类安全问题进行对策分析。
3.1 虚拟机逃逸
入侵者可利用虚拟机软件的漏洞进行攻击,控制宿主机操作系统,进行非授权操作。利用VMM缺乏安全信任机制的漏洞,可通过应用程序接口发起攻击,控制某台虚拟机向VMM发出请求获取授权。若利用网络配置的缺陷,入侵者可连接到VMM的IP地址进而对VMM进行网络攻击。应对的措施有:(1)定期执行漏洞扫描,以及宿主机操作系统的版本和补丁管理,采用Selinux和sVirt技术,降低操作系统被攻击的风险。(2)构建可信虚拟化平台,宿主机选用具有可信计算平台安全模块的服务器,搭建VMM与宿主机、虚拟机之间的信任体系。(3)通过管理vLan子网管理分配对网络进行逻辑隔离,设计具有超级权限的平台管理虚拟机,利用防火墙访问控制策略实现对平台中的VMM进行全面监管。
3.2 跳跃攻击
入侵者可通过攻击某台虚拟机劫持在同一宿主机上的其他虚拟机,并以此为跳板不断入侵其他虚拟机。应对措施:(1)采取隔离CPU指令隔离,从而使虚拟机操作系统无法执行特权指令劫持主机。(2)在Hypervisor层和管理监控层运行的安全API监测虚拟环境中的所有活动并执行安全策略。
3.3 虚拟机蔓延
虚拟机数量接近或超过管理员可以有效管理的数量,从而过度使用资源和浪费license。应对措施:(1)实时监控虚拟化环境中的工作负载。(2)制定合理的虚拟机部署和生命周期管理。(3)利用自服务门户,帮助管理员控制虚拟资源损耗。
3.4 隐通道(cover channel)
利用虚拟化环境中的内存共享和磁盘共享,传递违规信息。应对措施:(1)采用内存隔离机制,虚拟机之间不能共享内存。(2)虚拟机迁移、关机或删除后,对其使用的内存空间进行清零。
3.5 DMA攻击
利用虚拟机间内存共享,攻击或控制其他虚拟机的内存,破坏或泄露内存信息。应对措施:禁用虚拟机间共享内存空间。
3.6 虚拟化系统完整性破坏
宿主机硬件、虚拟化软件被篡改,植入木马或恶意固件,危及整个宿主机及其虚拟机的安全。应对措施:(1)对服务器、虚拟化软件和管理平台组件等设备的完整性进行检测,并在检测到完整性收到破坏后具有恢复的措施。(2)定制化服务器,去除无用或不必要的服务器配件。(3)定制虚拟化软件,裁剪无用或不必要的组件。
3.7 Hypervisor管理员不可信
虚拟化环境超级管理员权限大,同时具备虚拟资源、网络、账号等各种资源管理能力。应对措施:按照权限最小化原则对管理员进行授权,减少管理员权限。
[1]肖强,徐文亭,何欢.虚拟现实技术和云计算的应用研究[J].信息安全与技术,2015.
[2]刘国乐,何建波,李瑜.Xen与KVM虚拟化技术原理及安全风险[J].保密科学技术,2015.
[3]孙琳程.虚拟机KVM与XEN的性能分析[J].电脑知识与技术:学术交流,2013:2364-2366.