機械翻訳について

2 セキュア・ブートを管理するためのツールおよびアプリケーション

この章では、Oracle Linuxでセキュア・ブートを管理するために使用できるツールおよびアプリケーションの基本的なサマリーについて説明します。

pesignツールについて

pesignツールは、UEFIアプリケーションのシグネチャおよび暗号化ダイジェストを操作するためのコマンドライン・ツールです。 pesignツールを使用して、GRUB2とShimの両方のカーネルに署名できます。

pesignツールを使用して、バイナリ・シグネチャ情報を出力することもできます。 pesignパッケージには、正確なパブリック証明書に対するシグネチャの検証に使用できるpesigcheckツールも用意されています。

pesignツールは、X.509証明書/キー・ペアを受け入れ、PE-COFFバイナリに署名します。 Oracle Linuxカーネルには、標準のUEFI実装に従ってbzImageファイルをPE-COFFバイナリとしてラップするEFIブート・スタブがあります。 この実装では、ブート・ローダーを必要とせずに、UEFIからカーネルを直接ブートするオプションが提供されます。 また、pesignツールで必要な署名を実行できます。 セキュア・ブート・キーについてを参照してください。

通常、pesignツールを使用して、次のいずれかのタスクを実行します:

efibootmgrアプリケーションについて

Oracle Linuxは、Intel拡張ファームウェア・インタフェース(EFI)ブート・マネージャの変更に使用できるefibootmgrユーザー領域アプリケーションを提供します。 アプリケーションを使用して、次のような複数のタスクを実行します。

  • ブート・エントリを作成および破棄します。

  • ブート順序を変更します。

  • ブート・オプションの次回の実行を変更します。

このツールは一般的な用途のアプリケーションであり、セキュア・ブートに直接関連していません。 ただし、このツールは、ユーザー空間から直接UEFIブート・オプションを管理し、コマンド行からUEFIブートの問題をデバッグおよび解決しやすくするのに役立ちます。 詳細および例は、efibootmgr(8)マニュアル・ページを参照してください。

mokutilユーティリティについて

Shimは、ユーザーが独自のシステムを制御できるようにします。 ディストリビューション・ベンダー・キーはShimバイナリ自体に組み込まれています。 ただし、マシン所有者キー(MOK)リストまたはデータベースと呼ばれるキーを含む追加のデータベースも提供され、ユーザーはMOKマネージャ・ユーティリティを介して管理できます。

Oracle Linuxでは、MokManagerユーティリティは、/boot/efi/EFI/redhatディレクトリ内のEFIシステム・パーティション(ESP)にインストールされます。 当初MokManager.efiと呼ばれていたこのファイルは、x86_64プラットフォームの場合はmmx64.efi、Armプラットフォームの場合はmmaa64.efiという名前に変更されました。 MOKキーは、ESPに配置してから、ブート中にMokManagerからインストールできます。

mokutilコマンドを実行すると、MokManagerユーティリティを使用して、配布ベンダー・キーとは別のままのMOKリスト内のキーを追加および削除できます。 mokutilユーティリティを使用すると、コマンドラインを使用して、ユーザー領域から直接MOKデータベースでキーを使用できるようになります。 この領域ではキーが作成または抽出されることが多いため、mokutilは、セキュア・ブートに使用されるキーの管理に使用する最適なツールです。

mokutilはユーザー・スペースから実行されますが、MOKデータベースを直接更新しません。 かわりに、mokutilはMOK管理サービスでキーを使用可能にし、起動時にShimをトリガーしてMOK管理メニューを表示します。 このプロセスにより、システムに物理的にアクセスできるユーザーによってのみキーまたはハッシュがMOKデータベース内で登録されることが確実になり、悪意のあるアプリケーションまたはユーザーがユーザー・スペースからMOKデータベースを直接変更できなくなります。

mokutilユーティリティを使用する一般的なユースケース・シナリオは次のとおりです:

詳細は、mokutil(1)マニュアル・ページを参照してください。

Shimレベルでのセキュア・ブートの無効化

UEFIはUEFI設定プログラムで無効にすることも、ここで説明するように、mokutilユーティリティを使用してShimのレベルでセキュア・ブートを無効にすることもできます。

Shimレベルでセキュア・ブートを無効にすると、UEFIセキュア・ブートは有効のままですが、Shimのロード後に検証は行われません。

