John Shackleton 是 Adventium 实验室的首席研究科学家,他是在商业和政府计算环境中专注于虚拟化和系统安全性的研究和开发项目的技术主管。
不久前,John Shackleton 写了一篇文章,作者在文章中提出了一些技巧和提示,能够使得VM 的迁移更安全。
由于作者的文章中,声明了 Creative Commons Zero(CC0),InfoQ 翻译并分享。
虚拟机实时迁移对现代云环境的日常管理至关重要,但也可能是您安全中的薄弱环节。了解如何识别和避免这些常见的攻击很有必要。
搭建任何一种云的挑战是可用性与安全性之间的不断博弈。一般来说,云系统越流畅(即,使虚拟化资源更快捷、更容易地按需提供),您的系统对某些网络攻击就越开放。在活动虚拟机(VM)迁移期间,这种挑战可能最为严峻:当虚拟机从一个物理主机向另一个物理主机透明地移动时,而不会中断 VM 的操作。虚拟机实时迁移是现代云环境日常管理中的关键操作。
在大多数情况下,现代虚拟机管理程序(包括商业私有和开源)执行的 VM 迁移满足典型私有云的安全要求。然而,某些云系统可能需要额外的安全性。例如,考虑必须提供更大保证以使得在单个平台上的虚拟资源和虚拟机操作在不同(以及可能的竞争)组织之间隔离的系统。对于这些更具限制性的搭建任何一种云,VM 迁移成为公司安全配置文件中的潜在薄弱环节。这些高级安全威胁是什么样的?
针对 VM 迁移的高级网络攻击
- 欺骗:模仿服务器以获取未经授权的访问。这实质上是传统的中间人(man-in-the-middle,MITM)攻击的变种。
- 系统抖动:一种复杂的拒绝服务(denial-of-service,DOS)。在这种情况下,攻击者在适当的间隔故意扰乱迁移过程,因此,迁移会不断重启,从而消耗额外的计算和网络资源。另一种攻击,对于具有自动迁移作为编排级别负载平衡策略的一部分的系统,DOS 攻击会尝试强制重复的 VM 迁移以使系统资源不堪重负。
- 强取豪夺:强制虚拟机映像(在源或目标服务器主机上)出现错误状态,目的是终端操作或泄露数据。
- 偷天换日:在迁移过程中的精确时刻蓄意破坏,以便在源和目标主机服务器上同时产生虚拟机的有效副本。这种攻击目的在于没被发现的情况下偷走信息。
在解决每个这些攻击的可能补救措施之前,了解有关 VM 迁移更多详细资讯是有必要的。首先,在这种背景下,我们只关心活动 VM 迁移,或者不会中断 VM 迁移操作的迁移。此处不考虑停机或者掉电的 VM 迁移。此外,我们在本文描述的方法仅限于管理程序及其相关的工具包。任何安全性配置文件还必须包括硬件平台和网络基础设施,当然,有关这方面不在本文讨论范畴之内。
最后,云采用的存储类型对 VM 迁移有很大影响。通过像 iSCSI、NFS 或 FibreChannel 之类的协议的网络存储器比本地服务器存储器的配置和维护更复杂,但是也简化并加速了迁移的过程,因为 VM 映像本身通常不需要通过网络复制到单独的物理存储设备。
但是请注意,上面所列的攻击,对使用网络存储的 VM 迁移影响不大,但风险依然存在。VM 使用共享存储能大幅减少迁移时间,降低 VM 迁移时被攻击的可能,但风险依然存在。状态数据和 VM 元数据仍然必须通过网络在服务器主机之间传递,由于迁移程序本身的脆弱性 / 缺点,上述攻击仍然能捕获到迁移过程中的 VM 状态数据和元数据。
在理解基本准则之后,让我们深入探讨解决每个迁移网络攻击的基本方法。
如何解决虚拟机迁移网络攻击
欺骗:中间人攻击已得到充分的研究,现代虚拟机管理程序应该已经利用在其迁移过程中集成的正确的身份验证协议来防止这类攻击。例如,针对 Xen 平台的变种,包括用于通过证书机构相互认证的公钥基础设施支持或用于防御 MITM 攻击的共享密钥。对于任何新安装,都要验证正确的身份验证是否可用并正确配置。
系统抖动:控制在网络基础设施之内、Hypervisor 之外。使用编排软件自动化 VM 迁移以实现负载平衡,系统防御目的应该配置为防止 DOS 攻击。应该限制自动迁移请求,以防止网络堵塞,并避免单个主机过载。
强取豪夺:此攻击试图在适当的时刻中断迁移过程,以便使 VM 状态数据被损坏或被迫与源或目标服务器处的 VM 映像不同步,导致 VM 暂时或永久禁用。强取豪夺攻击可能像网络上的 DOS 攻击,或者可能由管理程序中的恶意软件执行。在这两种形式中,这种攻击测试迁移过程从间歇性故障中恢复的程度,以及迁移过程可以如何良好地回滚到先前的稳定状态。
管理工具不同,迁移恢复方案的健壮性的差异也很巨大。如论如何,有几个步骤可以将这类攻击的威胁最小化:
- 首先,在开始迁移之前,应该定期创建重要 VM 映像的快照,以便始终有一个稳定的映像,以备灾难发生时使用。这是常见的、要重复的做法,因为它经常被遗忘。
- 其次,许多管理程序工具包支持通过脚本定制迁移过程。XAPI 工具包具有用于迁移前和迁移后脚本的钩子,一位勤勉的系统设计者或管理员可以在源和目标主机上插入自己的恢复支持。可以添加支持来验证迁移是否成功,例如,如果发生故障,则支持恢复过程。这些脚本还提供了在成功迁移后为特定 VM 添加特殊配置支持的方法,例如调整权限或更新运行时参数。
- 再次,也许最重要的是,当 VM 迁移完成(成功或失败)时,迁移的映像的旧脚本可能仍然挂起。对于成功迁移,脚本将保留在源服务器上,而失败的迁移尝试通常会导致目标服务器上剩余残留脚本。虽然虚拟机管理程序工具包可能在完成后删除旧的 VM 映像文件,但很少有工具包实际从磁盘存储器中擦除映像。表示 VM 映像的信息仍在磁盘上,并且容易受到恶意软件的过滤。对于具有高安全性要求的系统,因此有必要扩展工具堆以对先前表示旧 VM 映像的磁盘上的块进行归零(即填充零)或用随机值填充块。根据存储设备,也可能存在硬件支持。
偷天换日:我们可以将偷天换日攻击作为强取豪夺攻击的变种,并减轻这种威胁的方法是一样的。要使偷天换日攻击成功,所中止的 VM 迁移尝试的残留副本必须保留在目标服务器上。如果 VM 占用量立即从磁盘擦除,则此攻击的风险也大大降低。
总之,重要的是要了解主动迁移的安全隐患。在设计和配置现代云环境时,必须充分考虑迁移过程中特定攻击情形和故障情况下的系统行为。幸运的是,如果你按照上面的步骤,你能够避免与 VM 迁移相关的安全风险。
感谢魏星对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论