OSSN/OSSN-0022
Nova 网络在实例软重启后不会强制执行安全组规则
总结
在使用 Nova 网络部署的环境中,实例关联的安全组规则在软重启后可能不会被强制执行。Nova 被设计为在执行某些操作时(例如正常启动操作)将配置的安全组规则应用于实例。如果执行了导致清除安全组规则的操作,例如重启 nova compute 服务,那么对该实例执行软重启会导致其在启动时未应用安全组规则。
使用 Neutron 的部署不受影响。
受影响的服务 / 软件
Nova, Havana, Grizzly
讨论
在使用 Nova 网络部署的 Nova 环境中,安全组使用 iptables 实现,iptables 用于配置和控制进入 Nova 实例的网络流量。当实例首次使用正常启动方法(nova boot <instance_id>)启动时,安全组规则会应用于该实例。
当实例使用软重启方法(nova reboot <instance_id>)重启时,安全组规则不会重新应用,因为它们应该已经在实例最初启动时应用了。如果安全组规则在导致其清除的事件后未应用(例如重启 compute 服务),则实例将在没有安全组强制执行的情况下启动。这种情况最有可能发生在 Nova compute 服务被终止或重启的情况下,这会删除所有 iptables 规则。如果停止的实例然后使用软重启启动,则不会应用任何安全组规则。硬重启(nova reboot --hard <instance_id>)会重新应用安全组规则,因此不受此问题影响。
根据部署架构,这可能会破坏安全假设,并使实例容易受到基于网络的攻击。
此问题仅影响 Havana 和 Grizzly 版本。Icehouse 版本不允许使用软重启启动停止的实例,因此此问题不影响 Icehouse 版本。
建议的操作
不要使用软重启方法从停止状态启动实例。如果实例处于停止状态,请使用 nova boot <instance_id> 或使用 nova reboot --hard <instance_id> 重启,以强制应用安全组规则。
联系方式 / 参考文献
- 作者:Doug Chivers, HPE
- 此 OSSN:https://wiki.openstack.org/wiki/OSSN/OSSN-0022
- 原始 LaunchPad Bug:https://bugs.launchpad.net/nova/+bug/1316822
- OpenStack Security ML:openstack-security@lists.openstack.org
- OpenStack Security Group:https://launchpad.net/~openstack-ossg