基于虚拟机的实时文件保护机制研究

更新时间:2023-08-27 01:18:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

华中科技大学

硕士学位论文

基于虚拟机的实时文件保护机制研究

姓名:蒋雅利

申请学位级别:硕士

专业:计算机系统结构

指导教师:蒋文斌

20090501

摘 要

随着虚拟化技术越来越广泛的应用,各种针对虚拟机的攻击工具也层出不穷,尤其是保存着用户大量重要数据的客户操作系统的安全性令人担忧。传统的文件保护位于目标操作系统之中,很容易受到内核态攻击工具的攻击,其软件本身的安全很难得到保证。另外,由于虚拟化环境下,一台主机上同时运行多个操作系统,传统的文件保护需要在每台虚拟机上冗余地安装各自的文件保护系统,这对系统资源造成了很大的浪费,也严重地影响了系统的性能。

基于虚拟机的实时文件保护机制有效地解决了上述问题。首先,由于该机制的关键模块在特权虚拟域中实现,与目标虚拟机有效隔离,不易受到内核态攻击工具的危害。其次,由于特权虚拟域有较高的管理权限,非特权虚拟域中的恶意软件无法感知到特权虚拟域中文件保护系统的存在,且相比在非特权虚拟域中实现能够更容易检测出恶意攻击的存在。该机制结合虚拟机分离设备驱动模型,利用特权操作系统中用户态设备管理工具实现对客户虚拟机中文件操作捕获,不修改虚拟机监控器和客户操作系统的代码,保证了其代码的完整性。最后,该机制实时获取客户操作系统中文件操作的相关信息,并在特权虚拟域中利用文件沙箱对非特权虚拟域的客户操作系统中文件实现有效地保护,保证了客户操作系统重要文件的安全性。总的来说该机制实现了以下四个特色:隔离性、透明性、非侵入性和实时性。

测试表明,基于虚拟机的实时文件保护机制能够有效地保证客户操作系统中指定文件的安全性,且对文件系统的压缩和解压缩速度以及文件的读写速度影响较小,并能够适应主机中虚拟机的动态部署、创建和销毁,同时对多个客户操作系统中的指定文件实施保护。

关键字:文件保护,半虚拟化,语义解析,文件沙箱

Abstract

With the development of virtualization technology, file protection in virtual machine (VM), especially in guest OS, becomes more and more important. Traditional host-based file protection system resides the critical modules in monitored system, which is easily explored and destroyed by malwares. Moreover, in order to protect the multiple operation systems running on the same platform, it is necessary to install independent file protection system (FPS) for each of them, which greatly wastes computing resources and brings serious performance overhead.

A novel VM-based real-time file protection system, named VRFP, is proposed to solve these problems. Firstly, virtual machine monitor (VMM) introspect all file operations of guest OS; then, semantic gap between disk block and logic files is narrowed by blktap; finally, a virtual sandbox is implemented in privileged domain to prevent protected files in guest domain from modifying illegally. The approach is highly-isolated, transparent and without modification on virtual machine monitor and guest OS. The experimental results show that the presented system is validate and of low performance overhead.

The results of tests show that virtual machine based real-time file protection mechanism can effectively ensure the specified files in guest OS, and has low performance overhead to the speed of compressing and decompressing files and the file reading and writing speed in the target OS. Besides, it can adapt to the dynamic deployment of virtual machine, creation and destroy, providing the file protection for several virtual machines at the same time.

Keywords: file protection, para-virtualization, semantic interpretation, file-sandbox

独创性声明

本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。

学位论文作者签名:

日期: 年 月 日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

保密□ ,在________年解密后适用本授权书。

本论文属于

不保密□。

(请在以上方框内打“√”)

学位论文作者签名: 指导教师签名:

日期: 年 月 日 日期: 年 月 日

1 绪论

本章首先对基于虚拟机的实时文件保护机制的研究背景作简要的叙述,接着详细讨论国内外在传统架构和虚拟机架构下文件保护方面的研究概况,然后陈述本项目所在课题的研究背景和主要研究内容,最后简单描述文章的框架和组织结构。

1.1 问题提出

