第2章 ssh システムロールを使用した安全な通信の設定
管理者は、sshd
システムロールを使用して SSH サーバーを設定し、ssh
システムロールを使用し、Ansible Core パッケージを使用して同時に任意の数の RHEL システムで SSH クライアントを一貫して設定できます。
2.1. ssh
Server のシステムロール変数
sshd
システムロール Playbook では、設定と制限に応じて、SSH 設定ファイルのパラメーターを定義できます。
これらの変数が設定されていない場合には、システムロールは RHEL のデフォルト値と同じ sshd_config
ファイルを作成します。
どのような場合でも、ブール値は sshd
設定で適切に yes
と no
としてレンダリングされます。リストを使用して複数行の設定項目を定義できます。以下に例を示します。
sshd_ListenAddress: - 0.0.0.0 - '::'
レンダリングは以下のようになります。
ListenAddress 0.0.0.0 ListenAddress ::
sshd
システムロールの変数
sshd_enable
-
false
に設定すると、ロールは完全に無効になります。デフォルトはtrue
です。 sshd_skip_defaults
-
true
に設定すると、システムロールではデフォルト値が適用されません。代わりに、sshd
ディクショナリーまたはsshd_<OptionName>
変数のいずれかを使用して、設定のデフォルトの完全なセットを指定します。デフォルトはfalse
です。 sshd_manage_service
-
false
に設定すると、サービスは管理されません。つまり、サービスは起動時に有効にならず、開始またはリロードされません。Ansible サービスモジュールは現在、AIX のenabled
をサポートしていないため、コンテナーまたは AIX 内で実行する場合を除き、デフォルトはtrue
になります。 sshd_allow_reload
-
false
に設定すると、設定の変更後にsshd
はリロードされません。これはトラブルシューティングで役立ちます。変更した設定を適用するには、sshd
を手動で再読み込みします。AIX を除き、デフォルトはsshd_manage_service
と同じ値になります。AIX では、sshd_manage_service
のデフォルトはfalse
ですが、sshd_allow_reload
のデフォルトはtrue
です。 sshd_install_service
true
に設定すると、ロールはsshd
サービスのサービスファイルをインストールします。これにより、オペレーティングシステムで提供されるファイルが上書きされます。2 番目のインスタンスを設定し、sshd_service
変数も変更する場合を除き、true
に設定しないでください。デフォルトはfalse
です。ロールは、以下の変数でテンプレートとして参照するファイルを使用します。
sshd_service_template_service (default: templates/sshd.service.j2) sshd_service_template_at_service (default: templates/sshd@.service.j2) sshd_service_template_socket (default: templates/sshd.socket.j2)
sshd_service
-
この変数により
sshd
サービス名が変更されます。これは、2 つ目のsshd
サービスインスタンスを設定するのに役立ちます。 sshd
設定が含まれるディクショナリー。以下に例を示します。
sshd: Compression: yes ListenAddress: - 0.0.0.0
sshd_config(5)
は、sshd
ディクショナリーのすべてのオプションを一覧表示します。sshd_<OptionName>
ディクショナリーの代わりに、
sshd_
接頭辞とオプション名で構成される単純な変数を使用して、オプションを定義できます。簡単な変数は、sshd
ディクショナリーの値をオーバーライドします。以下に例を示します。sshd_Compression: no
sshd_config(5)
は、sshd
のすべてのオプションを一覧表示します。sshd_manage_firewall
デフォルトのポート
22
以外のポートを使用している場合は、この変数をtrue
に設定します。true
に設定すると、sshd
ロールはfirewall
ロールを使用してポートアクセスを自動的に管理します。注記sshd_manage_firewall
変数はポートのみを追加できます。ポートは削除できません。ポートを削除するには、firewall
システムロールを直接使用します。firewall
システムロールを使用したポート管理の詳細は、Configuring ports by using System Roles を参照してください。sshd_manage_selinux
デフォルトのポート
22
以外のポートを使用している場合は、この変数をtrue
に設定します。true
に設定すると、sshd
ロールはselinux
ロールを使用してポートアクセスを自動的に管理します。注記sshd_manage_selinux
変数はポートのみを追加できます。ポートは削除できません。ポートを削除するには、selinux
システムロールを直接使用します。sshd_match
andsshd_match_1
tosshd_match_9
-
ディクショナリーのリスト、または Match セクションのディレクトリーのみ。これらの変数は、
sshd
ディクショナリーで定義されている一致ブロックをオーバーライドしないことに注意してください。すべてのソースは作成された設定ファイルに反映されます。 sshd_backup
-
false
に設定すると、元のsshd_config
ファイルはバックアップされません。デフォルトはtrue
です。
sshd
システムロールのセカンダリー変数
これらの変数を使用して、サポートされている各プラットフォームに対応するデフォルトを上書きすることができます。
sshd_packages
- この変数を使用して、インストール済みパッケージのデフォルトリストを上書きできます。
sshd_config_owner
、sshd_config_group
、sshd_config_mode
-
このロールは、これらの変数を使用して生成する
openssh
設定ファイルの所有権およびパーミッションを設定できます。 sshd_config_file
-
このロールが作成した
openssh
サーバー設定を保存するパス。 sshd_config_namespace
この変数のデフォルト値は null です。これは、ロールがシステムのデフォルトを含む設定ファイルの内容全体を定義することを意味します。または、この変数を使用して、他のロールから、またはドロップインディレクトリーをサポートしないシステムの 1 つの Playbook 内の複数の場所から、このロールを呼び出すことができます。
sshd_skip_defaults
変数は無視され、この場合、システムのデフォルトは使用されません。この変数が設定されている場合、ロールは指定された namespace の下の既存の設定ファイルの設定スニペットに指定する設定を配置します。シナリオにロールを複数回適用する必要がある場合は、アプリケーションごとに異なる namespace を選択する必要があります。
注記openssh
設定ファイルの制限は引き続き適用されます。たとえば、設定ファイルで指定した最初のオプションだけが、ほとんどの設定オプションで有効です。技術的には、ロールは他の一致ブロックが含まれていない限り、スニペットを "Match all" ブロックに配置し、既存の設定ファイル内の以前の一致ブロックに関係なく適用されるようにします。これにより、異なるロール呼び出しから競合しないオプションを設定できます。
sshd_binary
-
openssh
のsshd
実行可能ファイルへのパス。 sshd_service
-
sshd
サービスの名前。デフォルトでは、この変数には、ターゲットプラットフォームが使用するsshd
サービスの名前が含まれます。ロールがsshd_install_service
変数を使用する場合は、これを使用してカスタムのsshd
サービスの名前を設定することもできます。 sshd_verify_hostkeys
-
デフォルトは
auto
です。auto
に設定すると、生成された設定ファイルに存在するホストキーがすべてリスト表示され、存在しないパスが生成されます。また、パーミッションおよびファイルの所有者はデフォルト値に設定されます。これは、サービスが最初の試行で開始できることを確認するためにデプロイメント段階でロールが使用される場合に便利です。このチェックを無効にするには、この変数を空のリスト[]
に設定します。 sshd_hostkey_owner
,sshd_hostkey_group
,sshd_hostkey_mode
-
これらの変数を使用して、
sshd_verify_hostkeys
からホストキーの所有権とパーミッションを設定します。 sshd_sysconfig
-
RHEL 8 以前のバージョンをベースとするシステムでは、この変数は
sshd
サービスの追加の詳細を設定します。true
に設定すると、このロールはsshd_sysconfig_override_crypto_policy
およびsshd_sysconfig_use_strong_rng
変数に基づいて、/etc/sysconfig/sshd
設定ファイルも管理します。デフォルトはfalse
です。 sshd_sysconfig_override_crypto_policy
RHEL 8 では、これを
true
に設定すると、sshd
ディクショナリーまたはsshd_<OptionName>
形式で次の設定オプションを使用して、システム全体の暗号化ポリシーをオーバーライドできます。-
Ciphers
-
MACs
-
GSSAPIKexAlgorithms
-
GSSAPIKeyExchange
(FIPS-only) -
KexAlgorithms
-
HostKeyAlgorithms
-
PubkeyAcceptedKeyTypes
CASignatureAlgorithms
デフォルトは
false
です。RHEL 9 では、この変数は影響を及ぼしません。代わりに、
sshd
ディクショナリーまたはsshd_<OptionName>
形式で次の設定オプションを使用して、システム全体の暗号化ポリシーをオーバーライドできます。-
Ciphers
-
MACs
-
GSSAPIKexAlgorithms
-
GSSAPIKeyExchange
(FIPS-only) -
KexAlgorithms
-
HostKeyAlgorithms
-
PubkeyAcceptedAlgorithms
-
HostbasedAcceptedAlgorithms
-
CASignatureAlgorithms
RequiredRSASize
sshd_config_file
変数で定義されたドロップインディレクトリーのカスタム設定ファイルに、これらのオプションを入力する場合は、暗号化ポリシーを含む/etc/ssh/sshd_config.d/50-redhat.conf
ファイルより辞書順に前にあるファイル名を使用します。
-
sshd_sysconfig_use_strong_rng
-
RHEL 8 以前のバージョンをベースとするシステムでは、この変数により、
sshd
が、引数として指定されたバイト数を使用してopenssl
乱数ジェネレーターを強制的に再シードできます。デフォルトは0
で、この機能を無効にします。システムにハードウェア乱数ジェネレーターがない場合は、この機能を有効にしないでください。