Red Hat Training

A Red Hat training course is available for Red Hat Satellite

付録C FIPS 準拠ホストのプロビジョニング

Red Hat Satellite 6 は、National Institute of Standards and Technology の 暗号モジュールのセキュリティー要件 (Security Requirements for Cryptographic Modules) 標準 (参照番号 FIPS 140-2、FIPS と呼ばれる) に準拠するプロビジョニングホストをサポートします。

Red Hat Satellite 6 は FIPS が有効なホストではサポートされません。

FIPS に準拠するホストのプロビジョニングを有効にするには、以下の変更を実行します。

  • 関連するオペレーティングシステム、ロケーションおよび組織の特定
  • FIPS プロビジョニングテンプレートの作成および有効化
  • プロビジョニングのパスワードハッシュアルゴリズムの変更
  • Puppet のメッセージダイジェストアルゴリズムの変更
  • FIPS 有効化パラメーターの設定

これらの変更が完了したら、新規のプロビジョニングテンプレートが指定のオペレーティングシステム、ロケーションおよび組織に関連付けられます。ホストをそれらのオペレーティングシステム、ロケーション、および組織にプロビジョニングする際に、ホストには FIPS 準拠の設定が適用されます。これらの設定が正常に行われていることを確認するには、「FIPS モードの有効化の確認」 のステップを実行します。

前提条件

  • 『Hammer CLI ガイド』「認証」 セクションにある設定ステップを実行します。これにより、毎回 Satellite ユーザー名およびパスワードを指定せずに Hammer コマンドを実行できます。

C.1. 関連するオペレーティングシステム、ロケーションおよび組織の特定

FIPS 準拠のテンプレートを Satellite で作成する前に、FIPS 準拠のホストをデプロイするロケーション、組織およびオペレーティングシステムを特定する必要があります。たとえば、Red Hat Enterprise Linux 7 ホストを FIPS 準拠のホストとしてデプロイする場合、テンプレートは Red Hat Enterprise Linux 7 にのみ関連付けます。

  1. すべてのロケーションを一覧表示します。

    $ hammer location list
    ---|-----------------
    ID | NAME
    ---|-----------------
    2  | Default Location
    ---|-----------------

    NAME 列にある、FIPS 準拠のホストをデプロイするロケーションの値をメモします。

  2. すべての組織を一覧表示します。

    ---|----------------------|----------------------|------------
    ID | NAME                 | LABEL                | DESCRIPTION
    ---|----------------------|----------------------|------------
    1  | Default Organization | Default_Organization |
    2  | Sales                | Sales_Department     |
    ---|----------------------|----------------------|------------

    NAME 列にある、FIPS 準拠のホストをデプロイする組織の値をメモします。

  3. すべてのオペレーティングシステムを一覧表示します。

    $ hammer os list
    ---|-----------------|--------------|-------
    ID | TITLE           | RELEASE NAME | FAMILY
    ---|-----------------|--------------|-------
    2  | RedHat 6.6      |              | Redhat
    3  | RedHat 7.1      |              | Redhat
    1  | RedHat 7.2      |              | Redhat
    4  | RedHat 6.7      |              | Redhat
    ---|-----------------|--------------|-------

    TITLE 列にある、FIPS 準拠のホストをデプロイするオペレーティングシステムの値をメモします。

C.2. FIPS プロビジョニングテンプレートの作成および有効化

