APP下载

云计算中XEN虚拟机安全隔离相关技术综述

2015-11-02北京林业大学北京密码管理局北京王雅超

信息安全与通信保密 2015年6期
关键词:宿主机客户机虚拟化

北京林业大学北京密码管理局北京 王雅超

北京密码管理局北京 黄泽刚

引言

将系统进行虚拟化后,一台物理计算机系统虚拟化为多台虚拟计算机系统,每台虚拟机都有自己的硬件(包括CPU、内存、I/O等设备),通过虚拟化层的模拟,虚拟机中的操作系统认为自己独占一个操作系统在运行。每个虚拟机中的操作系统可以完全不同,其执行环境也是完全独立的。利用计算虚拟化技术可以实现快速存储和计算性能的无缝扩展,因此虚拟化技术为云计算提供了很好的底层技术平台,是云计算技术的精髓。但是云计算平台上的云架构提供者必须向客户提供具有安全隔离保证的虚拟机[6],在保证共享资源的前提下,实现虚拟机的安全运行[7]。从目前的情况来看,提供给使用者的虚拟机必须保证虚拟机与宿主机之间运行指令、存储空间、网络流量和用户访问的隔离。

虚拟化实现技术中,虚拟化层就是业内定义的VMM(虚拟机监视器)。从VMM提供的虚拟化平台类型可以将虚拟化技术分为完全虚拟化和半虚拟化两大类:安全虚拟化指客户操作系统不需要做任何修改就可以运行;半虚拟化要求操作系统进行修改来适应虚拟化平台。目前半虚拟化技术基本很少被采用,VMM基本都采用完全虚拟化技术。完全虚拟化经历了两个阶段:软件辅助的完全虚拟化和硬件辅助的完全虚拟化。随着虚拟化技术成为云计算的核心技术,日益发展壮大,为了能够取得先机,x86厂商在硬件上加入了对虚拟化的支持,因此目前基本上所有的VMM都是基于硬件辅助虚拟化实现的完全虚拟化。本文以Intel的硬件辅助虚拟化技术为例论述底层虚拟化的实现。

XEN诞生于剑桥大学实验室,XEN 是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术,Xen可以在一套物理硬件上安全的执行多个虚拟机,与 Linux是一个完美的开源组合,Novell SUSE Linux Enterprise Server最先采用了XEN虚拟技术[2]。它特别适用于服务器应用整合,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT基础架构。XEN 可以在一套物理硬件上安全的执行多个虚拟机,它和操作平台结合地极为密切,占用的资源最少。以高性能、占用资源少著称,赢得了IBM、AMD、HP、Red Hat和Novell等众多世界级软硬件厂商的高度认可和大力支持, XEN最成功的应用案例是亚马逊基于该技术提供弹性主机服务,国内不少服务商也开始基于XEN技术开发出可商用的云计算服务平台。

关键技术分析

同一物理机上不同虚拟机之间的资源隔离是VMM(虚拟机监视器)具备的基本特征之一,包括CPU、内存、内部网络隔离、磁盘I/O等的隔离,XEN采用硬件辅助虚拟化实现了这些设备的完全隔离。

1.虚拟机与宿主机之间运行指令的隔离

X86架构为了保护指令的运行,提供了指令的4个不同的特权级别,术语称为Ring,从Ring 0~Ring 3。Ring 0的优先级最高,Ring 3最低。用户级的应用一般运行在Ring 3级别,操作系统需要直接访问内存和硬件,需要在Ring 0执行它的特权指令,各个级别对可以运行的指令有所限制,X86架构下CPU依据这样的方式运行。虚拟化之后必须保证宿主机和虚拟机的不同指令运行于不同的级别。

硬件辅助虚拟化方面,Intel VT为CPU提供了VT-x技术,此项技术扩展了X86处理器架构,为X86架构的处理器虚拟化提供了硬件支持。VT-x引入了两种操作模式,统称为VMX操作模式[2]。

(1)根操作模式:在此模式下所有的指令行为和传统的X86一样。