文件是操作系统的重要组成部分,用户的机密数据或者系统的重要信息都以文件的形式保存,对系统重要文件的误操作或者病毒和木马等恶意程序对文件的入侵或破坏,都会对系统造成难以想象的后果,因此文件保护无论对系统还是对用户都十分重要。由于所有的应用程序都是建立在操作系统内核完整性和正确性的基础上

[1],操作系统内核文件的保护无疑是文件保护最重要的组成部分之一,其完整性是系统正常运行的必要条件。恶意用户利用操作系统或者应用程序的弱点可以窃取系统中的重要数据,甚至会导致系统无法运行,无法正常提供服务[2]。

当前对文件的保护主要保证文件的保密性、完备性、可用性和可还原性,这包含两个方面:一是物理安全性,保证宿主机器能够正常工作,二是逻辑安全性,保证计算机中数据安全无损坏。保密性和完备性是防止非法用户对文件内容的窃取和修改。可用性是保证文件在一定时间和范围内可以被使用。可还原性是文件内容发生难以避免的损坏时,还能够轻易还原到正确的状态。各种加密和存储技术较好地保障了文件的保密性和可还原性,本文主要研究操作系统中文件的可用性和完备性。 传统的文件保护机制主要是基于宿主机的,即文件保护系统位于被保护的操作系统(称为目标系统)之内,这样的好处是,可以轻易地获得操作系统内部程序的执行状态和文件的操作信息。但是置于目标操作系统之内会导致文件保护系统本身的安全性难以保证。一方面,位于目标系统之内的文件保护系统与恶意程序位于同一运行环境之内,它的存在很容易被恶意程序反探测到,恶意用户在获取操作系统管理权限之后,可以轻易避开文件保护系统的侦测,甚至破坏文件保护系统导致其

另一方面,位于目标系统之内的文件保护系统一般是建立在操作系统本身安失效[3]。

全的基础之上的,一旦操作系统本身的完整性被破坏,其保护功能将大打折扣,甚至不能运行[4]。

为了保证文件保护系统本身的安全性,必须将它从目标操作系统中“拽”出来,将其放置于一个与目标操作系统完全隔离的环境中,使得文件保护系统的运行状态不会受到目标操作系统的影响。但是这将带来另外一个问题,位于目标操作系统之外的文件保护系统将很难获取到操作系统内部的执行状态[5],包括文件,进程等重要信息,缺少这些关键信息[6-7],文件保护系统同样无法正常运行。利用虚拟化技术可以让文件保护克服这个进退两难的问题。

实现在一个物理机器上运行多个操虚拟化技术[1]能够充分利用底层的硬件资源,

作系统,每个操作系统中运行各自提供服务的应用程序。虚拟机监控器(Virtual Machine Monitor,VMM)[9-11]将多个虚拟机进行有效地隔离,同一物理平台上的虚拟机之间不会相互干扰,如图1.1所示[11]。从系统架构看,VMM是一个位于硬件和上层操作系统之间的一个管理软件,它为每个客户操作系统虚拟出一套虚拟硬件设备包括CPU、内存、硬盘、网卡等[12],并负责管理多个虚拟机之间的调度和通信。VMM提供了比传统操作系统进程间隔离更强的隔离性[13],保证虚拟机之间独立运行不会相互影响。虚拟机优越的性能使其在商业界和学术界得到了广泛的关注和应用。

……图1.1 虚拟机的体系结构

虚拟机良好的隔离性[14]和VMM的较高层次的管理权限[15],使位于目标操作系统之外的文件保护成为可能。对于虚拟机本身来说,客户操作系统(Guest OS,GOS)中的文件保护也存在着重大的意义。由于提供服务的应用程序和用户的重要文件都位于客户操作系统中[16],目前对客户操作系统中文件实行保护一般是通过在每个客户操作系统中安装各自的文件保护系统。由于一个物理平台上有时甚至同时运行上百个虚拟机,在这种虚拟机数目比较大的情况下,在每个客户操作系统上都冗余地安装文件保护系统势必会给虚拟机的性能带来很大的负担,也对系统计算资源造成很大的浪费。所以,从虚拟机本身的性能和资源节约角度来讲,也需要将文件保护