FIPS プロビジョニングテンプレートは git リポジトリーで提供されます。この手順では、それらを Satellite 環境にインポートした後に、必要なオペレーティングシステム、ロケーションおよび組織に関連付けます。

  1. Satellite Server では、FIPS が有効なテンプレートを含む git リポジトリーのクローンを作成してから、リポジトリーのディレクトリーに切り替えます。

    $ git clone https://github.com/RedHatSatellite/satellite6-fips-client
    $ cd satellite6-fips-client

    このリポジトリーには、以下の Embedded RuBy (ERB) テンプレートが含まれます。それらはテキスト形式のため、テンプレートに含まれる設定内容の詳細を表示し、確認することができます。

    • Kickstart_Default_PXELinux_FIPS.erb

      • 更新済みの PXELinux テンプレート
    • fips_packages.erb

      • FIPS モードで必要なパッケージ (例: dracut-fips)
    • Satellite_Kickstart_Default_FIPS.erb

      • fips_packages スニペットを呼び出すための修正を含むキックスタートテンプレート
    • puppet.conf.erb

      • 更新された (SHA256) メッセージダイジェストアルゴリズムを含む更新済みの puppet.conf 設定ファイル
  2. PXELinux FIPS テンプレートを追加します。

    $ hammer template create  --name "Kickstart Default PXELinux FIPS" \
      --file Kickstart_Default_PXELinux_FIPS.erb  \
      --locations LOCATIONS \
      --organizations ORGANIZATION \
      --operatingsystems OS \
      --type PXELinux

    プレースホールダーの値 LOCATIONSORGANIZATION、および OS「関連するオペレーティングシステム、ロケーションおよび組織の特定」 でメモした値に置き換えます。値にアルファベット以外の文字が含まれる場合、値を引用符 (") で囲みます。

    Config template created というメッセージは成功したことを示します。

    $ hammer template create  --name "Kickstart Default PXELinux FIPS" \
      --file Kickstart_Default_PXELinux_FIPS.erb \
      --locations "Default Location" \
      --organizations "Default Organization","Sales" \
      --operatingsystems "RedHat 6.6","RedHat 7.1","RedHat 7.2","RedHat 6.7" \
      --type PXELinux

  3. Satellite Kickstart Default FIPS テンプレートを追加します。

    $ hammer template create  --name "Satellite Kickstart Default FIPS" \
      --file Satellite_Kickstart_Default_FIPS.erb  \
      --locations LOCATIONS \
      --organizations ORGANIZATION \
      --operatingsystems OS \
      --type provision

    プレースホールダーの値 LOCATIONSORGANIZATION、および OS「関連するオペレーティングシステム、ロケーションおよび組織の特定」 でメモした値に置き換えます。値にアルファベット以外の文字が含まれる場合、値を引用符 (") で囲みます。

    Config template created というメッセージは成功したことを示します。

    $ hammer template create  --name "Satellite Kickstart Default FIPS" \
      --file Satellite_Kickstart_Default_FIPS.erb  \
      --locations "Default Location" \
      --organizations "Default Organization","Sales" \
      --operatingsystems "RedHat 6.6","RedHat 7.1","RedHat 7.2","RedHat 6.7" \
      --type provision

  4. FIPS Packages スニペットを追加します。

    $ hammer template create  --name "fips_packages" \
      --file fips_packages.erb \
      --locations LOCATIONS \
      --organizations ORGANIZATION \
      --type snippet

    プレースホールダーの値 LOCATIONS および ORGANIZATION「関連するオペレーティングシステム、ロケーションおよび組織の特定」 でメモした値に置き換えます。値にアルファベット以外の文字が含まれる場合は、値を引用符 (") で囲みます。

    Config template created というメッセージは成功したことを示します。

    $ hammer template create  --name "fips_packages" \
      --file fips_packages.erb \
      --locations "Default Location" \
      --organizations "Default Organization","Sales" \
      --type snippet

  5. デフォルトの Puppet 設定スニペットを更新します。

    $ hammer template update --name puppet.conf \
      --file puppet.conf.erb  \
      --type snippet

    Config template created というメッセージは成功したことを示します。

  6. 新規テンプレートを使用するようにオペレーティングシステムオブジェクトを更新します。

    新規の FIPS テンプレートが Satellite に追加され、必要なオペレーティングシステムの デフォルト テンプレートとして設定されます。

    1. Satellite Kickstart Default FIPS および Kickstart Default PXELinux FIPS テンプレートの ID を特定します。

      $ hammer template list
      ---|---------------------------------------|----------
      ID | NAME                                  | TYPE
      ---|---------------------------------------|----------
      41 | redhat_register                       | snippet
      42 | saltstack_minion                      | snippet
      53 | Kickstart Default PXELinux FIPS       | PXELinux
      46 | Satellite Kickstart Default           | provision
      48 | Satellite Kickstart Default Finish    | finish
      54 | Satellite Kickstart Default FIPS      | provision
      47 | Satellite Kickstart Default User Data | user_data
      50 | subscription_manager_registration     | snippet
      29 | UserData default                      | user_data
      30 | WAIK default PXELinux                 | PXELinux
      ---|---------------------------------------|----------

      この例では、ID はそれぞれ 54 および 53 になります。これらの ID はインストールに固有の ID です。

    2. FIPS テンプレートをデフォルトとして指定します。

      $ hammer os set-default-template --config-template-id TEMPLATE \
      --id OS

      プレースホールダー TEMPLATE および OS を、FIPS テンプレートと先にメモしておいたオペレーティングシステムの ID に置き換えます。FIPS テンプレートとオペレーティングシステムのすべての組み合わせに対してこのコマンドを繰り返し実行します。コンマ区切りの値の一覧は使用できません。

      この例では、FIPS テンプレートが前の例で ID 1 と特定された Red Hat Enterprise Linux 7.2 のデフォルトとして設定されています。

      $ hammer os set-default-template --config-template-id 54 --id 1
      $ hammer os set-default-template --config-template-id 53 --id 1

C.3. プロビジョニングのパスワードハッシュアルゴリズムの変更

プロビジョニングで使用されるパスワードのハッシュアルゴリズムを SHA256 に設定します。この設定は、FIPS 準拠としてデプロイする各オペレーティングシステムに適用される必要があります。

注記

これは Red Hat Satellilte 6 が Satellite 6.1 からアップグレードされた場合 のみ 必要になります。Satellite 6.3 はデフォルトで SHA256 を使用します。

  1. オペレーティングシステム ID を特定します。

    $ hammer os list
    ---|-----------------|--------------|-------
    ID | TITLE           | RELEASE NAME | FAMILY
    ---|-----------------|--------------|-------
    2  | RedHat 6.6      |              | Redhat
    3  | RedHat 7.1      |              | Redhat
    1  | RedHat 7.2      |              | Redhat
    4  | RedHat 6.7      |              | Redhat
    ---|-----------------|--------------|-------

  2. 各オペレーティングシステムのパスワードハッシュ値を更新します。

    $ hammer os update --title OS \
      --password-hash SHA256

    TITLE 列の一致する値を使用して、必要なオペレーティングシステムのそれぞれについてこのコマンドを繰り返し実行します。コンマ区切りの値の一覧は使用できません。

    $ hammer os update --title "RedHat 7.2" \
      --password-hash SHA256

C.4. Puppet の FIPS 準拠メッセージアルゴリズムへの切り替え

Satellite Server やすべての外部 Capsule Server および すべての 既存ホストで SHA256 メッセージダイジェストアルゴリズムを使用するように Puppet を設定します。

digest_algorithm = sha256 の行を [main] スタンザに追加して、/etc/puppet/puppet.conf ファイルを編集します。

注記

この変更は Satellite がアップグレードされるたびに上書きされるため、再度適用する必要があります。

Puppet メッセージダイジェストアルゴリズムは Satellite Server およびすべての Capsule Server で変更されるため、FIPS 準拠でないものも含め、すべての ホストで変更される必要があります。

メッセージダイジェストアルゴリズムに不一致がある場合、クライアントはファクトを再度ダウンロードします。これにより、Satellite Server または外部の Capsule Server での負荷が大幅に増大します。

C.5. FIPS 有効化パラメーターの設定

FIPS に準拠したホストをプロビジョニングするには、FIPS テンプレートで fips_enabled という名前のパラメーターを true に設定する必要があります。これが true に設定されていないか、またはこれがない場合は、FIPS 固有の変更は適用されません。このパラメーターは、個別のホストまたはホストグループセットのプロビジョニング時に指定できます。遡及的にホストで FIPS 準拠を有効にすることについては、本書の対象外であり、かつこれを実行すると問題が生じる可能性があります。

ホストのプロビジョニング時にこのパラメーターを設定するには、--parameters fips_enabled=true を Hammer コマンドに追加します。

既存のホストグループでこのパラメーターを設定するには、Hammer サブコマンドの set-parameter を使用します。詳細は、コマンド hammer hostgroup set-parameter --help の出力を参照してください。このホストグループにプロビジョニングされるすべてのホストはホストグループから fips_enabled パラメーターを継承します。

$ hammer hostgroup set-parameter --name fips_enabled \
 --value true \
 --hostgroup prod_servers

C.6. FIPS モードの有効化の確認

これらの FIPS 準拠に関する変更が正常に行われたことを確認するには、ホストのプロビジョニングを実行し、その設定を確認する必要があります。

  1. FIPS テンプレートを使用してホストをデプロイし、fips_enabled という名前のパラメーターが true に設定されていることを確認します。
  2. root と同等のアカウントで新規ホストにログインします。
  3. コマンド cat /proc/sys/crypto/fips_enabled を実行します。値 1 は FIPS モードが有効化されていることを示します。