(2)非根操作模式:客户机运行的模式,所有敏感指令的行为都被重新定义,使得它们能不经过虚拟化就直接运行或者通过“陷入”的方式进行处理。

具体实现如图1所示

图1 CPU虚拟化实现过程

根模式和非根模式都有相应的特权级Ring0—特权级Ring3。在使用VT-x时,描述程序运行在某个特权级时,必须指明当时是处于根模式还是非根模式。

VT-x中,在非根模式下,敏感指令引起的“陷入”称为VM-Exit。VM-Exit使得CPU自动从非根模式切换到根模式。与之对应的VM-Entry则使得VMM调度某个客户机运行时CPU由根模式切换到非根模式。

通过以上描述的方式,在XEN环境下虚拟机CPU指令在实现了虚拟化的同时与宿主机之间实现完全的的隔离,从而保证虚拟机的稳定运行。

2.Intel的内存虚拟化实现及隔离技术

Intel EPT(扩展页表)是Intel VT-x提供的内存虚拟化技术,在原有的的CR3页表地址映射的基础上引入了EPT页表实现另一种映射[3]。(具体如图2所示)

图2 内存虚拟化实现过程

CPU首先查找客户机CR3寄存器指向的L4页表。(关于虚拟机地址转换的内容可以参看文献1基础原理)客户机CR3寄存器给出的是客户机物理地址,CPU通过EPT页表将客户机CR3中的客户机物理地址转换为宿主机物理地址,在获得宿主机地址之后,CPU根据客户机虚拟地址和L4页表项内容来获取L3页表项的客户机物理地址。如果L4页表中客户机虚拟地址显示为“缺页”,那么CPU产生Page Fault直接交由客户机操作系统处理,在获得L3页表项的客户机物理地址后CPU通过查询EPT页表来将L3的客户机物理地址转换为宿主机物理地址。同样,CPU会依次完成L2、L1的查询,获得客户机虚拟地址对应的客户机物理地址,然后最后一次查询EPT页表获得宿主机物理地址[1]。

以上是对内存虚拟化实现的描述,每次查询和地址转换都是由VMM来完成的,VMM(虚拟机监视器)通过处理器硬件功能使得客户机操作系统运行在与之完全不同的地址空间里,并通过段限制使客户机操作系统所能看见的空间大小,以保证VMM自身的安全性,从而防止虚拟机触及VMM自身的运行状态。通过权限验证使得客户机操作系统局限在给定的地址空间里,以保证一个虚拟机只能访问分配给它的内存页,从而实现了整个系统的安全隔离,包括虚拟机与虚拟机之间、虚拟机与VMM之间的隔离。

3.虚拟机存储空间隔离技术

在介绍虚拟机存储空间隔离之前,我们先介绍一下XEN的虚拟域概念。

XEN的体系结构有XEN Hypervisor和虚拟域组成,XEN虚拟机称为虚拟域(Domain),有特权虚拟域(Dom0和IDD)与非特权虚拟域(DomU和HVM)组成[2]。Dom0时运行在XEN VMM之上的并且可以直接访问底层的物理资源和其他的虚拟域DomU交互,其他虚拟域访问I/O设备都需要经过Dom0。DomU不能像特权虚拟域一样直接访问物理I/O设备,DomU中的操作系统通过分离驱动模型的前端驱动来访问硬件设备,客户机操作系统通过前端设备驱动向位于Dom0中的后端驱动程序发送I/O请求,再由后端设备驱动将请求交给原始设备驱动处理,并将结果返给DomU[1]。

从上面的描述可以看出,前端驱动在DomainU中运行,而后端驱动和原生驱动则在Domain0中运行。前端驱动负责将DomainU的I/O请求传递到Domain0中的后端驱动,后端驱动解析I/O请求并映射到物理设备,提交给相应的设备驱动程序控制硬件完成I/O操作。换言之,虚拟机所有的I/O操作都会由VMM截获处理;VMM保证虚拟机只能访问分配给它的物理磁盘空间,这样通过域控制将I/O实现有效限制从而实现不同虚拟机硬盘空间的安全隔离。