系统从目标操作系统中“拽”出来,一种既节约成本且行之有效的位于目标操作系统之外的新型文件保护方法应运而生。

1.2 国内外研究现状

1.2.1传统的文件保护机制

Tripwire[17-18]是一个用于检测文件完整性的检查工具,包括策略库和数据库。策略中指定了待保护的文件和目录以及检验规则,Tripwire设定所有对/root、/bin和/lib目录下文件的修改都属于非法操作。数据库用于存放文件的初始的检验值。其实现原理如图1.2所示。Tripwire可以分为两个工作模式:初始化模式和检测模式。在初始化模式下,Tripwire会对需要监视的文件哈希生成检验值(快照),并加密后存入数据库中。在检测模式下,Tripwire对文件生成新的检验值,并将其于数据库中的检验值比较,如果相等,则可以判断文件未被修改,否则判断文件已被修改。管理员可以根据检测结果判断系统是否已被入侵。Tripwire存放的快照内容包括:文件大小,inode,操作权限等属性,由于该快照是针对文件整体的,恶意用户对这些属性或者文件内容的丝毫修改都会被Tripwire检测出来。

图1.2 Tripwire的工作原理

从上面对Tripwire的分析,容易看出以Tripwire为例的传统的文件保护机制主要存在以下的三个缺陷:

1. 延迟探测:由于以上传统的完整性检测都是通过周期性检查文件的哈希值或属性值。由于每次检查前都要生成文件的数字签名,系统的开销大、性能低、延迟长,入侵者在周期的延迟时间内有机会逃避检测并渗透系统。

2. 维护开销:由于文件的检验值等重要的文件信息都保存在数据库中,是检查

入侵的关键所在,所以数据库的安全性是必须保证的,维护数据库也将给系统带来不小的性能开销。

3. 易被攻击:首先,Tripwire对文件的检验是建立于与初始值比较之上的,如果初始值是已经被篡改后的文件,那么文件保护就可能会失败;另外,文件保护软件与恶意代码运行在执行空间内,软件本身的可靠性难以保证。恶意代码有可能通过获取系统root权限隐藏自己的痕迹进而破坏文件保护系统[19]。

1.2.2基于虚拟机的文件保护机制

近年来,传统环境下的文件保护已经取得了很大的进步,但是仍然存在很多局限性,虚拟化技术给我们创造了更多的发展空间和巨大的便利,各种针对不同应用的安全机制被提出用于保护系统内核和用户文件的完整性[20-24]。

在文献[25]中提出了一种基于虚拟机的访问控制模型UCONKI,该模型提出了一种策略规范和体系结构,其目的在于提供一种灵活细致地保护操作系统的内核的完整性,有效地预防和检测内核态攻击工具rootkit恶意攻击,除此以外还提供对操作系统普通应用程序的保护。UCONKI模型包括三个主要模块:执行器(VME),特征库(AR),决策点(PDP)。VME用于截取虚拟机中发出的访问请求,控制主客体的特征出入栈和实施访问策略。AR用于储存主客体的特征及对主客体的特征进行压栈。PDP根据策略库传递授权决策。为了提高性能, UCONKI还使用AVC作为访问决策的缓冲区。

UCONKI 的工作流程如下:首先一个由主体(虚拟机中的一个进程)发出一个访问请求,位于VMM中的VME捕获到这个请求后,查询访问矢量缓冲区(AVC),如果缓冲区存在一个决策且上次访问后主客体的特征值都没有发生改变,则采用该决策,并将该决策提交给VME执行;否则VME将这个请求和特征提交给PDP。PDP根据主客体的特征值做出访问控制决策,最后决策被提交给VME并在虚拟机执行环境中实施。

UCONKI主要的缺陷在于大部分的实现模块在VMM中实现,修改了大量VMM的代码,使得VMM变的很庞大,增加了系统开销,对系统的性能产生很大的影响。VMM作为系统任务控制模块的一部分,对VMM的修改也大大降低了整个系统的安全性和稳定性[26]。

XenFIT[27]是一个实时检测DomU中文件完整性的工具,它可以实时监控到

