跳转到: 导航, 搜索

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> 重启,以强制应用安全组规则。

联系方式 / 参考文献