4.基于虚拟机的网络流量交互的隔离

通常情况下,虚拟机可以使用防火墙规则、VLAN等实现虚拟机的网络隔离问题,这些实现技术与传统的物理机没有大的区别。这里介绍一种新的虚拟机网络交互隔离的方法。在国内一些厂商的实现过程中有的称为“安全组技术”[9],这种方式可以解决云计算环境下特有的虚拟机网络隔离问题。

它的使用场景主要是解决云环境下:1、租户不能管理虚拟机主机的IP地址,也看不见VLAN的对应关系的问题。2、一个VLAN内不同VM之间要隔离,不能实现共享访问的问题。

它的基本原理其实很简单,就是使用主机Linux操作系统自带包过滤防火墙Iptables,对进入主机操作系统的报文进行过滤。iptables信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则,它使插入、修改和除去信息包过滤表中的规则变得容易。通过各种不同的规则,对来自不同源地址、目的地址以及协议特征的数据包进行处理。规则存储在包过滤表中,而包过滤表被集成在Linux内核中[5]。在信息包过滤表中,规则被分组放在链中。

在云管理上创建安全组,将虚拟机网卡加入到安全组后,Iptables会根据同一级别的虚拟机(安全组)ID创建一条用户链,并将虚拟机网卡加入到该链中。后面对这些虚拟机添加规则时,所有的规则都会加入到该链中。主机向虚拟机网卡转发的数据报文均会通过用户链中的规则进行匹配,满足匹配要求的数据报文才能转发给虚拟机[9]。

安全组在出方向上的数据报文全部放行,在入方向上的数据报文默认拒绝访问。因此安全组只支持在入方向上添加安全组规则,以类似白名单的方式管理需要访问安全组的源。如下图3所示:

图3 安全组访问流程

5.用户访问的隔离。

实现云计算中虚拟机使用者具有强身份认证一直以来都是云计算需要解决的主要安全问题之一,其主要思想是利用认证中心颁发的数字证书来实现,数字证书表明了使用者的身份,数字证书与属性证书相结合形成一个数据结构,证书持有者的信息与一些属性进行绑定,通过数字证书相应包含的属性实现相应的权限。通过持有数字证书,当访问者访问虚拟机时,验证者通过预设的相应的权限规范进行验证,就能对用户访问的合法性做出判断。关于这方面的内容笔者已经在《信息安全与通信保密》杂志的《云计算环境下虚拟机用户身份认证技术研究及实现》一文中有过详细的论述,有兴趣的读者可以参考,这里不再赘述。

结语

云计算技术正在迅速发展,其结构特征决定了其开放性、复杂性、按需服务、虚拟化使用资源、弹性搭建等特征,也决定了其面临的安全问题也日益突出。虚拟机资源共享可以实现资源动态分配但也带来了一些安全风险,实现虚拟机的安全隔离一直是业内关注的问题,了解目前虚拟机的隔离技术可以使我们在建设或使用虚拟资源时规避虚拟机隔离的安全风险,但我们也应该看到,虚拟机的资源共享带来的很多安全风险目前业界并没有安全解决的办法,例如虚拟机处于一台物理主机之上时相互的隔离相对薄弱。这些都需要云计算安全研究人员在以后的工作中加以完善。笔者认为解决虚拟化的安全问题应该将传统的安全设备与方法进行适当的迁移,拓阔思路结合第三方认证来实现可能是一条可行的道路。

猜你喜欢

宿主机客户机虚拟化
嵌入式计算机软件测试关键技术研究
基于OpenStack虚拟化网络管理平台的设计与实现
对基于Docker的虚拟化技术的几点探讨
虚拟网络实验室在农村职校计算机网络技术教学中的应用研究
浅析虚拟化技术的安全保障
H3C CAS 云计算管理平台上虚拟化安全防护的实现
瘦客户机:安全与便捷的选择
升腾瘦客户机借神码翱翔“云端”
基于Web数据提高访问速度的方法