DomU中的入侵行为并向Dom0报警。XenFIT和 Tripwire等传统保护方法不同,无需建立或者更新数据库。XenFIT将安全策略和检测进程置于一个安全的虚拟机中,即使整个虚拟机被攻陷,XenFIT还是可以正常工作。XenFIT的主要缺陷在于需要修改客户操作系统的代码,需要设立检查点,且性能开销是未运行XenFIT的十倍以上。 XenAccess[28]主要目的是为开发人员提供对运行在Xen上的客户操作系统的监控库,主要包括对虚拟内存和虚拟磁盘的监控。它的目标在于为监控的应用程序例如入侵检测[29-31],文件的完整性校验,蜜罐系统[32]等提供安全高效的监控接口,以方便开发人员的后期工作,XenAccess没有包含任何功能性的模块,它没有做任何检测或者保护的工作。

XenAccess对磁盘文件的检测流程如图1.3所示[33],首先客户操作系统中发出一个系统调用mkdir,这个系统调用被系统内核转换称为底层操作并传递给后端驱动;接着块数据流在被tapdisk驱动[33][33]处理前被封装并传输到接口管道中;从管道中读出块数据并插入哈希表;如果哈希表中存在包含/tmp的X块,则对X块进行解析和排序;对新旧版本的X块的哈希值进行比较,根据比较结果判断目录的创建与否。

图1.3 XenAccess对于虚拟磁盘的监控流程

由于XenAccess只是对文件目录的大小进行比较,所以它只能监测到磁盘文件和目录的创建和删除,对于文件的读写的监控还没有实现,而且XenAccess并没有对磁盘文件提出一个有效的保护方法。这里所提出的基于虚拟机的实时文件保护机

制就是基于XenAccess的磁盘监控的基础之上提出的,但是该机制的原型系统和XenAccess相比有很大不同,主要表现为以下两点:

1. XenAccess只对文件和目录的创建和删除做到实时的监控,这对于文件的实时保护来说意义不大,基于虚拟机的实时文件保护机制中文件的监控部分能够做到对文件的修改操作的实时捕获,包括文件修改操作的详细信息,包括文件名、所在客户操作系统、文件操作、修改时间、修改文件的用户、进程号和进程名称等。

2. XenAccess没有实现对文件内容的保护,XenAccess提供了一个监控文件目录创建和删除的接口,并没有提供对系统用户来说实现实际的功能,例如文件保护,入侵检测等。基于虚拟机的实时文件保护机制中,主要针对客户操作系统中内核文件和用户重要文件的安全性,在Dom0中通过文件沙箱对其实现有效地保护。 根据以上讨论和分析,一个完美的文件保护系统(FPS)应该具备以下几个特征:

1. 非入侵性:不修改目标操作系统内核模块或者VMM的代码,首先可以防止非确定错误(如兼容性问题或者添加的代码本身有错误)的发生;其次保证了系统内核和VMM本身的完整性和高效性;另外,还使得FPS能够更广泛地应用于多种操作系统之上。

2. 实时性:能够实时检测到目标操作系统中对文件的操作,并且能够对相应的操作做出决策判断,采取适当的措施实时地保证文件的安全。

3. 透明性:对于目标操作系统和其中的恶意代码应该是透明的,防止攻击者反探测到FPS,有碍于文件保护工作的实施。

4. 隔离性:与目标操作系统及其中的恶意代码隔离,保证恶意代码无法攻击FPS,即使当操作系统被攻陷时,FPS仍然能够正常工作。

1.3 课题背景与研究内容

本课题来源于国家研究重点基础研究发展计划973项目“计算系统虚拟化基础理论与方法研究” (No.2007CB310900)的课题五“虚拟计算系统安全可信机制研究”,本课题同时得到了国家自然科学基金(No.60803114)的资助。该课题面向虚拟计算系统的运行环境,主要研究单个宿主机上虚拟机之间的安全隔离和故障隔离机制,保证它们的计算性能不会相互影响,其中一台虚拟机的入侵不会影响到其他虚拟机的正确运行,某一虚拟机故障的产生不会影响其它虚拟机的正常运行;研究虚拟机之间的安全访问机制,实现多虚拟机对软硬件资源的安全高效共享。

