虚拟安全:应对实际威胁

作者:Jeramiah Bowling

在数据中心,物理和虚拟之间的界限正在迅速消失。凭借虚拟化的诸多优势和云计算的兴起,许多企业正以惊人的速度虚拟化其服务器和桌面系统。在这场伟大的虚拟化迁移中,管理员在转型过程中面临新的安全挑战,这需要更广泛的企业知识。再加上用户现在可以轻松构建自己的虚拟资源,您很快就会发现您的环境处于“虚拟蔓延”的状态。好消息是,通过遵循一些简单的指导原则并利用深度防御策略,无论您是部署新的虚拟基础设施还是只是尝试管理蔓延,都可以最大限度地降低风险。

在本文中,我将讨论部署虚拟环境时需要考虑的几个高级安全问题。在涵盖的每个关注领域,我都为处理这些问题提供基本指导,并在可能的情况下,提供技术解决方案来解决相关的风险。为了保持宏观视角,我没有提供针对所提出的具体解决方案的详细说明。产品领域的广阔性和本文有限的篇幅也使我无法深入探讨每一种可用的解决方案。尽管我试图保持厂商中立,但并非每个厂商都提供产品或解决方案来解决此处提出的每个安全问题。在这些情况下,我将简要介绍那些可用的产品/解决方案。

为了使讨论保持重点,我不会深入探讨关于 1 类或 2 类虚拟机监控程序的任何深奥的争论,也不会讨论准虚拟化与硬件转换/模拟的优缺点。我也坚持使用基于 Linux 的虚拟机监控程序的产品(包括 Linux KVM)。本文中术语“主机”指的是可以直接访问硬件的底层物理系统。“客户机”指的是那些在主机虚拟化软件或虚拟机监控程序之上运行操作系统实例的虚拟机 (VM)。

物理安全

首先要考虑的领域是物理安全。虚拟化的全部意义在于将硬件与操作系统分离,但虚拟机仍然在硬件上运行。因此,您可以使用相同的物理硬件加固最佳实践来保护您的虚拟主机。使用常识性控制措施,例如在机架和服务器上安装锁,并保护键盘-视频-鼠标控制台。注意操作因素,例如电源、散热和布线。随着虚拟化整合系统以实现更高的硬件效率,您的主机服务器会变得更热,并且随着利用率的提高而消耗更多电能。始终确保您的数据中心有足够的电力和散热来维持系统的基本运行。

如果从头开始构建主机服务器,请在部署之前正确调整系统大小。一些供应商提供了出色的尺寸调整指南来做到这一点(图 1)。尽管这些基准可能无法完全代表您的最终部署,但它们是估算硬件需求的好方法。在考虑硬件时,请始终将性能和冗余放在首位。超负荷的系统更容易被渗透、操纵和拒绝访问。作为一般准则,安装多余的存储和内存,因为这些通常是主机的瓶颈。购买尽可能多的您能负担得起的最快的大容量磁盘。更多的磁盘通常意味着更高的 IOPS。您还应该有一个企业级阵列控制器来运行您的驱动器。考虑使用既有条带化又使用奇偶校验的 RAID 级别,例如 RAID 10、5 或 50。内存应该快速且容量大。通过多余的存储和内存,您可以为尺寸不足创建缓冲。

Virtual Security: Combating Actual Threats

图 1. HP 的 ESX 尺寸调整工具

考虑为您的主机使用与生产网络分离的物理网络。这减少了其他网段上的干扰,并使保护分配给您的主机及其客户机的网段更加容易。当使用网络或共享存储来存储虚拟机的的数据文件和虚拟磁盘时,请使用另一个专用网段来分离和简化与存储相关的流量。

在冗余方面,尽量遵循“所有东西买两份”的旧格言。为您的主机系统寻找经济高效的冗余选项,例如冗余电源和多路径或绑定的网络端口。存储也应该是高度冗余的。在选择 RAID 级别时,请考虑每种类型所需的磁盘数量以及可以容忍的磁盘故障数量。如果使用网络存储,请研究 NAS/SAN/磁盘阵列的冗余选项。这可以让您在使用 VMware vMotion 和 Storage vMotion 等工具在系统故障期间热故障转移虚拟机。

