写点什么

使 VM 迁移更安全的提示和技巧

  • 2017-03-15
  • 本文字数:2554 字

    阅读完需:约 8 分钟

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 )关注我们。

2017-03-15 17:371535
用户头像

发布了 375 篇内容, 共 189.3 次阅读, 收获喜欢 945 次。

关注

评论

发布
暂无评论
发现更多内容

Tinymce plugins [Tinymce扩展插件集合]

Five

插件开发 tinymce 富文本编辑器 8月月更

大型连锁百货运维审计用什么软件好?有哪些功能?

行云管家

IT运维 运维审计 运维软件 百货

树莓派 USB摄像头 实现网络监控( MJPG-Streamer)

Five

树莓派 网络监控 #web 8月月更

大数据培训学习开发技术费用

小谷哥

使用华为HECS云服务器打造Telegraf+Influxdb+Grafana 监控系统【华为云至简致远】

科技云未来

Grafana Influxdb 系统管理 开源监控系统 提高效率

如何在 UE4 中制作一扇自动开启的大门

HelloWorld杰少

8月月更

阿里大佬力荐的这份“Spring全家桶”太强了,在轻松中学习掌握

Java工程师

Java spring spring-boot

为什么Spring Boot项目加上就可以更新版本?

冉然学Java

程序员 源码分析 springboot Java 分布式 Java core

通过Gitea实现内外网repo管理

吴脑的键客

git

Android技术分享| 一对一音视频呼叫邀请开发流程(一)

anyRTC开发者

android 音视频 移动开发 视频通话 呼叫邀请

基于ModelArts的动漫头像自动生成丨【华为云至简致远】

科技云未来

华为云ModelArts

利用华为云ECS服务器搭建安防视频监控平台【华为云至简致远】

科技云未来

nginx securecrt RTMP SSH工具

兆骑科创高层次人才引进平台,创新创业赛事活动路演

兆骑科创凤阁

阿里巴巴2022最新Java架构师进阶宝典!助力程序员金九银十面试跳槽涨薪

程序员小毕

Java 程序员 架构 面试 算法

使用域名注册服务 Domains配置域名【华为云至简致远】

科技云未来

域名配置 端口映射

Mysql 生成排序序号

六月的雨在InfoQ

8月月更

ffplay视频播放原理分析

百度Geek说

音视频

Webpack5新特性:使用 Assets Module 处理图片和字体资源

昆吾kw

前端 前端工程化 webpack

多图预警!华为 ECS 与 阿里云 ECS 对比实战【华为云至简致远】

科技云未来

华为云 虚拟私有云VPC ECS

大数据程序员培训学习多长时间可以找工作

小谷哥

Jupyter Notebook 交互式编程 & 低代码拖拽式编程 | 数据科学生态下的理想平台

ModelWhale

云原生 Jupyter Notebook 数据科学 低代码开发 协作平台

tinymce 如何实现动态国际化

Five

插件开发 tinymce 富文本编辑器 8月月更

安全狗《云原生安全威胁分析报告》首次提出双检测模型

Geek_2d6073

leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)

okokabcd

数组 LeetCode 数据结构与算法

TiFlash 计算层概览

TiDB 社区干货传送门

数据库 分布式数据库 TiDB

字节算法大神手写算法笔记,已连续多次霸榜 GitHub Trending 首页

冉然学Java

GitHub 算法 Java 分布式 字节

上海web前端培训课程

小谷哥

SpringBoot如何优雅地进行响应数据封装、异常处理?

程序员小毕

Java 源码 程序员 面试 spring-boot

什么是研发效能的「黄金三角」?如何助力企业提升效能?

万事ONES

源码阅读其实很简单!阿里业务架构师手写JDK源码笔记(2022版)真香

Java永远的神

Java 程序员 面试 程序人生 jdk源码

拿来即用!Get计算机视觉核心知识,看这本书就够了!

博文视点Broadview

使VM迁移更安全的提示和技巧_安全_John Shackleton_InfoQ精选文章