根据该课题的研究内容和目标并结合虚拟机中文件存储的特点,本文以提高虚拟机中客户操作系统的安全性为出发点,在深入理解和分析国内外文件保护研究现状的基础上,针对当前流行的Xen的半虚拟化结构提出了一种与传统文件保护和访问控制方法不同的,位于目标客户操作系统之外的,实时的文件保护机制。并通过对客户操作系统中文件操作的解析,为在虚拟机之外获取客户操作系统中磁盘操作信息提供了一种行之有效的途径。基于虚拟机的实时文件保护机制的关键在于如何在Dom0中实时地获取DomU中客户操作系统中文件的操作信息,并解析出相关文件操作的语义以及如何适应虚拟机的动态部署,包括虚拟机的创建、迁移和销毁。 本文研究和分析了基于虚拟机的实时文件保护机制(VRFP)并实现了其原型系统(VRFPS),主要的研究内容包括:

1. 文件保护机制的调研和分析。详细分析与研究了传统文件保护和访问控制机制,调研了虚拟计算环境的特殊性并设计了基于虚拟机的实时文件保护机制。

2. 文件分类策略的提出。根据文件的重要程度和安全需求的不同,本文将操作系统中所有文件分为三类:重要文件,敏感文件和普通文件,并给出了量化的定义和描述,对不同类别的文件采用不同的保护策略。

3. 对客户虚拟机中文件操作的截获。研究和分析了Xen半虚拟化前后端分离设备驱动[34]和磁盘异步驱动tapdisk的研究,基于Xen的用户态的块设备管理工具blktap,实现了对客户虚拟机中文件操作的捕获;

4. 底层操作语义的解析。由于虚拟机的隔离性,Dom0和DomU之间存在着语义差距,在Dom0中捕获到的磁盘底层操作不能直接决策判定。VRFP利用VMI(Virtual Machine Introspection)[35-36]技术消除了Dom0和DomU之间的语义鸿沟,由磁盘底层操作解析出相关操作的文件名称、操作类型、文件修改时间、进程号、进程名和用户名;

5. 文件沙箱的设计与实现。为了防止攻击者利用系统和程序漏洞对系统中的重要文件修改和破坏,VRFP设计并实现了文件沙箱,有效地保证了DomU中重要文件的安全性。

与现有的文件保护机制相比,基于虚拟机的实时文件保护机制的关键模块位于目标操作系统之外且不修改客户操作系统内核和VMM,有效地保证了自身的安全性且不易遭受rootkit等内核态的攻击工具的探测和影响,并且实现了同时对多个客户操作系统中指定文件目录的实时监控和有效保护,减少了系统的开销,节约了由于

文件保护系统冗余安装造成的资源浪费。

1.4 文章组织结构

本文的各章节的内容组织安排如下:

第一章概述了文件保护的重要性和基于虚拟机的实时文件保护机制的研究背景,接着论述了当前国内外的研究现状包括传统的文件保护机制以及虚拟机架构下的文件保护机制,并分别论述了他们的优缺点。最后阐述项目背景以及研究内容和组织结构。

第二章首先阐述了VRFPS的父系统——基于虚拟机的安全防御系统(VMFence)

[37]的总体结构,并从VRFP的设计思路,VRFPS的体系结构与功能模块,以及VRFPS的工作机制和处理流程三个方面作了详细的说明。最后,对实现VRFP的原型系统VRFPS存在的关键问题和难点作了简要的分析。

第三章详细论述了VRFP的主要实现技术。首先阐述了VRFP中文件的分类保护策略,接着说明了Dom0是如何捕获到磁盘操作的数据流并解析出DomU指定目录中的文件操作,最后说明了Dom0中对文件的隔离保护结构——文件沙箱的体系结构和工作流程。

第四章首先根据虚拟机中文件保护的特点给出了系统测试的相关标准,然后从VRFPS的功能和性能两个方面对系统进行详细地测试,最后对测试结果作了相应的分析和评价。

第五章对本文所作的工作进行了总结,并指出未来的工作方向。

