望娅露,龙恺, 王石生
(1中国电子科技集团公司网络空间安全技术重点实验室,四川成都6100412中国铁道科学研究院电子计算技术研究所,北京100081)
战术环境下的虚拟化安全增强方法
望娅露1,龙恺1, 王石生2
(1中国电子科技集团公司网络空间安全技术重点实验室,四川成都6100412中国铁道科学研究院电子计算技术研究所,北京100081)
在数据中心中,虚拟化的价值已经被大家所公认,但是在战术环境中,虚拟化能否发挥同样的作用呢?答案是肯定的,但是前提是保证它的安全。在战术环境中,虚拟机管理器更容易受到攻击,如果虚拟机管理器和虚拟机之间无法隔离的话,一旦虚拟机管理器被攻击者控制,那么虚拟机也会被控制。本文阐述了虚拟化在战术环境中的优势,同时利用强制访问控制策略保障战术环境中的虚拟化安全。由此实现虚拟化在战术环境下的实际使用。
战术环境;虚拟化;虚拟机隔离
随着计算能力的增强,为保证数据能够在快速的转移,目前在将战术车辆转变成移动的数据中心。这些机器可以在战地上提供珍贵的信息资源,以保证战场上的优势。但是,尽管将这些运输车或坦克上装备实时的智能电脑设备,这些设备却没办法发挥巨大的机制,因为这些设备需要消耗大量珍贵的电力、制冷设备和物流去部署和维护这些设备。例如大量的计算机会很显眼,并且会在已经很热的环境中产生多余的热量,降低士兵的反应速度并且潜在的影响健康,并造成安全威胁。
有趣的是,这些移动的数据中心和目前企业的数据中心面临的挑战基本一致。一样是电力资源的匮乏、不充足的制冷和空间的缺乏。为了克服这些困难,数据中心的管理者将这些数据中心虚拟化,将物理服务器虚拟化,并基本上以10:1的比例进行优化整合。那么在战术环境下,能不能也用虚拟化的方式来解决这些问题呢?在战术环境中不同安全级别的信息资源在安全方面有什么特殊的安全需求呢?现在关键是要弄清楚虚拟服务器和物理服务器之间的区别,同时也需要清楚一些可以直接应用在战场上的开源社区虚拟化软件的安全优势。
在战地和数据中心进行虚拟化有非常多的好处,包括资源整合、统一化、支持在线迁移和性能优势,这些可以使战斗赢在起跑线上。
当应用通过虚拟化整合后,硬件的使用率就会得到提升,那么就可以用更少的服务器完成更多的工作,同时节省了电力、空间和制冷设备上的费用。在战术环境中,功能可以通过计算能力的要求增加来加强。通过将应用整合到少量的物理服务器上后,新的可用空间就可以用来做其他的事情例如增加一些任务所需的物品,例如更多的子弹,或战士的休息空间。
虚拟化使数据中心的管理者可以将硬件和操作系统解耦,这也就使数据中心的管理者可以用更低的价格得到更好性能的硬件,而不需要再部署一套软件栈以适应新的硬件。部队也不会被一家硬件提供商所绑定,可以通过竞争选择更优的硬件提供商。在战术环境中,这个好处是非常大的,软件不需要由于一些外部因素例如电力供应、合适的连接器等固定在某一台特定的服务器上。因此,添加一项新的功能会比原来更容易,硬件的更新也会比之前更快,因为已经不需要重新部署软件栈了。同时,不是所有的装甲车都需要相同的功能,因此,无论这项功能被使用还是没有使用,都需要对电力、空间和制冷设备的严格预算。最后统一化会使得战场更敏捷。
如果已经通过Hypervisor检测到了在数据中心中的一台硬件服务器会马上宕机,在这上面运行的应用可以零停机的在线迁移到另一台服务器上。甚至,在没有预测到的情况下,Hypervisor宕机,在之上运行的虚拟机也可以在不需要用户干预的情况下在另外一台物理服务器上重新启动。在战术环境中,战地的损伤,会直接导致很多计算机的损坏,更糟糕的是可能会导致战场上急需的一些关键业务被破坏。如果采用原有的直接将应用运行在物理服务器上,这些业务被破坏,可能得等到战士到装甲车上重新维护才能进入这些业务,这样就太晚了。但是,如果这些应用被虚拟化,那么这些业务在被破坏时就可以立刻被迁移,在另外一辆装甲车上可以工作的服务器上重新启动,而不需要人工干预。这样,在战场上一名作战人员在很长一段时间失去一项关键任务的信息就减少了。
一些业务需要在系统之间的通讯要低延时高带宽,这个速度与虚拟化后在一台硬件设备上的通信的速度差不多。这是因为虚拟网络的通信是通过本机的主板而不是通过一个更慢更高延时的网络设备从一个物理系统到另一个物理系统进行通讯。这样增加了网络性能,并降低了延时,可以帮助作战人员在焦灼的战场上得到更快的响应速度。
应用层的安全手段无法保障整个系统的安群,因为目前在任何一个计算机系统里面,应用会越来越多,你无法保证每一个应用都是安全可靠的。而且,如果底层的脆弱性没有解决,只要有一个应用出了问题,那么它可能就会把这个安全问题蔓延到整个系统。
在普通的计算机系统中,所谓的底层是指操作系统及相关基础软件环境。具体到虚拟化计算环境中,这个“底层”往往是指与计算机操作系统功能类似的虚拟机管理器(Hypervisor)。Hypervisor是虚拟化环境的核心,它负责对运行其上的虚拟机发起的资源请求进行响应,这就涉及到硬件资源的虚拟化以及资源调度的过程。因此Hypervisor在系统层面来说拥有较高的特权。
在未虚拟化之前,服务器和服务器之间彼此是物理隔离的,攻击者攻破一台服务器后,他只能控制那一台服务器,这时攻击者必须采取网络攻击,攻击网络内的其它服务器,才有可能拿到其它服务器的控制权。系统管理员有很多工具检测和保护网络攻击,如防火墙,网络流量分析工具,入侵检测工具等。
虚拟化后,在同一台物理主机上运行了多个服务(应用程序),如果一个Hypervisor被攻破,那么不止是一台虚拟机被控制,在这个Hypervisor上面运行的所有的虚拟机都被控制,并且在这个Hypervisor上的虚拟机的镜像文件可能同时在另外一个Hypervisor上运行,那么这之间的连接也被控制了,甚至可以向主机能直接访问的虚拟机镜像写入恶意代码。如果虚拟化技术被应用到战术环境中,那么Hypervisor就必须保证安全性,这样,战斗人员才能信任任务的组件。
现实世界中的攻击者对Hypervisor的漏洞兴趣越来越浓,前不久Xen的Hypervisor就已经被攻破了。如果虚拟化应用到战术环境中,出于作战的目的,它将会遭受强度更大的攻击。现在的问题是如果真发生这种情况时该如何处置。鉴于Hypervisor执行的功能和操作系统类似,在系统未知安全防护上,我们也可以参考操作系统的做法来实现。
在操作系统中,强制访问控制(Mandatory Access Control,MAC)被用于增强系统抵御0-Day攻击(利用尚未公开的漏洞实现的攻击行为)的能力。所以它不是网络防火墙或访问控制列表的替代品,在用途上也不重复。
在基于Linux的虚拟化环境中,有一个社区项目将强制访问控制整合到系统中,该项目名称叫做sVirt,它是包含在libvirt中的SELinux框架,用于隔离虚拟机。在介绍sVirt之前,需要对SELinux和KVM做一个快速的介绍。
SELinux比x86服务器虚拟化技术要出现得更早,在这之前是用来锁定物理系统以防止一些恶意软件对其他软件甚至主要系统的攻击。SELinux是通过标签来进行控制的。在SELinux系统上的每一个对象都需要根据他的功能制定一个标签,这包括进程、用户、文件、硬件设备网络端口和适配器等。SELinux的策略通过标签明确的允许该对象访问另外一个对象同样根据另外一个标签拒绝访问其他任何对象的访问。例如,如果一个恶意的web服务器进程试图读取一份含有口令的文件,SELinux会一直锁定这份文件并且将这次访问记录到日志中,因为SELinux的策略明确指出不允许带有web服务器标签的进程访问带有口令标签的文件。SELinux并不是Linux的外部程序,而是在Linux的内部。从2007年开始SELinux在大型企业Linux的发行版中作为默认开启的状态。
KVM是从2006年开始兴起的一个开源项目,并且在2007年被Linux的内核项目所接受,目前在大多数Linux的发行版中都包含KVM。KVM的独特之处在于所有的KVM虚拟机都是Linux下的一个进程。同样的,KVM非常的精简,因为它可以让Linux操作系统去管理虚拟机,提供硬件支持,并且在电力的节省和性能上有优势。与之前类似,web服务器进程可以被SELinux的策略所控制,一个KVM的虚拟机进程也可以被SELinux的策略sVirt所控制。
sVirt项目是在1999年NSA发起的一个开源项目SELinux的基础上建立的。sVirt早先是用来保证KVM虚拟机之间和虚拟机与Hypervisor之间的安全隔离的。从更高层来看,sVirt通过将SELinux的“强制空间”包裹住虚拟机,这个空间可以限制虚拟机可以做什么。sVirt甚至可以保护虚拟机的客户机操作系统,这些客户机操作系统可以是不在SELinux的保护下的操作系统例如Windows。
图1 通过sVirt保护的KVM顶层概览Fig.1 High-level overview of KVM with sVirt protection
当一个虚拟机客户机启动时,KVM就会通过sVirt给这个虚拟机进程分配一个唯一的SELinux的标签,与之对应的这个虚拟机的磁盘文件也会给一个匹配的标签。除了这个进程和虚拟磁盘文件,这个系统中没有其他的对象会有相同的标签。当第二台虚拟机启动时,第二个虚拟机的进程和虚拟磁盘文件也会给一个匹配但不相同的唯一标签。
当一台虚拟机试图通过一个Hypervisor的漏洞去获取管理员的权限时,在内核级别的sVirt就会限制这台虚拟机的访问保证这台虚拟机只能访问那些sVirt SELinux策略中允许他访问的对象,一般来说就是他自己的磁盘,使用它自己的资源。在2011年美国的黑帽大会上,Nelson Elhage展示了一种攻击KVM的方法,但是使用sVirt就可以阻止这种攻击。
例如,libvirt动态地标记镜像文件,默认所有虚拟机都使用svirt_t type类型标记,所有镜像文件都使用svirt_image_t类型标记。SELinux策略规定svirt_t进程可以读/写svirt_image_t文件和设备。这种保护允许虚拟机只能与正确标记的文件和设备交互,被攻破的虚拟机不能访问主机的home目录,即使虚拟机以root权限运行。这样就能保护宿主机不受任何虚拟机的侵害,实现了虚拟机和Hypervisor之间的隔离。
通过类型标记的方法有效的保护了宿主机遭受来自虚拟机的攻击,但这种类型的保护不能阻止一个虚拟机攻击另一个虚拟机。因为使用相同的类型标记域和镜像文件的时候,虚拟机1以svirt_t类型运行,如果攻击者控制了虚拟机机2,此时虚拟机2也将以svirt_t类型运行,那么攻击者就可以访问虚拟机1的镜像文件了,这个在安全策略中是被允许的行为。
从REHL5开始,SELinux策略的安全上下文字段从原来的三个增加到四个:“用户:角色:类型:多级安全”,其中新增加的多级安全(Multi Level Security,MLS)标记定义了一个敏感级别(s0-s15)和数据分类(c0.c1023),MLS标记允许MLS机器不仅可以基于它的使用者标记文件,也可以根据敏感性和内容的本身属性进行标记。这个字段仅在MLS策略中使用,我们尝试在默认策略(targeted)中使用它,只定义一个敏感级别(s0),允许管理员定义分类,我们把它叫做多类别安全(Multi Category Security,MCS)。是由NSA和其他机构驱动的安全计算直接引出的一个概念。这最引人注意的地方在于证明了这些有涉密信息的机构贡献出自己的技术,使自己的需求在开源社区从小众的需求变为主流。
sVirt使用MCS隔离两个相同SELinux类型(svirt_t)的虚拟机,由libvirt分配一个不同的随机选择的MCS标记给每个虚拟机及其关联的虚拟镜像,libvirt保证它选择的MCS字段的唯一性,SELinux策略禁止不同MCS标记的虚拟机之间互相操作,这样就保证了虚拟机之间无法相互攻击。
例如,libvirt用下面这些标记创建两个虚拟机机器关联的虚拟镜像:
表1
SELinux阻止虚拟机1(system_u:system_r:svirt_t:s0:c0,c10)访问虚拟机2的镜像文件(system_u:object_r:svirt_image_t:s0:c101,c230),因此这两个虚拟机不能互相攻击。
下表所示的是libvirt指定的SELinux上下文的含义:
表2
另外,sVirt还支持静态标记的功能,静态标记允许管理员为虚拟机选择一个特殊的标记,包括MCS/MLS字段,虚拟机将总是以这个标记启动,运行静态虚拟机的管理员负责给镜像文件设置正确的标记,libvirt永远不会修改静态虚拟机上下文的标记,它允许sVirt组件在MLS环境下运行,你可以在一个libvirt系统上以不同敏感级别运行多个虚拟机。
图2 通过sVirt生成唯一的虚拟机进程和磁盘文件动态标签
sVirt策略保证了虚拟机之间的隔离,也保证了虚拟机与Hypervisor之间的隔离。解决了在作战环境下Hypervisor被攻击之后控制所有虚拟机的风险。同时由于其引入了多级安全字段,使得不同敏感程度的信息能够在同一台物理设备上得到很好的隔离。满足战术环境中对于多种密级信息的统一化整合时所需要的隔离需求。使得虚拟化技术能够真正在战术环境中使用起来。
更好的性能和安全是发展的趋势。对于虚拟化而言可能需要将资源控制组(Cgroups)融合到虚拟化中。与SELinux对Linux的进程进行访问控制一样,Cgroups是用来对CPU、网络、内存以及其他Linux进程所用到的资源进行控制。由于KVM虚拟机时Linux的进程,他们一样也可用通过Cgroups来控制。这可以推进在多租户环境下资源的控制。一个虚拟机不会使用超出分配的资源,不然的话会影响到同一个Hypervisor上的其他虚拟机。从安全的角度来看,Cgroups同样可以用在通过对一台虚拟机拒绝服务攻击而导致整个Hypervisor瘫痪上。
另外可以考虑的开源项目就是可信计算。由于计算资源包含一些敏感数据,这些数据会被推送到战场上,一种方法是启动并且相信联合系统不会出问题。一个开源组织和政府结构、硬件软件厂家联合,致力于可信计算技术的研究。由于KVM的虚拟机时Linux的一个进程,越快的采用这种新兴的可信计算技术会使的安全变得更简单,而不是发明更多全新的东西来保证安全。
[1]Loscocco P A,Smalley S D,Muckelbauer P A,et al.The inevitability of failure:The flawed assumption of security in modern computing environments[C]//Proceedings of the 21st National Information Systems Security Conference.1998,10:303-314.
[2]Gregory M,Loscocco P.Using the flask security architecture to facilitate risk adaptable access controls[C]//Third Annual Security Enhanced Linux Symposium.2007.
[3]Peter Loscocco N S A.Integrating flexible support for security policies into the Linux operating system[C]//Proceedings of the FREENIX Track:...USENIX Annual Technical Conference.The Association,2001:29.
[4]Walsh E.Application of the flask architecture to the x window system server[C]//Proceedings of the 2007 SELinux Symposium.2007:1-8.
[5]Spencer R,Smalley S,Loscocco P,et al.The Flask security architecture:System support for diverse policies[C]//Proceedings of the Eighth USENIX Security Symposium.1999.
Enhancement of Virtualization Security in Tactical Environment
WANG Ya-lu1,LONG Kai1,WANG Shi-sheng2
(1CETC Key Laboratory of Cyberspace Security Technology,Chengdu Sichuan 610041,China,2Institute of Electronic Computing Technology,China Academy of Railway Sciences,Beijing 100081,China)
Virtualization proves to be valuable in the data center,but could it work in tactical environments?Yes,only if it’s secure.In tactical environment,virtual machine manager is fairly vulnerable to attacking.If the isolation of between the virtual machine manager and virtual machine could not be ensured,and once the virtual machine manager is controlled by an attacker,the virtual machine would be easily controlled.Advantages of virtualization in tactical environment are described in this paper.In addition,mandatory access control policies are applied to protecting the virtualization security in tactical environment,thus to realize practical application of virtualization in tactical environment.
tactical environment; virtualization; virtual machine isolation
TP309 [文献标志码]A [文章编号]1009-8054(2016)04-0113-04
2015-12-25
望娅露(1990—),女,本科,助理工程师,主要研究方向为云计算安全;
龙恺(1990—),男,硕士研究生,助理工程师,主要研究方向为信息安全;
王石生 (1977— ),男,本科,副研究员,主要研究方向为计算机软件与安全。