虚拟化为那些尽力使服务器数量跟上业务压力增长的企业管理人员及工程师们创造了巨大的实用价值。它使硬件资源得到最大程度的利用,同时让企业设计及实施新方案的过程变得更为灵活。然而,虚拟化的逐步推进也带来了一些相关的安全问题。
微软的服务器虚拟化技术能够很容易地通过正确的规范及处理方式来确保其安全性。而相关应用标准与IT专业人士的有效努力则可以进一步将安全体系打造得固若金汤。
基础知识
在我们开始之前,首先需要确定一点,也就是我们已经足够了解本文中将会涉及到的微软服务器虚拟化技术。请看图一。
图一:微软服务器虚拟化组件
主机操作系统
一个虚拟化的硬件平台需要一套由系统工程师加装了虚拟化组件的基础性操作系统(即OS)。在Windows Server 2008 R2环境中,所需要的是64位的标准化服务器、企业或者数据中心。总之要么是一套标准化的装置、要么是一套具备服务核心的执行设备。在本文稍后的部分中,我们会看到大家选择的执行设备如何对安全性造成影响。
Hyper-V
虚拟机上始终具备一套虚拟机管理系统,它记录着主机服务器的硬件信息。微软将这套管理系统命名为Hyper-V。这是一套非常小巧的底层工具,用以完成下列任务(详见图二)
◇ 优化虚拟机的中断调用指令
◇ 对共享内存进行管理
◇ 一般来说,它使虚拟机无需通过主机操作系统即可实现对系统资源的调用,同时也管理着配置中指定分配给操作系统的资源
它绝对不会运行除上述功能以外的任何其它进程。举例来说,它不会运行第三方驱动程序。由Hyper-V所提供的小规模攻击防御层本身可以被视为一种不折不扣的安全掌控机制。Hyper-V及其相关管理文件被作为Hyper-V服务的一部分安装在主机上。
图二:微软虚拟化服务器(简称微软MSDN,2011)
分区
各个分区由虚拟环境内部的诸多操作单元加以分割。根据微软MSDN(2011)中的描述,“每个分区都是一个独立的逻辑单元,由虚拟机管理器进行支持,而操作系统则运行于分区之中”(见第二节)。而另一种更表面化的定义是:分区是那些次级操作系统执行时所处的区域。然而,并非所有分区都有对等的优先级。
Windows 服务器中的主(又称‘母’)分区(简称RP)就是这样一种强制性的实体。虚拟化堆栈就存放在这里,而系统管理员则通过它对虚拟机项目进行创建、启动、停止以及管理。而它与子分区的区别在于,它能够直接访问硬件资源(摘自微软MSDN,2011)。尽管主分区如此重要,但生产系统却并不运行于其中。这是子分区所要负责解决的问题。
子(或称为次级)分区(简称CP)包含生产系统以及操作系统,正如常见的硬件所扮演的角色。而不同之处在于这些子分区没有足够的权限来直接访问由底层硬件平台所提供的资源。换句话来说,“它们具备一种虚拟化的处理外观,并运行于为每个子分区单独分配的虚拟内存地址之中”(摘自微软MSDN,2011,第四节)。主分区以及虚拟机管理器能够实现对内部及外部资源的调用,包括来自物理网络连接上的各类资源。
我们当然可以进一步挖掘微软虚拟机中所应用的各种服务功能及端口,但这种比较深入的话题会引发更多关于Hyper-V及虚拟机的安全争议。关于图二中所描述的各组件的详细信息,请参阅文章附带的参考文献。
缩小遭受攻击的范围
对于微软虚拟服务器环境的攻击可能针对以上谈到的所有项目,包括全部支持文件以及驱动程序。然而,实际遭受攻击的范围取决于我们对下列步骤的执行是否到位:
步骤1: 对主机进行强化
步骤2: 对管理系统以及虚拟机操作系统进行强化
步骤3: 确保全部用户都以最低权限进行访问
步骤4: 将管理员对于主机、主分区以及虚拟机管理系统的操作权限进行隔离
步骤5: 确保虚拟机文件,包括硬盘、备份以及归档的安全性
步骤6: 启用审核机制
步骤7: 注意更新虚拟机归档文件补丁
步骤8: 使用VLAN及复数网卡对虚拟机访问及管理系统加以隔离
步骤9: 利用虚拟网络对同一台主机上的诸多虚拟机进行隔离
步骤10: 控制虚拟化技术的应用范围
#p#
步骤 1:对主机进行强化
由硬件及操作系统所构成的主机是虚拟机运行的基础,如图一所示。而主机操作系统则受到微软Windows Server中所固有的全部漏洞的影响,包括各类额外服务。降低主机遭受攻击风险的最佳途径是消除常见的漏洞。简单来说,就是别安装多余的组件。只保留一套单纯的Windows Server核心是达成上述目标最理想的方式。
所谓Server核心是指最小化安装Windows Server。根据微软TechNet(2011)上的说法,Server核心所能完成的工作是:
“…以消除所有那些在常用服务器上不必要的服务项目及功能。例如,域名系统(简称DNS)服务器的正常运行确实不需要安装Windows IE浏览器来加以支持,因为出于安全原因考虑,我们不会希望使用DNS服务器来浏览网络。而且DNS服务器甚至不需要图形用户界面(简称GUI),因为我们无论是采用功能强大的Dnscmd.exe命令行,或是通过远程方式使用微软DNS管理控制台(简称MMC)中的管理单元,都可以对DNS实现几乎全方位的操作”(摘自完全版对核心版,第二节)。 |
但只安装Server核心并非毫无影响。有些第三方驱动程序及服务可能会无法正常工作。如果这对你来说确实是个问题,那还是采用完整版本吧。
不过无论大家采用核心版还是完全版,一定记得利用良好的维护习惯对主机安全进行强化。想要了解更多服务器强化指南,请参阅微软Server 2008 R2安全基准说明。
#p#
步骤 2:对管理系统及虚拟机操作系统进行强化
我们还必须对运行于主分区之中的管理操作系统(简称MOS)进行强化。管理操作系统是Windows Server上的另一款组件。它借由管理员权限对整个虚拟机运行环境进行管理。当我们讨论必需的安全保障力度这一话题时,务必确保管理操作系统与其所在主机中诸多虚拟机上的敏感信息相匹配。在这里,仍然推荐大家参阅微软Server 2008 R2安全基准说明。
除了管理操作系统之外,每套虚拟机操作系统都应该得到同样的安全重视度。根据建议为服务器操作系统及服务器角色进行相应的安全配置。像对待你的物理服务器一样认真维护每套虚拟机,将安全措施落实到位。
另外还要提到很重要的一点,即在安装及配置杀毒软件时,一定注意避免对下列内容进行扫描:
◇ 虚拟机文件
◇ 程序文件 vmms.exe以及c:\Windows\System32 目录下的vmwp.exe
如果不把上述文件排除在杀毒软件的扫描范围之外,有可能会对虚拟机本体造成不利影响。
最后要说的是,管理操作系统本身并非生产类服务项目。永远不要通过它来运行商用软件或者是浏览互联网。必须将其严格作为虚拟机管理工具进行使用,同时也一定要限制应用程序以及浏览器对虚拟运行服务器的访问。
#p#
步骤 3: 确保全部用户都以最低权限进行访问
为了确保安全性及制约性,必须将管理职责进行分离,也就是说没有哪个人能够单独执行所有管理任务。举例来说,Hyper-V管理员不应该具备管理虚拟机的权限。微软提供了三种预设的角色,以帮助用户将关键性职责分别进行部署:
◇ Hyper-V 管理员——使用主分区中的管理操作系统,这一角色具备相应的权限,以对包括网络及存储配置在内的基于主机的虚拟机上的全局信息进行修改。
◇ 委托管理员——这一角色负责对其所辖范围内的主机或主机群组提供额外的限制来保证其他管理员无法对上述设备进行管理操作。通过微软的系统中心虚拟机管理工具(简称VMM),委托管理员能够在被配给的任何主机上对虚拟机进行管理,但他们无法对该主机之外的企业服务进行访问。
◇ 自助服务用户——全局管理员可以通过虚拟机或者相关设置为这类用户指定访问权限。这种方式与委托管理员的区别在于,这类用户所获得的是虚拟机中的访问权限,而非主机层面的控制权限。
#p#
步骤 4:将管理员对于主机、主分区以及虚拟机管理系统的操作权限进行隔离
此外,应该考虑将主机物理安全管理员与Hyper-V管理员这两个职位进行分别部署。换句话说,工程师需要对主机硬件及操作系统进行维护并不意味着他或她同时需要访问管理操作系统。
在默认情况下,管理操作系统的本地管理员可以通过Hyper-V管理工具微软管理控制台(简称MMC)来对该系统进行访问。另外,授权管理工具MMC管理单元同时提供了一系列细致的任务管理控制功能。微软(2009)提供了操作功能列表(详见下表),我们可以根据自己的职责范围从中挑选实用的信息。
#p#
步骤 5:虚拟机文件安全保护
在默认情况下,虚拟机文件存储于下列两个文件夹中:
◇ %programdata%\Microsoft\Windows\Hyper-V\
◇ %users%\Public\Documents\Hyper-V\Virtual Hard Disks
需要格外注意的文件扩展名类型包括:.vhd,.vhdd,.vud以及.vsv。大家无论是打算把这些文件继续存放在默认位置,还是想要将其移动到其它目录中,都务必要参考以下条目以对它们加以保护:
◇ 使用访问控制列表来确保各项服务及管理人员拥有的权限级别尽可能的低。其它类型的访问则一律阻止。
◇ 对上面列出的文件夹或者是包含上述子目录在内的根目录进行加密
◇ 确保对文件进行实时备份
◇ 启用审核机制
在设置访问控制时,请记住虚拟机管理员可能并不需要拥有全部虚拟机的访问权限。对于每位管理员,只要分配给他或她其对应管理的虚拟机文件就足够了。
#p#
步骤 6:启用审核机制
审核内容包括文件访问及系统监控。Windows TechNet(2009)对于审核方针提出了一些可行的指导。所有与虚拟机相关的文件、主分区配置以及数据存储都是审核的重点对象。除了文件访问审核之外,还可以利用微软系统中心操作管理工具或是类似的同类监控工具对不必要的或是可能存在较高风险的操作行为进行警告提示。
步骤7: 注意为虚拟机归档文件更新补丁
物理设备与虚拟服务器需要相同的管理、逻辑以及物理控制——包括积极更新各类补丁。对运行中的虚拟机进行补丁更新非常简单,其过程与为我们使用的其它应用程序打补丁差不多。但如果要维护的虚拟机并不处于运行状态下呢?
将没有打过补丁的服务项目直接添加到实际执行环境中永远都不会是个好主意。然而,如果某套虚拟机已经被我们封存了数个月,并很可能缺乏某些关键性的安全补丁,又该怎么处理?微软TechNet对于这种情况提出了一种解决方案。
使用微软的虚拟机维护工具(简称VMST)3.0,我们就能为任何虚拟机档案文件进行更新及打补丁等操作了。这款工具的运行要求满足下列条件之一:
◇ 系统中心虚拟机管理器 2008 R2
◇ 系统中心配置管理器 2007 SP2
◇ Windows Server 更新服务 3.0 SP2
图三描述了打补丁/更新的过程,包括每个虚拟机归档文件的启动、更新以及随后的保存及释放。
注意主机维护的要求。将该服务器部署于有限制的网段当中,并确保其安全性符合企业中最高级别的数据保护等级。
图三:虚拟机维护工具工作流程
(微软TechNet,2010,在虚拟机管理器索引中对离线虚拟机实施维护)
#p#
步骤 8: 使用VLAN及复数网卡对虚拟机访问及管理系统加以隔离
虚拟环境中的隔离设备遵循网络隔离的原则。网络隔离只允许特定的流量数据传输至设备处。在虚拟环境下,要实施这种隔离措施有两种方式:物理方式和虚拟方式。
配置主机的最后一步是将主机与其所负载的虚拟机同网络相连接。然而,并非所有的网络连接都是相同的。网络隔离在确保只有经过授权的流量内容才会被传输至那些最敏感的区域方面作用显著。这要求主机上至少装有两块网卡。
从基础层面来说,对管理操作系统的访问必须在专门的隔离管理之下连接到复数网卡中的某一个上。通过物理VLAN,这一步骤很容易实现,并且在防止未经授权的访问触及Hyper-V配置方面提供了一道基本防线。而额外的一个或多个VLAN则可以通过剩余的网卡接入虚拟机。
图四显示了物理网卡的分配窗口。在对Hyper-V服务角色进行配置时,我们被要求为虚拟机或是管理操作系统分配一个网卡。而未经检查的网卡会被自动分配给管理操作系统。
图四:网卡分配
#p#
步骤 9:利用虚拟网络对同一台主机上的诸多虚拟机进行隔离
为我们在前文中所选择的每个网卡都创建对应的虚拟交换机,如图五所示。大家当然也可以根据Panek(2009)中的内容自行配置。
“虚拟交换机有助于维持Hyper-V的安全性并对进入及发出虚拟机的网络数据包进行控制。您可以对来自或发往某套虚拟机以及VLAN的交互信息进行限制。当您对网络适配器进行设置时,您可以将某套虚拟交换机关联至该适配器上”(摘自原文第98页)。
Hyper-V管理员会为每套虚拟机创建一个或多个虚拟网卡,并将它们连入虚拟交换机端口当中。虚拟交换机的功能与物理交换机类似,包括允许创建VLAN来控制流量信息。我们能够建立三种类型的虚拟网络:内部网络、外部网络以及私人网络。
◇ 内部虚拟网络无法访问外界网络。它们允许虚拟机之间以及虚拟机与主分区之间的交互联系。内部虚拟网络不必绑定到物理网卡上,一般用来进行某些测试。
◇ 外部虚拟网络允许虚拟机及管理操作系统通过物理网络连接到物理服务器上。
◇ 私人虚拟网络提供了一套细致的网络划分方案,允许管理员们控制同一台主机上不同虚拟机之间所交互的流量内容。处于同一台主机上的诸多虚拟机并不需要总能互相连通。在这种情况下,记得将它们彼此隔离。
图五:虚拟交换机
#p#
步骤 10:控制虚拟化技术的应用范围
虚拟化在提高生产力方面堪称伟大…前提是不被滥用。然而,利用它来迅速部署服务器而不需变更管理流程听起来的确具有巨大的诱惑力。一旦我们基于这样的想法而引入了虚拟化体系,往往会放松对缩小受攻击方面所采取的监督力度。而接着随着时间的推移,失去控制的虚拟化扩散所带来的风险将远远大于其自身优势。
保持较低的应用风险并不困难。确保任何接入网络的服务器都能迅速被识别并验证权限。建立一套规范,包括如何落实虚拟服务在管理规划的变更方面受到严格保护。最后,与自己的工程师在工作中打成一片。风险扩散是完全可以通过采取正确的处理流程、控制、管理及严谨的态度来加以克服的。
#p#
结论
微软的Hyper-V技术在提高企业生产率方面的贡献非常巨大。它在企业需要时提供灵活、弹性及反应迅速的IT业务支持。在许多方面,一套安全规范都既适用于虚拟机,也同时适用于物理服务器。不过差别还是存在的。
对管理员职能进行分离以确保其以最低权限访问虚拟机中的文件。这一点可能对于小型IT企业来说较难实现,但请务必尽力确保物理服务器、管理操作系统以及虚拟机管理员这三个职位不会由同一位员工来负责。
在更新补丁时一定把虚拟机归档文件也纳入考虑范畴。像对待运行中的服务器一样对待这些文件。如果大家启动虚拟化体系几个月之久都没有对它们加以管理,请马上行动以确保这些文件都打上了最新的安全补丁以避免意外情况的发生。
利用物理及虚拟网络分割来控制流量内容及访问请求。这包括使用虚拟交换机来对同一台主机上的诸多虚拟机进行隔离。
最后,控制虚拟机的应用范围。将虚拟机创建、启动以及关闭等操作整合进管理体系变更及网络监控流程当中。
原文名:Microsoft Virtual Server Security: 10 Tips and Settings 作者:Tom Olzak
【本文乃51CTO精选译文,转载请标明出处!】
【编辑推荐】
- 下载:微软Hyper-V Server 2008 R2正式版
- Windows Server 2008 R2有效降低成本
- Windows Server 2008 R2:帮助您推动业绩增长
- 实战:Hyper-V Server 2008 R2安装、配置
- 七问Hyper-V Server 2008 R2
- 实战:Hyper-V Server 2008 R2故障排除
- System Center实战之SCOM报警消息
- 云计算构建基石之微软Hyper-V:环境篇
- 云计算构建基石之微软Hyper-V:安装篇(一)
【责任编辑:王勇 TEL:(010)68476606】