最后是致谢和参考文献。

2 基于虚拟机的实时文件保护机制的设计

本章首先对基于虚拟机的实时文件保护系统的父系统基于虚拟机的安全防御系统进行简单说明,接着讨论基于虚拟机的实时文件保护机制的设计思路,然后对其体系结构和功能模块进行详细地阐述,并且从用户的角度论述该机制中实时文件保护的工作机制和处理流程,最后指出实现该文件保护机制所需要解决的关键问题和解决思路。

2.1 基于虚拟机的安全防御系统简介

基于虚拟机的安全防御系统(VMFence)[37]是在Xen上实现的基于主机和网络的安全防御系统,其目的是为虚拟计算平台提供实时网络入侵检测和入侵响应机制,以及基于主机的实时文件保护机制。VMFence的应用场景如图2.1所示[37]。

图2.1 VMFence的应用场景

根据系统的功能需求,VMFence的总体结构如图2.2所示,主要包括三个子系统:基于虚拟机的网络入侵检测系统,基于虚拟机的网络防火墙系统,实时文件保护系统,这三个子系统主要针对虚拟机安全防御的三个不同阶段进行保护。

1. 基于虚拟机的网络入侵检测系统:在虚拟计算环境的每个节点上,Dom0具有管理和控制权限。在Dom0中,虚拟网桥(Virtual Bridge)能够监控到所有的DomU的网络数据流量。因此所有的控制和管理功能都在Dom0中实现,并与其他DomU

相隔离。由于每个虚拟机上的服务具有不同的类型和安全级别,需要为每个虚拟机配置不同的入侵检测规则。在分布式环境下,单个虚拟机可能在多个物理节点之间自由地迁移,而传统检测工具无法适应这种变化。根据每个虚拟机的服务类型和安全级别,VMFence提供对整个物理平台上的多个虚拟机分别配置检测规则,进行并行检测。同时,当虚拟机的状态发生变化时(创建、删除、迁移等),检测工具能够及时进行相应。当检测到可疑的网络数据包时,通知管理员防御更新规则。

图2.2 VMFence的体系结构

2. 基于虚拟机的网络防火墙:虚拟计算环境下,为每个客户操作系统配置网络防火墙,是保护客户操作系统的一个重要措施。防火墙对流经它的网络通信进行扫描,过滤掉一部分网络攻击,避免其在目标计算机上被执行。防火墙还可以关闭不使用的端口,禁止特定端口的流出通信,封锁特洛伊木马,禁止来自特殊站点的访问,从而防止来自不明入侵者的通信。在虚拟机的特殊架构下,主要针对防火墙策略发布机制进行修改,VMFence的网络防火墙的工作包括以下几点:首先,用户可以配置默认的防火墙规则,并随着虚拟机的启动自动加载这些规则;其次,在虚拟机的运行中,用户可以通过友好的图形界面手动配置一些动态的规则;最后,也是虚拟机架构独特之处,即当位于Dom0的入侵检测系统检测到攻击时,可以自动地生成防火墙规则,同时将此规则通过共享内存的通信方式发送给DomU,保证了通信的速度和可靠性,DomU的守护进程自动将接收到的新规则添加到防火墙规则库中。

3. 基于虚拟机的实时文件保护子系统(VRFPS):位于Dom0中的VRFPS根据管理员的配置的策略文件,对其中指定客户操作系统中的文件或目录进行实时监控并确保用户重要文件的安全性,利用blktap块设备管理工具[38]实现对DomU中文件操作的实时捕获,并在Dom0中实现文件沙箱对重要文件实施保护,具体的功能模块和实现机制将在后续章节详细讨论。

2.2实时文件保护机制设计思路

基于虚拟机的文件保护机制结合了传统文件保护机制和虚拟机技术的优点,为用户保存在客户虚拟机中的重要文件提供有效保护,同时也对操作系统的关键文件作了适当的保护。从设计的观点来看,VRFP应从以下两点来考虑:

首先是如何从客户操作系统中获取文件操作的问题,Xen中为客户虚拟机访问虚拟磁盘提供了一系列访问授权机制。对于客户虚拟机来讲,他不能直接访问物理设备,如磁盘,网络设备等,而是通过前后端设备驱动相互通信来实现的,所以要实现基于虚拟机的实时文件保护机制必须从Xen分离设备驱动模型入手。

