第19章 Firewall-as-a-Service (FWaaS) の設定
Firewall-as-a-Service (FWaaS) プラグインは、OpenStack Networking (neutron) に境界ファイアウォール管理を追加します。FWaaS は iptables を使用して、プロジェクト内の全 Networking ルーターにファイアウォールポリシーを適用し、プロジェクトごとにファイアウォールポリシーと論理ファイアウォールインスタンス 1 つをサポートします。
FWaaS は、OpenStack Networking (neutron) ルーターでトラフィックをフィルタリングすることによって境界で稼働します。インスタンスレベルで稼働するセキュリティーグループとは、この点が異なります。
FWaaS は現在テクノロジープレビューとなっており、テストされていない操作は推奨されません。
以下のサンプル図では、VM2 インスタンスの送信/受信トラフィックのフローを示しています。
図 1 FWaaS のアーキテクチャー
19.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
ファイルで、このオプションを有効にします。
/usr/share/openstack-dashboard/openstack_dashboard/local/local_settings.py 'enable_firewall' = True
5. neutron-server
を再起動して変更を適用します。
# systemctl restart neutron-server
19.2. FWaaS の設定
まず、ファイアウォールルールを作成して、これらのルールを含めるポリシーを作成します。次に、ファイアウォールを作成して、ポリシーを適用します。
1. ファイアウォールルールを作成します。
$ neutron firewall-rule-create --protocol <tcp|udp|icmp|any> --destination-port <port-range> --action <allow|deny>
CLI では、プロトコルの値が必要です。ルールがプロトコルに依存しない場合は、any の値を使用することができます。
2. ファイアウォールポリシーを作成します。
$ neutron firewall-policy-create --firewall-rules "<firewall-rule IDs or names separated by space>" myfirewallpolicy
上記で指定したルールの順番は重要です。ルールなしでファイアウォールポリシーを作成し、update 操作 (複数のルールを追加する場合) または insert-rule 操作 (1 つのルールを追加する場合) のいずれかを使用して、後でルールを追加することができます。
注記: FWaaS は常に、各ポリシーの最も低い優先順位で、「default deny all」ルールを追加します。そのため、デフォルトでは、ルールを持たないファイアウォールポリシーは全トラフィックをブロックします。
19.3. ファイアウォールの作成
$ neutron firewall-create <firewall-policy-uuid>
ファイアウォールは、OpenStack Networking のルーターが作成され、インターフェースが接続されるまで、PENDING_CREATE の状態に留まります。