付録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 にのみ関連付けます。
すべてのロケーションを一覧表示します。
例
$ hammer location list ---|----------------- ID | NAME ---|----------------- 2 | Default Location ---|-----------------
NAME
列にある、FIPS 準拠のホストをデプロイするロケーションの値をメモします。すべての組織を一覧表示します。
例
---|----------------------|----------------------|------------ ID | NAME | LABEL | DESCRIPTION ---|----------------------|----------------------|------------ 1 | Default Organization | Default_Organization | 2 | Sales | Sales_Department | ---|----------------------|----------------------|------------
NAME
列にある、FIPS 準拠のホストをデプロイする組織の値をメモします。すべてのオペレーティングシステムを一覧表示します。
例
$ 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 環境にインポートした後に、必要なオペレーティングシステム、ロケーションおよび組織に関連付けます。
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
)
-
FIPS モードで必要なパッケージ (例:
Satellite_Kickstart_Default_FIPS.erb
-
fips_packages
スニペットを呼び出すための修正を含むキックスタートテンプレート
-
puppet.conf.erb
-
更新された (SHA256) メッセージダイジェストアルゴリズムを含む更新済みの
puppet.conf
設定ファイル
-
更新された (SHA256) メッセージダイジェストアルゴリズムを含む更新済みの
PXELinux FIPS テンプレートを追加します。
$ hammer template create --name "Kickstart Default PXELinux FIPS" \ --file Kickstart_Default_PXELinux_FIPS.erb \ --locations LOCATIONS \ --organizations ORGANIZATION \ --operatingsystems OS \ --type PXELinux
プレースホールダーの値
LOCATIONS
、ORGANIZATION
、および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
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
プレースホールダーの値
LOCATIONS
、ORGANIZATION
、および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
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
デフォルトの Puppet 設定スニペットを更新します。
$ hammer template update --name puppet.conf \ --file puppet.conf.erb \ --type snippet
Config template created
というメッセージは成功したことを示します。新規テンプレートを使用するようにオペレーティングシステムオブジェクトを更新します。
新規の FIPS テンプレートが Satellite に追加され、必要なオペレーティングシステムの デフォルト テンプレートとして設定されます。
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 です。
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.2 はデフォルトで SHA256 を使用します。
オペレーティングシステム 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 ---|-----------------|--------------|-------
各オペレーティングシステムのパスワードハッシュ値を更新します。
$ 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 準拠に関する変更が正常に行われたことを確認するには、ホストのプロビジョニングを実行し、その設定を確認する必要があります。
-
FIPS テンプレートを使用してホストをデプロイし、fips_enabled という名前のパラメーターが
true
に設定されていることを確認します。 - root と同等のアカウントで新規ホストにログインします。
-
コマンド
cat /proc/sys/crypto/fips_enabled
を実行します。値1
は FIPS モードが有効にされていることを示します。