第 17 章 配置 Firewall-as-a-Service(FWaaS)

Firewall-as-a-Service (FWaaS) 插件为 OpenStack Networking (neutron) 添加了边界防火墙(perimeter firewall)管理功能。FWaaS 使用 iptables 在一个项目的所有虚拟路由上应用防火墙规则,并支持在一个项目中使用一个防火墙策略和逻辑防火墙实例。

FWaaS 在网络边界进行操作,它会对 OpenStack Networking (neutron) 的路由进行过滤。这一点和安全组有所不同,安全组在实例一级进行操作。

注意

FWaaS 当前还是一个技术预览,我们不推荐您在未经测试的情况下使用它。

以下示图展示了 VM2 实例的出站和入站的网络数据:

fwaas

图 1. FWaaS 结构

17.1. 启用 FWaaS

1. 安装 FWaaS 软件包:

# yum install openstack-neutron-fwaas python-neutron-fwaas

2.neutron.conf 文件中启用 FWaaS 插件:

service_plugins = neutron.services.firewall.fwaas_plugin.FirewallPlugin

3.fwaas_driver.ini 文件中配置 FWaaS:

[fwaas]
driver = neutron.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver
enabled = True

[service_providers]
service_provider = LOADBALANCER:Haproxy:neutron_lbaas.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default

4. FWaaS 管理选项包括在 OpenStack 的 dashboard 中。在 local_settings.py 文件中(通常位于 Controller 节点上)启用这个选项:

/usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py
'enable_firewall' = True

5. 重启 neutron-server 服务以使所做的改变生效:

# systemctl restart neutron-server

17.2. 配置 FWaaS

先创建防火墙规则以及包括它们的防火墙策略,然后再创建防火墙来应用这个防火墙策略:

1. 创建一个防火墙规则:

$ neutron firewall-rule-create --protocol <tcp|udp|icmp|any> --destination-port <port-range> --action <allow|deny>

CLI 需要一个协议值,如果防火墙规则与协议无关,则可以使用任何值。

2. 创建一个防火墙策略:

$ neutron firewall-policy-create --firewall-rules "<firewall-rule IDs or names separated by space>" myfirewallpolicy

以上指定的规则顺序非常重要。您可以先创建一个空的防火墙规则,以后再添加规则(使用 update 操作来添加多个规则,或使用 insert-rule 操作来添加一个规则)。

请注意: FWaaS 总会在每个策略的最后添加一个默认禁用所有网络数据的规则。因此,没有任何规则的防火墙策略会在默认情况下阻止所有网络流量。

17.3. 创建一个防火墙

$ neutron firewall-create <firewall-policy-uuid>

在 OpenStack Networking 路由器被创建、接口被添加前,防火墙会处于 PENDING_CREATE 状态。