灾难恢复

始终确保定期备份您的主机系统。尽管 vMotion 等技术可以使主机备份看起来微不足道,但备份对于您的灾难恢复选项仍然至关重要。备份主机通常需要从命令行界面运行操作。在 VMware 中,这是通过虚拟命令行界面 (vCLI) 使用vicfg-cfgbackup.pl命令完成的。在 XenServer 中,命令是xe host-backup。由于 KVM 在 Linux 内核上运行,因此您只需使用正常方法备份内核即可。

有几种选项可用于备份客户机。在数据级别,客户机由一个或多个文件组成,这些文件包含客户机的配置和虚拟磁盘,因此简单地备份主机上或任何可能存储位置的这些文件是完全可行的。以这种方式备份客户机的缺点是客户机必须断电。您可以使用各种专用备份解决方案来避免此问题,这些解决方案使用快照技术来备份正在运行的客户机。Symantec (Backup Exec) 和 Veeam 为 VMware 部署提供了令人印象深刻的产品。对于 XenServer 环境,Quorum Systems 提供了 Alike(图 2)。如果您有一个混合环境,其中包含多种虚拟机监控程序类型,请考虑 Arkeia 的 Network Backup,它可以备份所有主要供应商的系统,除了 Linux KVM。Linux KVM 用户的选择有限,但备份正在运行的客户机的一种流行技术是使用 LVM 对客户机卷进行快照,然后将生成的快照文件同步到远程服务器上的另一个磁盘。如果您无法备份客户机的虚拟数据/磁盘文件或拍摄快照,您始终可以使用传统的备份方法来备份客户机操作系统。

Virtual Security: Combating Actual Threats

图 2. 使用 Alike 为 XenServer 客户机运行快速备份

虚拟机监控程序/主机安全

接下来是虚拟机监控程序。虚拟机监控程序是虚拟化软件(或层),它控制硬件和客户机之间的通信和访问。它通常由从内部或外部存储运行的操作系统精简版组成,并且通常被分割成其自己的特殊分区。除了 Microsoft 的 Hyper-V 之外,虚拟机监控程序通常是 Linux 的一种变体。就 Linux KVM 而言,它实际上是一个 Linux 内核模块,但我将其视为虚拟机监控程序。

虚拟机监控程序既是虚拟化的核心,也是一个巨大的诱人目标。这在早期是虚拟化的一个主要担忧,并且至今仍然如此。如果您可以利用和控制主机上的虚拟机监控程序,您就可以控制它控制的每个客户机。决定虚拟机监控程序安全性的主要因素是其大小和复杂性。幸运的是,当前的趋势是供应商正在将其虚拟机监控程序的占用空间缩小到操作上的最小尺寸,从而减小了威胁面。无论大小如何,虚拟机监控程序仍然是软件,就像任何关键软件一样,必须定期对其进行修补。

除了修补之外,还要确保在主机上适当地分配硬件资源。这意味着限制/封顶客户机的硬件利用率。作为最佳实践,设置内存和处理器利用率的限制,或者如果您想更进一步,设置网络流量的限制。这确保了跨客户机满足性能基准,并减少了 DOS 攻击或意外硬件峰值导致主机或其他客户机崩溃的威胁。您可以通过大多数可用的管理 GUI 设置这些限制(图 3),或者在 KVM 的情况下,您可以使用 cgroups。

Virtual Security: Combating Actual Threats

图 3. 在 VMware 中使用资源分配限制利用率

当使用任何访问主机的管理 GUI 时,请确保在向用户提供访问权限之前评估并制定关于访问它们的策略。遵循最小权限模型进行权限设置,并在可能的情况下,使用外部身份验证源。如果您的解决方案可用,还可以考虑使用基于角色的访问控制 (RBAC)(图 4)。RBAC 提供对特定操作权限的精细控制,例如创建新客户机或在主机之间移动客户机的能力。

Virtual Security: Combating Actual Threats

图 4. VMware vSphere 中的 RBAC

客户机安全

