如何设置OpenStack网络安全组

在我们的OpenStack网络系列的第1-3部分中,我们介绍了网络的基础知识,创建网络并添加子网,通过检查和创建OpenStack路由器来建立网络,它将为我们可能创建的任何虚拟机器提供连接,并创建一个路由器来引导我们的私有网络/子网和internet之间的通信。

如何设置OpenStack网络安全组
如何设置OpenStack网络安全组

现在,我们的网络已经准备好了,但是首先我们需要在创建实例之前保护我们的环境。

探索OpenStack网络安全

传统的网络使用防火墙规则。但是,让网络安全人员参与进来会让我们的速度放慢。这就是需要OpenStack拯救的地方:通过使用安全组,我们可以很容易地控制用户对我们的服务器的访问。OpenStack CLI和仪表板都可以帮助我们轻松地设置规则,这些规则只允许访客通过我们打开的TCP端口访问我们的服务器。

OpenStack通过一个称为安全组的特性来执行基本的网络安全。当创建一个实例时,它至少属于一个安全组。如果一个安全组不存在,那么OpenStack会创建一个默认的安全组来保护实例。任何实例都可以属于多个控制允许实例的网络流量类型的安全组。此外,安全组可以为其他安全组提供提要,允许进行复杂的过滤策略。

基本的默认安全组策略允许在同一子网上的实例之间的所有通信,并且允许所有传出的流量,但是阻塞了来自子网外的所有流量。

对于我们的示例,我们将假设我们正在设置一个web服务器:

我们需要允许TCP端口80(HTTP)和443(HTTPS)传入流量。

此外,我们希望能够使用SSH访问我们的服务器,因此我们需要打开TCP端口22。

最后,我们希望允许ICMP ping连接到服务器,因此我们将允许所有ICMP通信,即使ping只使用ICMP的echo请求和echo应答包。ICMP通信还有其他用途,比如我们的服务器可能需要的路径MTU发现(PMTUD),这就是为什么我们会允许所有类型的ICMP通信。

登录到仪表板后,单击项目部分的左侧导航条上的实例行,然后单击Access&Security行,您将看到如下所示的web页面:

如果另一个选项卡是打开的,请单击安全组选项卡。我们可以通过点击create security group按钮来创建我们的Web安全组,您将看到如下所示的创建安全组弹出:

在名称框中输入Web,然后单击Create Security Group按钮。这将会让我们返回到Access&Security web页面。现在,我们需要向Web安全组添加一些规则。单击我们刚刚创建的Web安全组的右边的管理规则按钮,我们将被定向到管理安全组规则页面,这就是我们的新安全组,如下所示:

在这个组中,将有两个默认规则允许所有的出站流量。我们需要添加规则来允许TCP端口80、443、22和所有入站ICMP流量的入站流量。。如果我们点击右边的Add Rule按钮,我们将得到如下所示的添加规则:

要设置TCP端口80规则,在规则下拉下select HTTP,这个框将会改变只给我们两个额外的选项,即远程和CIDR。保留这些缺省值,因为它们将允许来自所有远程ip的入站访问,并单击Add按钮。我们将返回到管理安全组规则页面,我们将看到我们的新规则已经创建。

重复这个过程,为所有的ICMP流量添加HTTPS、SSH和一条规则。现在我们有了一个有六个规则的安全小组。所有发送的流量都将被允许,并且只允许TCP端口上的端口80、443和22的传入流量。

现在,我们已经为我们的web服务器建立了网络。现在,我们可以向该服务器添加一个公共IP,然后我们就可以完成了。启动实例不在这个网络系列的范围之内,但是,您可以访问左侧导航区域中的实例链接,并从那里启动一个新的实例。在本系列的最后一部分,您将需要一个运行的VM,我们将在该实例中添加一个公共IP。

就是这样。我们创建了防火墙规则来允许web流量传入服务器。如果您一直在实际的OpenStack环境中进行跟踪,那么这个网络现在已经准备好被使用了——只要我们为它分配一个公共IP,我们将在这个系列的最后一篇文章中讲到它。

推荐阅读:>>>创建网络并添加子网