第16章 セキュリティーの強化
以下の項では、オーバークラウドのセキュリティーを強化するための推奨事項について説明します。
16.1. オーバークラウドのファイアウォールの管理
OpenStack Platform の各コアサービスには、それぞれのコンポーザブルサービステンプレートにファイアウォールルールが含まれています。これにより、各オーバークラウドノードにファイアウォールルールのデフォルトセットが自動的に作成されます。
オーバークラウドの Heat テンプレートには、追加のファイアウォール管理に役立つパラメーターのセットが含まれています。
- ManageFirewall
-
ファイアウォールルールを自動管理するかどうかを定義します。
trueに設定すると、Puppet は各ノードでファイアウォールを自動的に設定することができます。ファイアウォールを手動で管理する場合にはfalseに設定してください。デフォルトはtrueです。 - PurgeFirewallRules
-
ファイアウォールルールを新規設定する前に、デフォルトの Linux ファイアウォールルールを完全削除するかどうかを定義します。デフォルトは
falseです。
ManageFirewall が true に設定されている場合には、デプロイメントに追加のファイアウォールルールを作成することができます。オーバークラウドの環境ファイルで、設定フックを使用して (「Puppet: ロール用の Hieradata のカスタマイズ」を参照) tripleo::firewall::firewall_rules hieradata を設定します。この hieradata は、ファイアウォールルール名とそれぞれのパラメーター (すべてオプション) を鍵として記載したハッシュです。
- port
- ルールに関連付けられたポート
- dport
- ルールに関連付けられた宛先ポート
- sport
- ルールに関連付けられた送信元ポート
- proto
-
ルールに関連付けられたプロトコル。デフォルトは
tcpです。 - action
-
ルールに関連付けられたアクションポリシー。デフォルトは
acceptです。 - jump
-
ジャンプ先のチェーン。設定されている場合には
actionを上書きします。 - state
-
ルールに関連付けられた一連の状態。デフォルトは
['NEW']です。 - source
- ルールに関連付けられた送信元の IP アドレス
- iniface
- ルールに関連付けられたネットワークインターフェース
- chain
-
ルールに関連付けられたチェーン。デフォルトは
INPUTです。 - destination
- ルールに関連付けられた宛先の CIDR
以下の例は、ファイアウォールルールの形式の構文を示しています。
ExtraConfig:
tripleo::firewall::firewall_rules:
'300 allow custom application 1':
port: 999
proto: udp
action: accept
'301 allow custom application 2':
port: 8081
proto: tcp
action: accept
この設定では、ExtraConfig により、追加で 2 つのファイアウォールルールが 全ノードに適用されます。
各ルール名はそれぞれの iptables ルールのコメントになります。各ルール名は、3 桁のプレフィックスで始まる点に注意してください。このプレフィックスは、Puppet が最終の iptables ファイルに記載されている定義済みの全ルールを順序付けるのに役立ちます。デフォルトの OpenStack Platform ルールは、000 から 200 までの範囲のプレフィックスを使用します。
16.2. Simple Network Management Protocol (SNMP) のコミュニティー文字列の変更
director は、オーバークラウド向けのデフォルトの読み取り専用 SNMP 設定を提供します。SNMP のコミュニティー文字列を変更して、未承認のユーザーがネットワークデバイスに関する情報にアクセスするリスクを軽減することを推奨します。
オーバークラウドの環境ファイルで ExtraConfig フックを使用して以下の hieradata を設定します。
- snmp::ro_community
-
IPv4 の読み取り専用 SNMP コミュニティー文字列。デフォルト値は
publicです。 - snmp::ro_community6
-
IPv6 の読み取り専用 SNMP コミュニティー文字列。デフォルト値は
publicです。
以下に例を示します。
parameter_defaults:
ExtraConfig:
snmp::ro_community: mysecurestring
snmp::ro_community6: myv6securestringこれにより、全ノードで、読み取り専用の SNMP コミュニティー文字列が変更されます。
16.3. HAProxy の SSL/TLS の暗号およびルールの変更
オーバークラウドで SSL/TLS を有効化した場合には (「11章オーバークラウドのパブリックエンドポイントでの SSL/TLS の有効化」を参照)、HAProxy 設定を使用する SSL/TLS の暗号とルールを強化することをお勧めします。これにより、POODLE TLS 脆弱性 などの SSL/TLS の脆弱性を回避することができます。
オーバークラウドの環境ファイルで ExtraConfig フックを使用して以下の hieradata を設定します。
- tripleo::haproxy::ssl_cipher_suite
- HAProxy で使用する暗号スイート
- tripleo::haproxy::ssl_options
- HAProxy で使用する SSL/TLS ルール
たとえば、以下のような暗号およびルールを使用することができます。
-
暗号:
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS -
ルール:
no-sslv3 no-tls-tickets
環境ファイルを作成して、以下の内容を記載します。
parameter_defaults:
ExtraConfig:
tripleo::haproxy::ssl_cipher_suite: ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
tripleo::haproxy::ssl_options: no-sslv3 no-tls-tickets暗号のコレクションは、改行なしで 1 行に記述します。
オーバークラウドの作成時にこの環境ファイルを追加します。
16.4. Open vSwitch ファイアウォールの使用
Red Hat OpenStack Platform director で Open vSwitch (OVS) ファイアウォールドライバーを使用するためのセキュリティーグループを設定することができます。NeutronOVSFirewallDriver パラメーターで、使用するファイアウォールドライバーを指定することができます。
-
iptables_hybrid: neutron が iptables/ハイブリッドベースの実装を使用するように設定します。 -
openvswitch: neutron が OVS ファイアウォールのフローベースのドライバーを使用するように設定します。
openvswitch ファイアウォールドライバーはパフォーマンスがより高く、ゲストをプロジェクトネットワークに接続するためのインターフェースとブリッジの数を削減します。
iptables_hybrid オプションは、OVS-DPDK との互換性はありません。
network-environment.yaml ファイルで NeutronOVSFirewallDriver パラメーターを設定します。
NeutronOVSFirewallDriver: openvswitch
-
NeutronOVSFirewallDriver: セキュリティーグループの実装時に使用するファイアウォールドライバーの名前を設定します。指定可能な値は、システム構成により異なります (例:noop、openvswitch、iptables_hybrid)。デフォルト値である空の文字列を指定すると、サポートされている構成となります。
16.5. セキュアな root ユーザーアクセスの使用
オーバークラウドのイメージでは、root ユーザーのセキュリティー強化機能が自動的に含まれます。たとえば、デプロイされる各オーバークラウドノードでは、root ユーザーへの 直接の SSH アクセスを自動的に無効化されます。以下の方法を使用すると、オーバークラウドで root ユーザーにアクセスすることが引き続き可能となります。
-
アンダークラウドノードに
stackユーザーとしてログインします。 -
各オーバークラウドノードには
heat-adminユーザーアカウントがあります。このユーザーアカウントにはアンダークラウドのパブリック SSH キーが含まれており、アンダークラウドからオーバークラウドへのパスワード無しの SSH アクセスを提供します。アンダークラウドノードでheat-adminユーザーとして SSH を介して選択したオーバークラウドノードにログインします。 -
sudo -iでrootユーザーに切り替えます。
root ユーザーセキュリティーの軽減
状況によっては、 root ユーザーに直接 SSH アクセスする必要がある可能性があります。このような場合には、各オーバークラウドノードで root ユーザーの SSH 制限を軽減することが可能です。
この方法は、デバッグのみを目的としており、実稼働環境での使用には推奨されません。
この方法では、初回ブートの設定フック (「初回起動: 初回起動時の設定のカスタマイズ」を参照) を使用します。環境ファイルに以下の内容を記載してください。
resource_registry: OS::TripleO::NodeUserData: /usr/share/openstack-tripleo-heat-templates/firstboot/userdata_root_password.yaml parameter_defaults: NodeRootPassword: "p@55w0rd!"
以下の点に注意してください。
-
OS::TripleO::NodeUserDataリソースは、初回ブートのcloud-init段階にrootユーザーを設定するテンプレートを参照します。 -
NodeRootPasswordパラメーターはrootユーザーのパスワードを設定します。このパラメーターの値は、任意の値に変更してください。環境ファイルには、パスワードはプレーンテキスト形式の文字列として記載されるので、セキュリティーリスクと見なされる点に注意してください。
オーバークラウドの作成時には、openstack overcloud deploy コマンドでこの環境ファイルを指定します。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.