其次,为了防止对系统计算和安全性能造成较大的影响,VRFP最好在Dom0的用户态中实现且能够实时地检测到文件的操作信息。Xen的blktap块设备管理工具集在用户态实现了对DomU磁盘操作的管理,为VRFP捕获磁盘操作信息提供了很大的便利。

下面来分析一下Xen的分离设备驱动模型和Xen提供的用户态的磁盘管理工具集blktap。

2.2.1分离设备驱动模型

Xen的半虚拟化设备模型[9-10,34]是一种分离设备驱动(Split Device Driver)架构,分为前端设备驱动 (FrontEnd Device Driver)和后端设备驱动 (BackEnd Device Driver),如图2.3所示[34]。前端设备驱动为DomU中的客户虚拟机提供虚拟硬件设备,它不可以直接访问真实硬件,只能通过事件通道共享内存等通信机制将读写请求提交给Dom0中的后端设备驱动。在收到前端的请求后,后端设备驱动验证该请求的合法性,并将请求提交给本地设备驱动执行。请求操作执行完成后,本地设备驱动将返回一个完成信号给后端驱动,由后端驱动提交给前端通知应用程序操作已完成。在块设备的访问过程中,后端设备驱动作为前端设备驱动和本地驱动的中转

站。Xen为前后端设备驱动的通信提供一套完整的机制支持,包括授权表(Grant Tables),事件通道(Event Channel),I/O描述符环 (I/O Descriptor Rings),以及XenStore和XenBus。

授权表是一种页面访问授权机制,在前后端需要传输大量数据时使用。通常情况下,每个虚拟机属于自己的页面,使用授权表可以将一个虚拟机的内存页映射到另一个虚拟机的内存空间供其自由访问。访问完成后,该虚拟机将收回授权。 事件通道是Xen提供的一种异步的域间事件通知(Event Notification)机制。在Xen中,事件通道机制类似于传统操作系统中的硬件中断,通过一位来表示,当某个事件发生时,与该事件对应的位从0变为1。

Dom0

图2.3 Xen的半虚拟化分离设备模型 I/O描述符环是位于虚拟域共享内存区中的环状消息队列,由两对生产者-消费者(Producer-Consumer)指针实现,其结构如图2.4所示[34]。当前端驱动提交一个访问请求时,该请求被放入请求生产者列表中,当后端得到返回结果,将该结果放入响应生产者列表中等待前端读取。在请求和相应的过程中,前端和后端轮换生产者和消费者的角色。I/O描述符环为实现了前后端的异步通信,提高了硬件设备的访问效率。

XenStore是一个域间共享的存储系统,由Dom0管理、维持,并通过共享页面的方式读写。XenStore中存储了每个虚拟机的配置信息,包括:虚拟域号、虚拟域

名、启动时间、虚拟机状态等。XenStore作为前后端设备通信的中介,保证其通信的顺利完成。

请求消费者

请求生产者

响应生产者响应消费者

请求生产者(Request Producer):由客户虚拟机更新的共享指针

请求消费者(Request Consumer):Xen中的私有指针

响应生产者(Response Producer):由Xen更新的共享指针

响应消费者(Response Consumer):客户虚拟机中的私有指针

图2.4 I/O描述符环的结构

XenBus相当于Xen的数据交换中心,所有常规的虚拟设备在初始化时都必须向XenBus注册。在半虚拟化的构架中,XenBus作为前后端通信的安全通道。

2.2.2用户态设备管理工具集

上节中讨论到Dom0中的后端设备驱动接受前端发来的操作请求,并将请求直接发向磁盘。从Xen3.0.3之后,分离设备模型引进了一种新的体系结构,如图所示。

利用它可Blktap[28,38]是Xen提供的一个位于用户空间的提供磁盘I/O接口的工具集,

