第2章 ssh システムロールを使用した安全な通信の設定

管理者は、sshd システムロールを使用して SSH サーバーを設定し、ssh システムロールを使用し、Ansible Core パッケージを使用して同時に任意の数の RHEL システムで SSH クライアントを一貫して設定できます。

2.1. ssh Server のシステムロール変数

sshd システムロール Playbook では、設定と制限に応じて、SSH 設定ファイルのパラメーターを定義できます。

これらの変数が設定されていない場合には、システムロールは RHEL のデフォルト値と同じ sshd_config ファイルを作成します。

どのような場合でも、ブール値は sshd 設定で適切に yesno としてレンダリングされます。リストを使用して複数行の設定項目を定義できます。以下に例を示します。

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 and sshd_match_1 to sshd_match_9
ディクショナリーのリスト、または Match セクションのディレクトリーのみ。これらの変数は、sshd ディクショナリーで定義されている一致ブロックをオーバーライドしないことに注意してください。すべてのソースは作成された設定ファイルに反映されます。
sshd_backup
false に設定すると、元の sshd_config ファイルはバックアップされません。デフォルトは true です。

sshd システムロールのセカンダリー変数

これらの変数を使用して、サポートされている各プラットフォームに対応するデフォルトを上書きすることができます。

sshd_packages
この変数を使用して、インストール済みパッケージのデフォルトリストを上書きできます。
sshd_config_ownersshd_config_groupsshd_config_mode
このロールは、これらの変数を使用して生成する openssh 設定ファイルの所有権およびパーミッションを設定できます。
sshd_config_file
このロールが作成した openssh サーバー設定を保存するパス。
sshd_config_namespace

この変数のデフォルト値は null です。これは、ロールがシステムのデフォルトを含む設定ファイルの内容全体を定義することを意味します。または、この変数を使用して、他のロールから、またはドロップインディレクトリーをサポートしないシステムの 1 つの Playbook 内の複数の場所から、このロールを呼び出すことができます。sshd_skip_defaults 変数は無視され、この場合、システムのデフォルトは使用されません。

この変数が設定されている場合、ロールは指定された namespace の下の既存の設定ファイルの設定スニペットに指定する設定を配置します。シナリオにロールを複数回適用する必要がある場合は、アプリケーションごとに異なる namespace を選択する必要があります。

注記

openssh 設定ファイルの制限は引き続き適用されます。たとえば、設定ファイルで指定した最初のオプションだけが、ほとんどの設定オプションで有効です。

技術的には、ロールは他の一致ブロックが含まれていない限り、スニペットを "Match all" ブロックに配置し、既存の設定ファイル内の以前の一致ブロックに関係なく適用されるようにします。これにより、異なるロール呼び出しから競合しないオプションを設定できます。

sshd_binary
opensshsshd 実行可能ファイルへのパス。
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 で、この機能を無効にします。システムにハードウェア乱数ジェネレーターがない場合は、この機能を有効にしないでください。