保护您的客户机可能是过程中最容易的部分。您可以像保护物理机一样使用许多相同的实践来保护您的客户机。这些实践包括定期修补、使用防病毒软件、实施基于主机(客户机)的防火墙以及锁定不需要的服务。如果一次部署大量虚拟机,请考虑使用通用模板来部署虚拟机。这标准化了您的构建,并使保护和管理它们变得更容易。如果您正在将具有自己的一组安全最佳实践的特定应用程序(例如,Apache 或 MySQL)部署到客户机,也要遵循这些实践。接下来,确定客户机的关键性和/或敏感性,并在必要时将它们放置在不同的安全域中。完全有可能在单个主机上混合不同域中的客户机。也可以将您的客户机分段到不同的主机特定或物理网络上(本文的下一节将对此进行更多介绍)。

除了任何应用程序控制之外,还可以考虑在客户机级别使用某种形式的强制访问控制,例如 KVM 的 sVirt。sVirt 唯一地标记在主机上运行的客户机进程,以将其标识给虚拟机监控程序。这为管理员提供了一个框架,以确定哪些客户机和/或进程被授权与虚拟机监控程序通信(请参阅 sVirt 侧边栏)。如果您计划提供对客户机操作系统的远程访问,请确定您的客户端和/或管理员将如何执行此操作。他们将使用 SSH、VNC 还是远程桌面?一旦您确定了远程访问方法,请务必使用最小权限模型并遵循任何锁定特定解决方案的最佳实践,例如使用非标准端口和使用证书。

sVirt

要验证 sVirt 是否正在使用,请使用virsh list查看正在运行的虚拟机。然后,使用virsh dumpxml转储虚拟机的 XML 文件,并在标签中查找svirt在标签中

[root@systemname ~]# virsh list
 Id Name                 State
----------------------------------
  5 jbxp4                running

[root@systemname ~]# virsh dumpxml jbxp4 | grep label
 <seclabel type='dynamic' model='selinux'>
  <label>system_u:system_r:svirt_t:s0:c335,c384</label>
  <imagelabel>system_u:object_r:svirt_image_t:s0:c335,c384</imagelabel>
 </seclabel>

监控和警报

一旦您的主机和客户机就位,请定期监控您的虚拟环境。这样做可以最大限度地减少配置错误或主机/客户机故障、未经授权创建新客户机的事件。有很多方法可以监控您的虚拟环境,但最好的方法是将客户机上的内部操作系统日志与您的虚拟化产品提供的工具结合起来(图 5)。还有一个新兴的第三方产品市场,例如 Reflex Systems vWatch,它具有扩展的监控功能,例如监控变更控制和客户机软件/资产盘点的能力。

Virtual Security: Combating Actual Threats

图 5. 在 XenCenter 中查看事件

还要密切关注性能。即使资源分配到位,主机也可能由于过度拥挤或硬件故障而出现峰值。大多数供应商的管理 GUI 都具有某种形式的性能监控。开源用户可以使用 virt-manager for KVM 或 Convirt 来监控 KVM 和 Xen 系统的性能(图 6)。通过可靠地了解您的主机利用率,您可以更好地规划未来的主机并提高整合能力,这在许多情况下意味着提高 ROI。

Virtual Security: Combating Actual Threats

图 6. 在 Convirt 中查看 KVM 主机的性能数据

自动化您的系统以在发生故障或中断时向您发出警报始终是一个好的做法。这种逻辑也适用于虚拟环境。冗余性很好,但如果故障没有及时处理,可能会给您带来更多的时间和金钱损失。警报还可以帮助您解决任何服务级别协议 (SLA) 和合规性问题(例如 PCI、Sarbanes-Oxley 等)。许多管理工具都内置了警报功能,但也很容易将 SNMP 和其他监控协议与 Zenoss 等解决方案集成,以密切关注您的虚拟环境。

虚拟网络

