【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

使 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:371304
用户头像

发布了 368 篇内容, 共 170.3 次阅读, 收获喜欢 939 次。

关注

评论

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

正月十五吃汤圆CountDownLatch

叫练

AQS join 共享锁 CountDownLatch 多线程高并发

超大规模会议技术优化策略 轻松实现 500 人线上流畅沟通

融云 RongCloud

音视频 视频会议

单例设计模式

桃子

架构设计篇之微服务实战笔记(七)

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作 架构师成长笔记

如何通过事务消息保障抢购业务的分布式一致性?

阿里巴巴中间件

阿里云 云原生 电商 消息队列 分布式柔性事务‘’

双非本科生、非大厂,毕业一年,业余净收入20万

不脱发的程序猿

程序员 程序人生 28天写作 二月春节不断更 外包项目

多种多样的语音连麦方式

anyRTC开发者

flutter uni-app ios android WebRTC

我看JAVA 之 AbstractStringBuilder & StringBuffer & StringBuilder

awen

Java 源码 jdk string

写给管理者的睡前故事

每天读本书

读书笔记 每天读本书

技术干货 | mPaaS 小程序高玩带你起飞:客户端预置小程序无视网络质量

蚂蚁集团移动开发平台 mPaaS

小程序 网络环境 mPaaS

中核携手北京天源迪科完成电子商城二期项目,开创集团数字化采购新局面

DT极客

买基金赔掉一条裤衩之后,我又回来更文了

Java_若依框架教程

投资 理财 基金 茅台

做好 IM/RTC 底层技术服务,帮助开发者打造自己的“Clubhouse”

融云 RongCloud

IM RTC clubhouse

荟聚·沉淀——百度大脑AI开放平台的2020年

百度大脑

MyCat集成MySQL完成数据库集群建设

831143

Java MySQL mycat

MySQL COUNT(列名) 、COUNT(常量) 和 COUNT(*) 之间的区别

桃子

android开发视频!Android程序员最大的悲哀是什么?面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

聊聊前端日志库在SaaS产品中的应用与设计

元三

大前端 SaaS

常见加密方式及Python实现

行者AI

加密

基于 Flink SQL 构建流批一体的 ETL 数据集成

Apache Flink

flink

android开源!字节跳动Android岗经典面试真题,含泪整理面经

欢喜学安卓

android 程序员 面试 移动开发

我决定输出一篇文章用于记录一个足足花了四小时才找到的BUG

LSJ

Java spring aop ProxyFactory proxyTargetClass

用 Selenium 搞定自动化测试项目,途牛搜机票。

梦想橡皮擦

28天写作 2月春节不断更

Aspose word 转换为pdf 排版错位和数据丢失

blues199

Java Apache POI

android开发视频教程!移动开发者升职加薪的8项技能,成功定级腾讯T3-2

欢喜学安卓

android 程序员 面试 移动开发

DBS

陈皓07

LeetCode题解:120. 三角形最小路径和,动态规划(从上到下),JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

数字化转型提速,DataPipeline助力中石油产业大数据实时共享能力再提升

DataPipeline数见科技

数据融合

Kafka 中所谓的 ‘零拷贝’ 技术到底是什么?

码农架构

Java kafka 程序员 架构 微服务

UI自动化测试框架_地图测试如何开展呢?

小小娃爱吃甜食

最佳实践 测试 测试落地

程序员成长第十三篇:做好时间管理

石云升

程序员 时间管理 28天写作 2月春节不断更

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