跳转到: 导航, 搜索

OSSN/OSSN-0089

安全实时迁移指南中缺失的配置选项导致未加密流量

总结

在 nova 计算节点上启用 QEMU 原生 tls 的安全实时迁移指南遗漏了一个重要的配置选项。如果没有此选项,nova 中的一个硬编码部分会被触发,这将默认路由设置为 TCP 而不是 TLS。这会导致 ram 的迁移未加密,并且不会抛出任何错误。


受影响的服务 / 软件

Nova / Victoria, Ussuri, Train, Stein (可能也受影响:Rocky, Queens, Pike, Ocata)


讨论

在 OpenStack 关于使用 QEMU 原生 tls 设置安全实时迁移的指南中,给出了一些必须应用于 nova 计算节点的配置选项。在按照说明进行设置后,一切似乎都按预期工作。但是,在检查 libvirt 是否可以使用 tls,使用 tcpdump 监听端口上的 tls 流量,手动执行 libvirt 命令时,通过 openstack 迁移实例的相同检查失败。监听端口上的未加密 tcp 流量显示 OpenStack 仍然使用未加密的 TCP 路径进行迁移,而不是 TLS 路径。

原因是来自 Ocata 的一个补丁,它在代码中添加了 live-migration-uri 的计算:https://review.opendev.org/c/openstack/nova/+/410817/ 配置参数 ``live_migration_uri`` 已被 ``live_migration_scheme`` 取代,并且默认设置为 tcp。这导致如果未设置这两个配置选项中的任何一个,libvirt 将始终使用默认的 tcp 连接。要启用 nova 中 QEMU 原生 TLS 的使用,必须设置其中一个,以便可以建立 TLS 连接。目前,该指南没有显示这是必要的,也没有其他文档表明这些配置选项对于使用 QEMU 原生 TLS 来说很重要。

由于没有文档承认这一点,并且很难发现这个问题,因为即使在未设置这些配置选项的情况下迁移也会发生——但没有说明它仍然是未加密的,它可能在各种遵循该指南的部署中未被识别。


建议的操作

对于使用 QEMU 原生 TLS 进行安全实时迁移的部署

  1. 检查所有 nova 计算节点的配置。libvirt 部分需要配置 ``live_migration_uri``(已弃用)或 ``live_migration_scheme``。
  2. 如果不存在这两个配置选项中的任何一个,请添加 ``live_migration_scheme = tls`` 以启用 tls 连接的使用。


补丁

安全实时迁移指南已更新,以反映必要的配置选项,现在包含一个注释,警告用户未设置所有配置选项可能会导致看似正常工作的部署,但 ram 迁移仍然使用未加密的流量。

Master(Wallaby): https://review.opendev.org/c/openstack/nova/+/781030

Victoria: https://review.opendev.org/c/openstack/nova/+/781211

Ussuri: https://review.opendev.org/c/openstack/nova/+/782126

Train: https://review.opendev.org/c/openstack/nova/+/782430

Stein: https://review.opendev.org/c/openstack/nova/+/783199


联系方式 / 参考文献

作者:Josephine Seifert, secustack GmbH

此 OSSN:https://wiki.openstack.org/wiki/OSSN/OSSN-0089

原始 LaunchPad Bug:https://bugs.launchpad.net/nova/+bug/1919357

邮件列表:[Security] 标签在 openstack-discuss@lists.openstack.org 上

OpenStack 安全项目:https://launchpad.net/~openstack-ossg