次のステップは、ShimおよびGRUBを介してロードされるOSに適用されます:

  1. Secure Bootを無効にします。

    次のコマンドを実行して、Shimレベルでセキュア・ブートを無効にします:

    sudo mokutil --disable-validation
  2. パスワードの選択

    8文字から16文字のパスワードを選択し、確認のために同じパスワードを入力します。

  3. システムを再起動します。
  4. MOK管理を実行します。

    プロンプトが表示されたら、キーを押してMOK管理を実行します。

  5. セキュア・ブートの状態を変更します。

    「セキュア・ブート状態の変更」オプションを選択します。

  6. 変更を確認します。

    プロモートされたら、選択したパスワードの各文字を入力して変更を確認します。 各文字の後にReturn(またはEnter)を押します。

  7. 再起動します。

    はいを選択し、リブートを選択してシステムをリブートします。

Shimレベルでセキュア・ブート状態を再度有効にするには、次のコマンドを実行します。

sudo mokutil --enable-validation

セキュア・ブートを無効にする手順と同じプロンプトに従います。

SBATステータスの検証

Oracle Linux8では、shimパッケージで使用可能なUEFI Secure Boot Advanced Targeting (SBAT)を使用します。

SBATは、UEFIバイナリの.sbatセクションに生成番号を設定することで、grub2shimなどの古いバージョンのコア・ブート・コンポーネントを取り消すメカニズムです。 UEFIバイナリに設定されている生成番号は、その失効レベルを定義します。

UEFI Secure Bootがアクティブかどうかを確認するには、mokutilコマンドで--sb-stateオプションを使用します。

mokutil --sb-state

バージョン0.6.0以降、mokutilユーティリティを使用して、UEFI SBAT失効ステータスを確認および更新できます。 現在のシステムが実行されている現在のUEFI SBATレベルを確認するには、--list-sbat-revocationsオプションを使用します:

mokutil --list-sbat-revocations

次回のリブート時に適用されるSBATポリシーを変更できます。 SBATポリシーをlatestに設定すると、最新のSBAT失効が適用され、以前のSBATレベルで動作していた古いgrub2およびshimパッケージがブートできなくなり、previousは以前のSBAT失効レベルに戻ります。

mokutil --set-sbat-policy latest
mokutil --set-sbat-policy previous

UEFI Secure Bootが有効になっているシステムの場合、デフォルトのSBATポリシーはpreviousです。 latestポリシーとprevious SBATポリシーの両方で、最新のshimパッケージがインストールされた時点以降の失効レベルのみが設定されます。

トラブルシューティングのために、SBATポリシーをデフォルトの失効レベルにリセットできます。 まず、UEFIセキュア・ブートを無効にしてから、delete SBATポリシーを設定します:

mokutil --set-sbat-policy delete

ノート:

objdumpコマンドを使用して、grub2およびshimで使用される.sbatメタデータを確認できます。 たとえば、x86_64システムでは、次のコマンドを実行できます。

objdump -s -j .sbat grubx64.efi
objdump -s -j .sbat shimx64.efi

指定されたShimの現在のSBATポリシー・レベルを確認するには:

objdump -s -j .sbatlevel shimx64.efi

dbxtoolコマンドについて

dbxtoolコマンドは、コマンドライン・ツールと、UEFIセキュア・ブートDBX更新の適用に使用されるsystemdサービスを組み合せます。 このツールを使用すると、DBX失効リストとも呼ばれる、UEFI禁止された署名データベースで操作できます。 たとえば、このコマンドを使用して、現在のDBXコンテンツをリストし、新しいバージョンに更新できます。

UEFI DBXファイルは、https://uefi.org/revocationlistfileにあります。 DBXは、侵害されたキーを使用して署名されたソフトウェアがロードされないようにします。 これにより、セキュア・ブート・フレームワークの整合性を保護し、キーの静的データベースを手動で管理する必要がなくなります。

最新のUEFI DBXファイルはdbxtoolパッケージにパッケージ化され、Oracle Linux yumサーバー上のこのパッケージの以降の各リリース内に含まれています。 DBXファイルは、/usr/share/dbxtool/および/usr/share/dbxtool-oracle/にあります。

dbxtool systemdサービスが実行されている場合、DBXの更新は自動的に処理されます。 ただし、DBXの更新が必要なCVEについて通知された場合は、ツールを手動で使用する必要がある場合があります。