示例
这些示例旨在概述防火墙的一些常见用例。注意,所有计算实例都需要为其规则设置其防火墙属性。
对于启用云防火墙功能的计算实例,默认策略始终为:
- 允许传入ping请求
- 阻止所有其它发送方的流量
- 允许所有传出流量
这里的例子不是相互排斥的,您可以按照您的看法合并示例中的规则。
允许SSH流量
FROM any TO all vms ALLOW tcp PORT 22
FROM any TO vm ba2c95e9-1cdf-4295-8253-3fee371374d9 ALLOW tcp PORT 22
您可以看到这两个规则允许来自Internet的SSH流量。如果存在多个影响传入流量的规则,则应用限制最少的规则。在这种情况下,将应用允许SSH流量到数据中心中的所有计算实例的规则。
允许HTTP流量
FROM any TO all vms ALLOW tcp PORT 80
FROM any TO all vms ALLOW tcp (PORT 80 AND PORT 443)
多个Web和数据库服务器设置
假设您运行一个网站,其中两个Web服务器与两个数据库服务器通信,您可以使用标签来识别每种类型的计算实例。
给每个Web服务器一个值为www
的角色标签。
role=www
并为数据库服务器提供值为db
的角色标签。
role=db
我们现在需要创建防火墙规则来控制对这些计算实例的访问。回想一下,默认情况下,启用云防火墙的计算实例阻止所有传入的TCP和UDP流量。我们现在需要为每个计算实例角色打开所需的端口。
首先,我们要允许Web服务器和数据库服务器之间的通信,通过创建此规则来实现:
FROM tag role = www TO tag role = db ALLOW tcp PORT 5432
此规则仅允许Web服务器连接到标准PostgreSQL端口(5432)上的数据库服务器。到数据库服务器的所有其他入站流量都被阻止。
接下来,我们希望允许来自Internet上任何地方的HTTP和HTTPS流量到Web服务器。我们通过创建此规则来实现:
FROM any TO tag role = www ALLOW tcp (PORT 80 AND PORT 443)
创建这两个规则后,将标记角色设置为db
的计算实例将具有以下行为:
- 允许带有tag
role
=www
的计算实例的在5432端口上传入TCP流量 - 允许所有传出流量
- 允许传入ping请求
- 阻止所有其它传入流量
而标记角色设置为www的计算实例将具有以下行为:
- 允许来自任何IP地址的端口80和443上的传入TCP流量
- 允许从端口5432传出到具有标签
role = www
的计算实例的所有TCP流量 - 允许所有传出流量
- 允许传入ping请求
- 阻止所有其它传入流量
堡垒主机设置
在这个设置中,我们有以下要求:
- 允许从堡垒主机上的所有端口访问计算实例。
- 计算实例阻止所有其他连接。
- 堡垒主机只接受来自某些IP地址的SSH连接,而不接收来自于其他IP地址的SSH连接。
默认策略是阻止所有传入连接,因此需要规则2,然后我们需要创建两个规则来处理其他要求。
堡垒主机的id为99a640b6-476f-ee0b-e2b0-b5146d6beb9f。要允许来自堡垒主机的所有流量到所有计算实例,您将创建此规则:
FROM vm 99a640b6-476f-ee0b-e2b0-b5146d6beb9f TO all vms ALLOW tcp PORT all
第二个要求是堡垒主机只能从某些IP地址接受SSH连接。为此,您可以使用此规则:
FROM (ip 172.1.1.110 OR ip 172.1.1.111) to vm 99a640b6-476f-ee0b-e2b0-b5146d6beb9f ALLOW tcp PORT 22
创建新的计算实例时,可以从堡垒主机访问新建的计算实例。