最后一个要保护的领域是网络。保护您的虚拟网络环境可以分为两个部分:保护管理界面和客户机网络。在大多数情况下,主机使用一个网络接口卡 (NIC) 作为管理界面,并在客户机之间共享剩余端口。任何管理界面都应放置在与客户机将使用的任何网络分离的物理网络上。如果您正在使用专有的管理客户端,请限制对客户端安装文件的访问,并确保您使用某种身份验证方法或基于角色的访问控制(两者都在前面提到过)。如果您正在管理基于 Linux-KVM 的系统,请遵循保护 SSH 的正常建议。

在客户机联网方面,您有两个基本选项:使用 NAT 桥接或使用虚拟交换机。桥接简单快捷,但安全性较低,并且仅将客户机的虚拟 NIC 伪装成主机的 NIC。使用虚拟交换机可以使您在客户机联网方面具有更大的灵活性。大多数解决方案上的默认配置是为所有客户机使用单个默认虚拟交换机,该交换机上行链路到主机的一个 NIC。现在,大多数解决方案甚至都能够在虚拟交换机上使用 VLAN。VLAN 的过程包括使用唯一 ID 标记客户端 NIC,以便它仅与使用相同 VLAN ID 的其他计算机通信。虚拟交换机上的 VLAN 可以仅存在于主机上,也可以跨越物理网络上的其他客户机和设备(图 7)。

Virtual Security: Combating Actual Threats

图 7. VMware 高度灵活的网络选项

尽管 VLAN 为虚拟网络提供了额外的安全层,但它们仅限于第 2 层(交换)功能。因此,供应商开发了产品,以在虚拟第 3 层(路由)及以上级别提供额外的保护。Vyatta 的 vRouter 和 vFirewall 充当虚拟机监控程序及其客户机之间的网络层,为 VMware、XenServer 和 KVM 系统提供第 3 层保护。VMware 还使用其 vShield 技术和由此产生的产品开发了类似的功能。当您可以安全地将第 3 层功能扩展到您的虚拟环境时,您可以安全地将客户机部署为边缘甚至面向公众的设备。

此外,请务必监控虚拟网络活动。您可以使用传统的嗅探、IDS 和数据包捕获方法来监控离开主机的外部流量。当您尝试嗅探主机间或客户机间流量时,事情会变得更加困难,因为虚拟机监控程序在客户机之间进行的网络相关调用类型与网络上其他设备进行的调用类型截然不同。因此,传统的嗅探方法将不起作用。然而,可以嗅探此流量的产品(如 Network Instruments 的 Observer)开始涌现。Observer 可以嗅探主机内部的虚拟流量,并将其重定向到物理端口以供 IDS、IPS 或其他外部监控系统进行分析。

在这个简短的概述中,您可以看到,从各个角度保护虚拟环境需要大量的工作和知识。就像任何其他新技术一样,管理员都需要一个学习曲线。如果您再加上并非所有技术都完全成熟这一事实,那么曲线就会变得更加陡峭,风险也会更大。但不要犹豫去拥抱虚拟化。目前看来,它似乎是行业的未来,所以我们可能都不得不冒险一试。如果您了解这项技术及其局限性,并密切关注当前的趋势,您就会安然无恙。随着您在虚拟化方面的知识和经验的积累,您会发现更容易识别那些有暴露风险的领域,并采取适当的预防措施。此处提出的建议是一个良好的开端。如果您遵循这些建议,您应该能够最大限度地降低风险,并在部署虚拟化解决方案时稍微轻松一些。

资源

KVM: www.linux-kvm.org

Xen: www.xen.org

Citrix (XenServer): www.citrix.com

VMware: www.vmware.com

Quorum (Alike): www.quorumsoft.com

Symantec: www.symantec.com

Veeam: www.veeam.com

Arkeia: www.arkeia.com

Reflex Systems (vWatch): www.reflexsystems.com

Convirt: www.convirture.com

Vyatta (vRouter 和 vFirewall): www.vyatta.com

Network Instruments (Observer): www.netinst.com

Jeramiah Bowling 担任系统管理员和网络工程师已有十年以上。他在马里兰州亨特谷的一家地区性会计和审计公司工作,并拥有多项行业认证,包括 CISSP。欢迎您在 jb50c@yahoo.com 发表评论。

加载 Disqus 评论