Linux虚拟机内核安全增强方案研究
2013-04-29蒲江唐金艺赵进
蒲江 唐金艺 赵进
摘要:虚拟机技术正在越来越多地被使用在个人电脑、数据中心和服务器集群中。其优点之一是引入这种体系结构层次可增强整个系统的安全。文中提出了一种Linux内核虚拟机安全增强方案,旨在提高客户虚拟机的安全性。该方案有以下特点:对客户虚拟机透明;严格的访问控制策略;为每个虚拟机与主机之间提供安全通信;能够在Linux主机和目前支持Linux的客户虚拟机中实现。
关键词:内核;虚拟机;安全性
中图分类号:TP309 文献标识码:A 文章编号:1009-3044(2013)07-1516-03
1 研究背景
虚拟化技术被广泛地使用在个人电脑与服务器集群等设备中。目前使用最广泛的是基于x86的虚拟化解决方案。即使近些年虚拟化解决方案的可靠性已经有所提高,针对虚拟化服务和操作系统内虚拟机的保护控制仍是一个研究热点。针对系统安全性的大多数类型的攻击会改写部分文件系统,采用入侵检测工具能够检查对文件的修改,重点是检查位于关键路径上的文件。
通常完整性检验工具和数据收集工具运行在同—个被监控的系统上。这里存在—个安全隐患,恶意软什可能篡改监控系统的钩子函数。虚拟化技术的引入可以提高整个系统的安全性,虚拟机有附加的边界保护[1]。特别地,—个系统管理程序能够提供—个定位监控系统可信计算根时,恶意软件无法访问该可信计算根。在这种情况下,即使攻击者成功地侵入—个虚拟机,其篡改痕迹也不能被删除,外部的安全系统也能够迅速采取相应行动。
本文讨论了监控客户虚拟机在服务器整合的工作模式,即—台主机上运行多个客户虚拟机。该文提出了—个可以监控和保护这些客户虚拟机的安全增强方案。实时完整性检验方法使主机可控制内部未经授权的对客户虚拟机的篡改。方案可以检测并对异常的客户行为采取措施。安全增强方案的实现是一个基于扩展并具有最小化可访问性和可视性的监控系统的Linux内核虚拟机[4]。
2 安全增强方案机制
2.1威胁模式
假设仅有虚拟机管理程序和主机内核是可信计算根的一部分。客户虚拟机运行时,可能遭到攻击或被注入恶意软件。客户主机运行时,客户系统可能遭到病毒、恶意代码注入、缓冲区溢出等所有可能的攻击。入侵者可能利用各种系统漏洞来影响内核和应用程序运行,页可能远程利用这样的漏洞企图获得全部权限。
2.2要求和注意事项
根据上述讨论的威胁模式,下面给出基于虚拟机的一个安全系统主要要求和可能遇到的一些需要注意的相关问题,及可能的解决方案。
基于虚拟机的安全系统使用了入侵检测系统的核心概念[3]。这样的系统必须符合下列要求。
透明性:系统应尽觉降低虚拟机方面的能见度。即潜在的入侵者不应该能够发现监测系统的存在。
免疫来自客户系统的攻击:主机系统和属性相同的客户系统应受到保护,免受来自不安全客户攻击。同时,由主机系统提供的功能不应受到影响。
可部署性:系统应可以部署在绝大多数可用的硬件上。
动态反应:系统应能检测到一个客户的入侵行为并采取适当的行动,或对不安全的客户采取适当的行动。
注意事项:
(1)需要建立从客户到主机的通信通道,以便主机读取客户数据或解析客户信息,但通道必须对用户空间不可见。
(2)需要建立客户虚拟机和主机之间的信号信道,以便客户虚拟机中发生的某些事件时可通知主机,但同样它应尽可能的隐藏。
(3)为了确保—致性和防上信息泄漏,对通道进行某种形式的访问控制是必要的。但是,这种访问控制机制不应影响系统性能。
3 安全增强方案结构
方案体系结构由多个位于主机和客户机内核的模块组成。监测系统的核心模块位于主机。数据可以由客户虚拟机系统收集,或由主机侧的唯一进程收集。
虚拟机系统可以收集到更准确和更完整的客户系统数据,但也更容易被客户系统发觉。用—个位于客户系统中的守护进程收集感兴趣的客户數据,可以减少主机端的计算负载。然而,在监控系统隐蔽性和减少主机端计算负荷之间孺进行权衡。进程收集方式理论上是客户无法检测到,但仅允许一个相当受限的监测系统。该文提出的安全增强方案优先选择支持虚拟机系统收集数据,同时也支持单—进程收集数据。
安全增强方案的每个虚拟机伩川自己的私有内存空间与主机通信,其虚拟机之间是完全独立。
安全增强方案的实现分为两大部分,主机和客户机。两者有相似的结构:(1)内核的守护进程用于管理和共享通信信道:(2)用—个模块动态接收、分析消息,并采取相应行动。
下面讨论为解决一系列安全增强方案的技术难题而需要遵循的要求:
1)主机一客户机通信系统在KVM[5]中不可用,必须设计一个使用共享内存的简易通信系统。
2)KVM中缺乏客户机至主机的信号通道,需要设计一个使用共享内存的简单的信号机制。不选择类似Xen[2]中的事件通道,因为其实现的信号信道使得整个安全增强操作系统更容易地暴露在客户虚拟机中的攻击者面前。
3)KVM缺乏对共享内存的访问控制机制,需要同步主机一客户机间对共享内存的访问。为了简化访问控制管理,每个安全增强方案实现的虚拟机提供了自己的共享内存区,用于与主机通信。同时,为每个虚拟机的两个单向通道实现了一个简单的锁机制,以同步共享内存区域的消息传输。
KVM与Xen不同,共享内存没有由虚拟机监控程序直接管理,而是由Qemu-KVM[6]仿真进程管理。采用虚拟网络接口作为主机和客户机问通信信道导致客户可见且易受到攻击。此外,该消息处理程序包含在客户机内核模块就是为了使它尽可能的安全。主机端的消息处理程序实现包含在Qemu-KVM的共享内存管理模块中。如图1所示,方案中共享内存是由两个数据缓存区和两个锁保护相应的关键段组成。
安全增强方案应能够主动监控客户虚拟机内运行的关键进程。方案能定期检查客户机的守护进程是否存在与活动。如果其中的一个进程终止,主机将采取适当的策略,包括收集数据进行分析,甚至冻结客户机或重新启动。方案在主机端创建一个包含对选择的虚拟机关键路径文件计算的校验和的数据库。一个运行时守护进程可重新计算被监控文件的哈希值。如果发现哈希值不匹配,将采取相应对策。
1) 共享内存的管理和分配:客户机由内核模块分配和管理共享内存,而在主机的共享内存必须已经在虚拟机中分配并且由Qemu-KVM进程管理。
2) 模块的数量:在虚拟机,共享内存管理需要两个内核模块,而在主机端需要三个模块。
4 结论
安全增强方案的目标是提供一种潜在的无法察觉、无法破坏的系统,可以捕捉完整性损害的虚拟机,其具有以下特点:
1) 方案实现的主机一客户机通信消息不通过标准的网络协议栈处理,以使其无法被检测。方案完全靠自己的内部通讯协议,它独立于所采用的虚拟化系统。此外,方案的每个虚拟机都有自己保留共享内存区实现主机一客户机通信,使得每个通信通道独立管理并相互间隔离。
2) 主机和客户机间没有明确的信号通道,方案中实现的通信不易被检测到。
3) 方案可以在主机和客户机之间共享监测任务,提升了系统性能。
4) 核心监测系统位于主机侧,系统很难被侵入。此外,管理主机和客户机间通信的模块驻留在客户机的内核中。
5) 方案实现可以部署在任何最新的标准Linux内核。
本文提出了一个Linux内核虚拟机扩展安全增强方案。该方案增强了Linux的内部安全性,对客户虚拟机透明,支持全虚拟化,提供了虚拟机管理程序和客户虚拟机间安全的双向通信通道,同时该方案可以部署在大多数x86和x86-64位计算机上。后续将继续对方案的实现与应用进行进一步研究。
参考文献:
[1] M.Aiken,M.F ahndrich,C.Hawblitzel,and al.Deconstructing process isolation.In MSPC,06:Proc.Of the 2006 workshop on Memory system perf.andcorrectness,pages1-10,NewYork,NY,USA,2006.
[2] 张志新,彭新光.基于Xen的入侵检测服务研究[J].杭州电子科技大学学报,2008(6):91-94
[3] 程川.一种基于Xen的信任虚拟机安全访问设计与实现[J].计算机与数字工程,2010,(3).
[4] 管建超.基于VMware的虚拟机安全设计与实现[J].电力信息化,2010,(6).
[5] P.A.Loscocco,P.W.Wilson,J.A.Pendergrass,and al.Linux kernel integrity measurement usingcontextual inspection.In STC07:Proc.Of the 2007 ACM workshop on Scalable trusted computing,pages 21-29,NewYork,NY,USA,2007.
[6] R.Di Pietro and L.V.Mancini.Intrusion Detection Systems,volume 38 0f Advances in lnformationSecurity.Springer-Verlag,2008.