以将磁盘驱动实现成为用户空间的应用。通过用户层接入后端设备驱动即blktap,可以直接管理磁盘活动,且只有很小的性能损耗。这个结构改变从本质上增加了磁盘驱动发展的灵活性,很大地简化了磁盘驱动,且同时允许多种强大功能的实现。由于blktap具有的很好的性能,被Xen用来代替文件系统镜像的环回驱动。Blktap机制包含了一个用户级函数库和一个运行在Dom0内核中的驱动,作用相当于Xen的后端设备驱动。通过这些工具,blktap可以将DomU中的虚拟块设备在Dom0的用户层实现为原始分区,文件,网络等。位于用户空间的一个字符设备协同位于Dom0内核blktap驱动利用共享环,将所有来自客户虚拟机的磁盘I/O请求传送给用户态的守护进程tapdisk。每个运行的磁盘被映射到一个单独的设备结点上,每个磁盘进程可以在需要的时候和地方实现各自的块设备。用户空间驱动是通过基于定向输入输

出的调用实现的,并保留了现有的后端驱动中无缓冲的批量异步请求的机制,并提供了一种简单的异步虚拟磁盘接口,使得新建磁盘的实现变得很容易。

与Xen分离设备驱动结构相似,Blktap也包含了以下三个部分[33]: 位于Dom0内核的blktap驱动、位于DomU的前端驱动和连接blktap驱动与前端驱动的XenBus,如图2.5所示。

图2.5 blktap的体系结构

Blktap工作流程如图2.6所示,具体步骤如下:

步骤1. 当Xend启动时,用户层守护进程blktapctrl也随之启动。当一个客户虚拟机启动时,初始化XenBus。每当blktapctrl收到一个新建虚拟磁盘的请求,将同时创建一个tapdisk进程,一个字符设备和两个用于通信的命名管道。

步骤2. 打开字符设备,将共享内存映射到前端环(blktapX)。Tapdisk打开系统镜像文件并将镜像的大小信息发回给blktapctrl。以上这些初始化活动完成后,tapdisk在两个命名管道上执行指定的系统调用。然后,tapdisk检查标志位(tap_fd),如果已被设置,则从前端环读取新的请求。

步骤3. blktap 驱动根据查询I/O环返回的事件类型通知相应的blktapctrl,并分别唤醒tapdisk进程。Tapdisk从前端环中读取请求,如果是同步的I/O请求,则立即回应请求。如果是异步,批量请求将被提交给Linux AIO来执行相应的系统调用。如果是异步的情况,I/O请求完成后将会使用非闭塞的系统调用io_getevents。 步骤4. 完成后的请求信息放置在前端共享环中,tapdisk进程通过ioctl系统调用通知blktap驱动。利用Xen分离设备驱动机制,将请求的数据返回给前端的客户虚拟机。

使用blocktap的最主要的好处是能够使客户操作系统读写块设备驱动更加快速便捷,而且在很多其他方面用户层的后端驱动也能发挥很大的优势,特别是在以下几个方面:

图2.6 Blktap机制的工作流程

1. 从用户态访问文件系统镜像时,可以避免刷新回环驱动中的脏数据页产生的一系列问题,尤其是写网络文件系统镜像大量数据时不会引发OOM killer机制[39]。

2. 磁盘守护进程tapdisk使得在用户空间对块资源的监控变得容易,而且基于进程粒度的服务质量技术(磁盘调度和相关工具)可以被平凡地应用到块设备。

3. 在操作系统用户态实现对磁盘的监控可以方便地利用网络库,压缩工具集,点对点的文件共享系统等用户态工具来为前端构建更多复杂的块设备后端驱动。 VRFP中通过观察底层的磁盘流量,可以提供丰富和完全的访问数据。同时还包含了一个推理引擎,可以根据截获的低层次的磁盘流量动态推测出高层次的文件系统操作。出于这个目的,VRFP利用了blktap的结构,因为它简化了操作截获机制,且避免修改VMM,保证了VMM的干净,完整。该机制中最大的挑战是推理引擎必须克服低层和高层视图之间的语义差异,并以面向文件系统的操作将作为输出,这就需要结合操作系统的知识和动态推理技术。截取机制,基本等同于观测系统的内

本文来源:https://www.bwwdw.com/article/unmi.html

Top