目前,虚拟化技术(virtualization)在企业中得到了广泛地应用,并具有巨大的市场前景。据IDC预计,2011年,虚拟化服务市场将达到117亿美元。在2009年和2010年连续两年公布的Gartner技术发展趋势报告中,虚拟化技术都成为十大IT技术之一。虚拟化技术改变了系统软件与底层硬件紧耦合的方式,可以更加灵活地配置与管理计算系统。虚拟化技术最早由IBM在20世纪60年代提出,并成功应用于大型机VM370。根据Popek和Goldberg在文献[8]中提出的可虚拟化体系架构的3个条件:等价性(equivalence)、资源控制(resource control)和有效性(efficiency),目前广泛使用的X86架构是不支持虚拟化的。随着个人计算机(主要是X86架构)处理能力的增强,同时,VMware将虚拟化技术引入到X86架构,从此,虚拟化技术及其应用得到了蓬勃地发展,常见的虚拟化软件有VMWare ESX/GSX/Workstation,Xen。根据虚拟层次的不同,虚拟化技术可以分为指令级虚拟化、硬件抽象级虚拟化、操作系统级虚拟化、运行库级虚拟化和编程语言级虚拟化。每个虚拟操作环境(包括操作系统和其上运行的应用程序)被称为虚拟机(virtual machine,简称VM);将底层硬件资源进行抽象从而供多个虚拟机使用的虚拟化软件被称为虚拟机管理器(virtual machine monitor,简称VMM或hypervisor)。
图1将传统架构与虚拟化架构进行了比较。从安全的角度来看,传统架构的操作系统具有最高权限,它负责管理整个硬件平台。而在虚拟化架构中,虚拟机管理器位于操作系统和真实硬件平台之间,比操作系统的特权级更高,而且代码量更少。
图1 传统架构和虚拟化架构的比较
与传统架构相比,虚拟化架构的优势在于:
(1) 更小的可信计算基(trusted computing base,简称TCB):虚拟机管理器的代码量一般在10万行左右,远远小于操作系统的代码量。例如,Linux 2.6.27大概有1 000万行,而Windows XP大概有3 500万行。这就意味着虚拟机管理器自身具有的Bug数量更少,相比操作系统也更健壮;
(2) 更好的隔离性(isolation):在传统架构中,应用程序通过进程的虚拟地址空间来进行隔离,进程之间可能相互干扰。例如,某个进程出现故障导致整个系统崩溃,从而影响到其他进程的正常运行。而在虚拟化架构中,应用程序是以虚拟机为粒度进行隔离的,因此,虚拟机架构提供更好的隔离性。
由于虚拟化架构具有上述优势,基于虚拟化架构的安全工具能够有效地监控虚拟机的内部状态,同时抵御被监控系统中可能发生的攻击。因此,在虚拟机管理器层提供服务,可以在一定程度上增强计算系统的安全性(security)和可移动性(mobility)。
文献[20]列出了基于虚拟化架构的3种服务实例:安全日志(secure logging)、入侵防御和检测(intrusion prevention and detection)、环境迁移(environment migration)。
目前,基于虚拟机架构来增强安全工具的安全性已经成为研究趋势,例如入侵检测、系统日志、蜜罐、完整性监控、恶意代码检测与分析、安全监控架构、监控通用性等。
1 基于虚拟化安全监控的分类
近几年来,由于虚拟机管理器自身具有更小可信基和更好隔离性的优势,基于虚拟机的安全监控都是利用虚拟机管理器隔离和保护特定的安全工具。因此,从安全监控实现技术的角度来看,基于虚拟化安全监控的相关研究工作可以分为两大类:
(1) 内部监控:在虚拟机中加载内核模块来拦截目标虚拟机的内部事件,而内核模块的安全通过虚拟机管理器来进行保护;
(2) 外部监控:通过在虚拟机管理器中对虚拟机中事件进行拦截,从而在虚拟机外部进行检测。
1.1 内部监控
图2说明了内部监控的架构,典型的代表系统是Lares和SIM。被监控的系统运行在目标虚拟机中,安全工具部署在一个隔离的虚拟域(安全域)中。这种架构支持在虚拟机的客户操作系统的任何位置部署钩子函数,这些钩子函数可以拦截某些事件,例如进程创建、文件读写等。由于客户操作系统不可信,因此这些钩子函数需要得到特殊的保护。当这些钩子函数加载到客户操作系统中时,向虚拟机管理器通知其占据的内存空间。由内存保护模块根据钩子函数所在的内存页面对其进行保护,从而防止恶意攻击者篡改。在探测到虚拟机中发生某些事件时,钩子函数主动地陷入到虚拟机管理器中。通过跳转模块,将虚拟机中发生的事件传递到管理域的安全驱动。安全工具执行某种安全策略,然后将响应发送到安全驱动,从而对虚拟机中的事件采取响应措施。跳转模块的功能是在虚拟机和管理域之间通信的桥梁。为了防止恶意攻击者篡改,截获事件的钩子函数和跳转模块都是自包含的(self-contained),不能调用内核的其他函数。同时,它们都必须很简单,可以方便地被内存保护模块所保护。
这种架构的优势在于,事件截获在虚拟机中实现,而且可以直接获取操作系统级语义。由于不需要进行语义重构,因此减少了性能开销。然而,它需要在客户操作系统中插入内核模块,对其不具有透明性。而且,内存保护模块和跳转模块是与目标虚拟机紧密相关的,不具有通用性。
图2 内部监控的架构
1.2 外部监控
与内部监控相比,外部监控具有一定的优势,因此相关的研究工作也就更多。图3说明了外部监控的架构,典型的代表系统是Livewire等。
外部监控是指在目标虚拟机外部,由位于安全域的安全工具按照某种策略对其进行检测。从图3中可以看出,监控点部署在虚拟机管理器中,它是安全域中的安全工具和目标虚拟机之间通信的桥梁。监控点拦截目标虚拟机中发生的事件,重构出高级语义并传递给安全工具。安全工具根据安全策略产生的响应,通过监控点来控制目标虚拟机。虚拟机管理器将安全工具与目标虚拟机隔离开来,增强了安全工具的安全性。由于虚拟机管理器位于目标虚拟机的底层,因此监控点可以观测到目标虚拟机的状态(例如CPU信息、内存页面等)。在虚拟机管理器的辅助下,安全工具能够对目标虚拟机进行检测。一般来说,外部监控一般包含两种基本功能:事件截获和语义重构。事件截获是指拦截虚拟机中发生的某些事件,从而触发安全工具对其进行检测。由于虚拟机管理器位于目标虚拟机的下层,因此只能获取低级语义(例如寄存器和内存页面)。而监控工具是针对操作系统层的语义,因此两者之间存在语义鸿沟(semantic gap)。为了使监控工具能够“理解”目标虚拟机中的事件,因此必须进行语义重构(semantic reconstruction)。语义重构是指由低级语义重构出高级语义(操作系统级语义)。语义重构的过程与客户操作系统的类型和版本密切相关,通过某些寄存器或者内存地址来解析出内核关键的数据结构。
图3 外部监控的架构
2 基于虚拟化安全监控的相关工作
安全监控主要是对计算系统实现相应的安全功能,保证计算系统的正常运行。本文将主要从入侵检测、蜜罐、文件完整性监控、恶意代码检测与分析、安全监控架构、监控通用性等方面介绍相关的研究工作。
2.1 入侵检测
入侵检测系统(intrusion detection system,简称IDS)是指发现在非授权的情况下,试图存取信息、处理信息或者破坏系统,以使系统不可靠、不可用的故意行为的安全工具。根据收集信息的来源不同,IDS可以分为基于网络的IDS(network-based IDS,简称NIDS)和基于主机的IDS(host-based IDS,简称HIDS)。NIDS部署在局域网中,实时地分析网络中的流量(例如Snort);而HIDS则是分析系统的内部状态和日志,从而发现入侵行为(例如OSSEC[28])。入侵防御系统(intrusion prevention system,简称IPS)则是在入侵检测的基础上实现动态响应。
现有的入侵检测架构给系统管理员带来了两难的选择:如果将入侵检测系统部署在主机上,它可以清晰地观察到主机的系统状态,但是容易遭到恶意攻击或者被屏蔽;如果将入侵检测系统部署在网络上,它可以更好地抵御攻击,但是对主机的内部状态一无所知,因此可能让攻击者逃脱。因此,Tal Garfinkel和Mendel Rosenblum首次在文献[23]中提出一种能够观察到被监控系统的内部状态、同时与被监控系统隔离的入侵检测架构。该架构利用虚拟化技术,将入侵检测系统从被监控系统中转移出来。虚拟机管理器能够直接观察到被监控系统的内部状态,通过直接访问其内存来重构出客户操作系统的内核数据结构,而通过单独运行的入侵检测系统来进行检测。这种在虚拟机外部监控虚拟机内部运行状态的方法被称为虚拟机自省(virtual machine introspection,简称VMI)。为了证明该架构能够抵御攻击以及防止攻击者逃脱,作者通过修改VMware Workstation实现了原型系统-Livewire],如图4所示。图4右侧为被监控的系统,左侧是基于虚拟机自信机制的入侵检测系统,操作系统接口库通过虚拟机管理管理器拦截的状态来恢复出操作系统级语义。
图4 Livewire系统架构图
类似地,Laureano等人提出将被监控系统封装在虚拟机中,同时从外部监控其中的系统调用序列。外部的监控器根据系统调用序列来判断进程行为是否异常,从而采取相应的响应措施。基于User-Mode Linux(UML),作者实现了原型系统,当检测到异常时,采用软件防火墙来阻断网络连接或者关闭网络端口。
与上述不同的是,VNIDA通过建立一个单独的入侵检测域(intrusion detection domain,简称IDD)来为其他虚拟机提供入侵检测服务。虚拟机管理器层的事件传感器(event sensor)拦截虚拟机中的系统调用,并通过虚拟机管理器接口(VMM interface)传递到IDD中的入侵检测系统。根据不同的安全策略,虚拟机管理层的入侵检测域助手(IDD helper)能够针对入侵采取相应的响应。
此外,Zhang等人基于虚拟化和智能磁盘技术(smart disk technology)提出了面向存储的入侵检测系统。虚拟机管理器能够避免入侵检测系统受到攻击,而智能磁盘技术则能够让入侵检测系统观测到被监控系统的整个文件系统。而Pennington等人提出将入侵检测嵌入到网络文件系统(network file system,简称NFS)服务器中。当客户端进行文件操作时,基于存储的入侵检测系统能够对可疑的文件修改操作进行在线的、基于规则的检测。
在分布式计算系统中,HyperSpector是一种面向虚拟计算环境的入侵监控系统。分布式环境中的多个入侵检测系统能够发现攻击者,同时也增加了不安全的因素。因此,HyperSpector将入侵检测系统部署在虚拟机中,与被监控的系统隔离。此外,各个节点上的入侵检测虚拟机(IDS VM)通过虚拟网络进行互联。为了对被监控系统进行有效地检测,它提供了3种虚拟机内部(inter-VM)监控机制:软件端口镜像(software port mirroring)、虚拟机内磁盘挂载(inter-VM disk mounting)和虚拟机内进程映射(inter-VM process mapping)。此外,Roschke等人提出了面向分布式计算环境,集成了管理虚拟机和入侵检测系统的架构。该架构通过事件收集器(event gatherer)来获取各个IDS传感器(IDS sensor)的信息,并记录在事件数据库(event database)进行分析。因此,该架构满足通用分布式入侵检测系统可伸缩性(extensibility)的需求。
2.2 系统日志
系统日志(Log)是记录系统中硬件、软件和系统的问题信息,同时还可以监视系统中发生的事件。系统管理员可以通过它来检查错误发生的原因,或者寻找攻击者留下的痕迹。例如,Linux系统中,日志一般存放在文件/var/log/messages中,而Windows XP系统中则可以运行eventvwr命令来查看系统日志。
当前的系统日志存在两个问题:
(1) 它依赖于记录日志的操作系统的完整性。如果入侵已经发生了,那么攻击者很有可能通过删除日志记录来隐藏其踪迹,那么系统日志也就不再值得信赖了;
(2) 它没有记录充足的信息(例如非确定性事件)来重放和分析攻击。系统日志只记录系统中发生的事件,而这些事件不能充分地确定攻击者如何入侵到系统,因此给系统管理员分析攻击带来了极大负担。
ReVirt在虚拟机管理器层将客户操作系统的行为记录到系统日志中,它主要记录了影响进程运行的非确定性事件(non-deterministic events):外部输入和定时器。根据日志记录来进行系统重放,从而分析攻击行为。
通过记录操作系统中发生的系统调用和进行系统重放,BackTracker能够自动定位入侵发生的序列。通过在线记录系统日志,当入侵发生后,分析日志信息从而获得入侵过程中进程和文件的依赖关系图(dependency graph)。为了在软件漏洞发布之前发现入侵,IntroVirt利用虚拟机自省机制来监控操作系统和应用程序的执行过程。在系统运行或者回放过程中,通过执行特定的脆弱性断言(vulnerability-specific predictates)来检测入侵。与之类似地,通过记录和回放系统中的相关事件,ExecRecorder基于Bochs实现了全系统回放。
上述方法都是在系统运行时记录系统日志,在发生入侵后通过从某个检查点(checkpoint)回放系统来重现攻击行为。与上述方法不同的是,Xenlog提出了一种安全地记录系统日志的方法。在获得被监控系统的日志之后,通过Xen提供的共享内存机制,将日志信息传输到一个单独的隔离域中。这种方法可以防止日志被攻击者嗅探到。同时,与网络传输日志的方式相比,它提高了传输效率。类似地,吴佳民等人提出了一个运行于Xen上的实时日志备份系统,通过该系统来传输日志信息,可以避免其在传输过程中暴露在网络上的风险。
2.3 蜜罐
蜜罐(honeypot)是通过构造类似于真实的系统环境,从而引诱恶意攻击,并分析攻击者的行为特征。目前,蜜罐是研究最新恶意代码的有效手段,从中可以提取恶意代码的行为特征。根据传感器部署的位置,蜜罐可以分为内部蜜罐和外部蜜罐。内部蜜罐部署在被监控系统内部,它能够提供丰富的语义,然而可能会被恶意攻击者所破坏;外部蜜罐部署在被监控系统外部,它对恶意攻击者透明,但是不能获取系统内部事件。
由于在物理机器上部署蜜罐通常耗时而且代价大,Honeyd是一种模拟计算机的虚拟蜜罐框架。它不仅能模拟不同操作系统的网络栈,而且可以为大量虚拟系统提供任意的路由拓扑(routing toplogy)。通过部署Honeyd可应用于蠕虫检测、垃圾邮件防御等系统安全领域。与之类似地,基于虚拟化技术,Potemkin通过内存共享(memory sharing)和推迟绑定资源(late binding of resources)技术来支持在单个物理节点上同时模拟上万个高度逼真的蜜罐,从而增强了蜜罐的可扩展性(scalability)。为了探测本地的蠕虫,HoneyStat[53]通过修改蜜罐来提高检测的准确性,同时具有低误报率。与入侵检测系统的报警信息相比,它可以提供更多的信息,例如二进制特征(binary signature)、攻击向量(attack vector)、攻击速率(attack rate)等。文献[54]比较了在User-Mode Linux和Xen上实现基于虚拟机的蜜罐,并通过实验表明,少量的传感器就能够探测到大量的入侵行为。由于单个蜜罐或者多个独立的蜜罐只能发现攻击的局部视图,而且蜜罐的部署也会带来安全风险,Collapsar通过管理专用网络中的大量高交互式虚拟蜜罐来建立分布式网络攻击拘留中心(network attack detention center)。这种方法能够提供网络攻击的多样化视图,同时便于进行管理。
由于内部蜜罐容易受到攻击,而外部蜜罐无法探测到被监控系统的内部状态,VMscope基于虚拟化实现了从蜜罐外部查看内部系统状态。由于客户端攻击急剧地增加,PhoneyC通过模拟客户端的应用(例如网页浏览器)来分析最新的客户端攻击方式。针对网络中传播的恶意代码,Amun[59]在服务器端模拟系统漏洞,从而主动收集蠕虫和僵尸网络等恶意代码的行为特征。
2.4 完整性保护
完整性是指能够保障被传输、接收或存储的信息是完整的和未被篡改的,它是信息安全的重要属性之一。目前,关于完整性保护已经有一些相关的研究工作,主要集中在保证文件完整性、内核代码完整性和虚拟机管理器代码的完整性。
文件完整性保护主要分为周期性文件保护和实时文件保护:周期性文件保护是在不同的时间点来比较文件的Hash值,从而判断文件是否被篡改,例如Tripwire,AIDE,Samhain等;实时文件保护通过拦截文件操作从而保护其完整性,例如I3FS.Quynh等人提出基于Xen虚拟机来实时地监控文件系统的完整性,并将操作文件的报告通过共享内存的方式保存在单独的虚拟机中。然而,文件监控器可能被屏蔽,同时对被监控系统不具有透明性。RFIM系统通过在虚拟机管理器层截获虚拟机中的系统调用,并对文件操作进行语义恢复。因此,RFIM系统对被监控系统完全透明。
Copilot通过一个运行在协处理器中的内核完整性监视器来探测篡改操作系统内核的恶意代码,它不需要修改被保护系统上运行的软件,即使内核完全被“攻陷”了也能够正常工作。Pioneer是在不可信的主机上实现代码执行过程的可验证性,它不需要协处理器或扩展CPU架构。SecVisor通过修改Linux来创建一个轻量级虚拟机,从而保护主机操作系统的完整性;而KOP则是通过映射动态的内核数据来保证内核完整性。此外, HUKO是基于虚拟化的完整性保护系统,从而避免对操作系统内核进行不可信的扩展。
在虚拟化得到广泛应用的同时,虚拟机管理器自身的安全问题也不容忽视。由于虚拟机管理器是在真实硬件之上运行的软件,因此近年来也出现了保护虚拟机管理器完整性的相关文献。Hypersafe[75]的目标是使虚拟机管理器具有自保护性(self-protection)。为了保证虚拟机管理器运行时的完整性,作者提出了两种技术:不可绕过的内存锁(non-bypassable memory lockdown)和受限制的指针索引(restricted pointer indexing)。不可绕过的内存锁通过设置页表中的某些位(例如NX,R/W,U/S,WP)来实现恶意程序修改时导致的缺页故障(page fault),而正常的页表更新则是通过原子操作来实现。此外,通过构造控制流程图(control flow graph)来限制指针的位置,从而保证控制流完整性。不可绕过的内存锁保证了虚拟机管理器代码的完整性,不可绕过的内存锁和受限制的指针索引保证了虚拟机管理数据的完整性。不可绕过的内存锁是直接通过扩展虚拟机管理器的内存管理模块来实现;受限制的指针索引则是扩展了开源的LLVM编译器来重新编译虚拟机管理器的代码。
HyperSentry提出了对运行时虚拟机管理器的完整性度量框架。与现有系统都是保护特权软件不同的是, HyperSentry不需要在被度量的目标底层引入更高特权级的软件,因为这将引起恶意攻击者获取系统最高特权的竞赛。与之相反,HyperSentry引入一种软件组件,它能够与虚拟机管理器隔离,从而实现对虚拟机管理器进行秘密地和实时的完整性度量。然而,秘密性是确保受到攻击虚拟机管理器不会隐藏攻击踪迹,实时性是完整性度量的必须条件。
HyperSentry通过使用外部通道(IPMI)来触发秘密地度量,并通过系统管理模式(system management mode,简称SMM)来保护代码和关键数据。HyperSentry的贡献是克服了系统管理模式的限制,提供了完整性度量代理,主要功能包括:
(1) Hypervisor的上下文信息;
(2) 完整的执行保护;
(3) 证明输出。
与之类似的是,HyperCheck是基于硬件辅助的探测篡改框架,用于保证虚拟机管理器的完整性。 HyperCheck也是利用CPU的系统管理模式来检测被保护机器的状态,并发送给远程用户。除了BIOS, HyperCheck不依赖于目标机器上运行的任何软件,而且能够抵御屏蔽和阻止其功能的恶意攻击。
2.5 恶意代码检测与分析
恶意代码是指按照攻击者的意图在系统中执行的程序,一般具有隐蔽性,不易被监控工具发现。如果将检测工具都部署在被监控的系统中,那么容易遭受到攻击。为了解决上述问题,VMwatcher提出在被监控系统外部检测内部的恶意软件。由于检测工具与被监控系统隔离在不同的虚拟机中,因此需要解决语义鸿沟(semantic gap)的问题。通过语义重构,在虚拟机外部的检测软件能够发现虚拟机中的恶意软件。利用硬件辅助虚拟化技术, Ether提出了一种外部的、透明的恶意代码分析方法。该方法利用Intel VT技术对可疑程序程序进行跟踪,同时对被监控系统完全透明。由于在虚拟机内部和外部进行观测时两者之间具有一定的时间差,如果在这段时间内进程创建和撤销很频繁,那么将会对检测结果带来一定程度的误差。因此,Lycosid系统利用统计学的方法消除了在两者之间观测带来的干扰,从而提高了检测的精确性。
现有的恶意软件检测机制都是探测恶意代码的存在,而不是动态地分析恶意代码的行为。K-Tracer是基于QEMU开发的恶意代码行为分析工具,它能够动态地收集Windows内核的执行路径信息,并采用后向和前向的切片(backward and forward slicing)技术来提取恶意代码的行为。与之类似地,Rkprofiler[83]是一个基于沙盒(sandbox)的恶意代码分析系统,它能够监控和报告客户操作系统中运行的恶意代码的行为。由于分析恶意代码的行为是一个非常枯燥而且耗时的工作,Moser等人基于QEMU实现了多执行路径(multiple execution paths)的恶意代码分析系统,从而识别出某些特定条件才会出现的恶意行为。这种方法能够在可疑行为发生时,自动地提取应用程序的全面行为。此外,Crandall等人提出基于虚拟机的虚拟时间来自动分析与时间相关的恶意代码。该方法不需要假定客户操作系统内核的完整性,同时能够探测恶意代码的定时炸弹(malware timeBOMb)。而Wang等人利用虚拟机中运行有漏洞的浏览器(vulnerable brower)来分析各个Web站点上可能存在的恶意软件,从而降低了为了保护Internet用户而监控恶意网站的开销。
2.6 安全监控架构
安全监控架构是指安全工具为了适应虚拟计算环境而采用不同的架构。Livewire采用了虚拟机自省的监控架构,即在将安全工具放在单独的虚拟机中来对其他虚拟机进行检测。Xenaccess是在Xen的管理域中实现的虚拟机监控库,它基于Xen提供的libxc和libblktap库。Xenaccess提供了高级接口,并实现对目标虚拟机内存和磁盘查看。由于Xenaccess的前提假设是操作系统内核的完整性,当恶意攻击者篡改内核关键数据结构时,检测功能会失效。而且,磁盘监控是具有一定的延迟,因此可能遭到定时攻击。Wizard是一个基于Xen的内核监控器,它能够发现高级的内核事件和低级的硬件设备事件之间的相互关系。因此,它能够安全和有效地截获应用级和操作系统级行为。
上述系统都是采用虚拟机自省机制。与之不同的是,Lares是基于虚拟化的安全主动监控(secure active monitoring)框架。它通过在被监控的虚拟机中插入一些钩子函数(hook),从而截获系统状态的改变,并跳转到单独的安全虚拟机中进行处理。因此,Lares既进行主动监控,同时通过隔离的虚拟机来提高安全性。SIM[22]则是利用硬件辅助虚拟化来实现虚拟机内部的通用安全监控框架。监控工具部署在不可信的客户操作系统中,并通过虚拟机管理器进行保护。由于事件截获在被监控的系统中,不存在语义鸿沟的问题,因此降低了监控开销。然而,由于钩子函数或者监控工具部署在被监控系统中,因此需要通过虚拟机管理器来保护其所在的内存页面。
2.7 监控的通用性
由于单个物理节点上同时运行多个不同类型的虚拟机,虚拟机自身具有的动态性,虚拟机可以动态地创建、撤销以及在各个物理平台之间进行迁移。传统的监控工具针对的目标系统是相对稳定的,而在虚拟化架构中,监控工具需要对各种虚拟机进行有效地监控。因此,现有的安全监控方法不能满足要求,需要采用通用的监控机制保证有效性。
目前,所有上述监控工具都是针对特定的客户操作系统的类型来实现特定的安全功能。然而单个物理节点上虚拟机中的客户操作系统是多种多样的(例如Linux,Windows等),当某个物理节点上创建一个新的虚拟机,或者从另外一个物理节点上迁移新的虚拟机时,监控工具就会失效。因此,现有的监控工具不能满足监控通用性的需求。
文献[89]首次提出了基于虚拟化安全监控的通用性问题,同时提出了一种基于驱动的通用监控系统——VMDriver。VMDriver通过两种新的设计策略来实现细粒度监控:
(1) 将客户操作系统中的事件截获和语义恢复相分离。事件截获在虚拟机管理器层,而语义恢复在管理域中;
(2) 语义恢复通过管理域中的监控驱动来实现。采用Linux中设备驱动的方式,语义恢复以内核模块的方式加载到管理域中,从而实现动态地屏蔽虚拟机中客户操作系统的差异性。监控驱动与虚拟机中客户操作系统的类型和版本相对应,并为上层的监控工具提供统一的接口,从而保证了监控系统的通用性。
图5说明了VMDriver系统的总体架构。事件截获模块位于虚拟机管理器层,语义恢复模块位于管理域的内核态。事件截获模块实现对虚拟机中客户操作系统发生的系统调用进行拦截。不同的形状(例如椭圆、矩形、菱形)分别代表了不同类型和版本的客户操作系统。语义恢复模块与虚拟机中客户操作系统的类型相对应,因此用不同形状来表示。语义恢复模块以内核模块的方式进行加载,从而动态地对新的虚拟机进行有效地监控,因此也被称为监控驱动。调度管理模块只是对各种监控驱动进行管理,例如加载、卸载等。
图5 VMDriver系统架构
VMDriver系统的工作流程:用户态监控工具需要对某个虚拟机进行监控,通过调度管理模块加载相应的监控驱动。当虚拟机中发生系统调用时,虚拟机管理器中的事件截获模块进行拦截,并向相应的监控驱动报告。监控驱动根据内核数据结构重构出被监控系统中的操作系统级语义,并传输给用户态监控工具。通过这种方式,监控驱动屏蔽了虚拟机中客户操作系统的差异性。
3 展望
综上所述,现有的工作主要集中在利用虚拟机管理器来保护目标虚拟机中的钩子函数(内部监控)或者从目标虚拟机外部查看其内部状态(外部监控),并针对不同类型的安全工具都进行了相应的研究。然而,现有的研究工作主要存在以下两个方面的不足:
(1) 现有研究工作的前提条件过强,在实际情况中会存在某些问题
现有的研究工作都是假定虚拟机管理器和管理域自身是安全的,事实上,虚拟机管理器是一层运行在真实硬件之上的系统软件,其自身也可能存在一定的安全漏洞。虽然与操作系统相比,虚拟机管理器由于其代码量少和功能简洁而具有较高的安全性,但是根据CVE网站已经公布出来的漏洞显示,VMware ESX存在23个漏洞,Xen存在6个漏洞,这与操作系统本身的漏洞相比而言是相当少的。但是,虚拟机管理器作为整个虚拟计算平台的基石,一旦其出现某种安全问题,那么将会导致整个虚拟化平台上的其他虚拟机遭到非常严重的后果,因此其危害性也就更大。此外,管理域是一个完整的系统环境(包括操作系统和应用程序),平台管理员可以利用管理域中的管理工具来操作虚拟机,例如创建、暂停、重启、迁移等。由于管理域比较庞大而且具有较高的权限,这也会给虚拟计算环境带来新的安全风险。例如,恶意攻击者通过入侵管理域从而控制整个虚拟化平台。相对于破坏虚拟机管理器,这种攻击方式难度更低而且不易于发现。
(2) 安全监控与现有的安全工具的融合
现有的研究工作都是利用虚拟机管理器实现某种安全功能,例如入侵检测、恶意代码分析等。目前,学术界和工业界已经开发或使用了大量安全工具,这些安全工具都是基于系统级语义的。安全监控没有提供统一的接口标准,现有的安全工具不能对其直接调用。因此,如何将基于虚拟化的安全监控与现有的安全工具进行融合,是主要存在的问题。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:基于虚拟化的安全监控
本文网址:http://www.toberp.com/html/consultation/1083958739.html