2 セキュア・ブートを管理するためのツールおよびアプリケーション
この章では、Oracle Linuxでセキュア・ブートを管理するために使用できるツールおよびアプリケーションの基本的なサマリーについて説明します。
pesignツールについて
pesign
ツールは、UEFIアプリケーションの署名および暗号化ダイジェストを操作するためのコマンドライン・ツールです。pesign
ツールを使用して、GRUB2とShimの両方のカーネルに署名できます。
pesign
ツールを使用して、バイナリ署名情報を出力することもできます。v0.112-22以降のpesign
パッケージ(Oracle Linux 8で使用可能)には、正確な公開証明書に照らして署名を検証するために使用できる、pesigcheck
ツールも用意されていることに注意してください。
pesign
ツールでは、X.509証明書/キーのペアを受け入れ、このペアを使用してPE-COFFバイナリに署名します。Oracle Linuxカーネルには、標準のUEFI実装に従ってbzImage
ファイルをPE-COFFバイナリとしてラップする、EFIブート・スタブがあります。この実装では、ブート・ローダーを必要とせずに、UEFIからカーネルを直接ブートするオプションが提供されます。また、pesign
では、必要な署名を実行することもできます。セキュア・ブート・キーについてを参照してください。
通常、pesign
ツールは、次のような状況で使用します。
-
カスタム・カーネル・モジュールに署名するために作成可能なカスタム・キーでカーネル・イメージに署名します。セキュア・ブートで使用するためのカーネル・イメージおよびカーネル・モジュールの署名を参照してください。
-
Shimに証明書が含まれていない場合でも、ブート時にカーネルをロードできるように、MOKデータベース内の特定のカーネルのハッシュを登録します。
-
mokutil
ツールを使用してカーネル・ハッシュを登録できるよう、署名されたカーネル・バイナリからカーネル・ハッシュを抽出します。mokutilを使用したUEFI Secure Bootの署名キーの更新を参照してください。
efibootmgrアプリケーションについて
Oracle Linuxには、Intel Extensible Firmware Interface (EFI)ブート・マネージャの変更に使用できる、efibootmgr
ユーザー・スペース・アプリケーションが用意されています。アプリケーションを使用して、次のような複数のタスクを実行します。
-
ブート・エントリを作成および破棄します。
-
ブート順序を変更します。
-
ブート・オプションの次回の実行を変更します。
このツールは一般的な用途のアプリケーションであり、セキュア・ブートに直接関連していません。ただし、このツールはユーザー領域から直接UEFIブート・オプションを管理する上で役に立ち、コマンドラインから一部のUEFIブート問題を直接デバッグして解決しやすくします。詳細および例は、efibootmgr(8)
マニュアル・ページを参照してください。
mokutilユーティリティについて
Shimデザインにより、ユーザーは独自のシステムを制御できます。ディストリビューション・ベンダー・キーはShimバイナリ自体に組み込まれています。ただし、Machine Owner Key (MOK)リストまたはデータベースと呼ばれるキーを持つ追加のデータベースも提供され、ユーザーはMokManagerユーティリティを使用して管理できます。
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を使用したUEFI Secure Bootの署名キーの更新を参照してください。
-
Shimから上方向へのセキュア・ブート操作の無効化。セキュア・ブートの無効化を参照してください。
詳細は、mokutil(1)
マニュアル・ページを参照してください。
セキュア・ブートの無効化
EFI設定プログラムを介してセキュア・ブート状態を制御することが困難な場合は、オプションでmokutil
ユーティリティを使用し、Shimのレベルでセキュア・ブートを無効にできます。これにより、UEFI Secure Bootが有効になっていても、Shimのロード後に追加の検証は行われません。
ShimおよびGRUBを介してロードされるOSには、次のステップが適用されます。
-
Shimレベルでセキュア・ブートを無効にします。
sudo mokutil --disable-validation
-
8文字から16文字までのパスワードを選択してから、確認のために同じパスワードを入力します。
-
システムをリブートします。
-
プロンプトが表示されたら、キーを押してMOK管理を実行します。
-
Secure Boot状態の変更オプションを選択します。
-
要求に従い、選択したパスワードの各文字を入力して変更を確認します。
各文字の後に改行(Enter)を押す必要があります。
-
はいを選択し、リブートを選択してシステムをリブートします。
Shimレベルでセキュア・ブート状態を再度有効にするには、次のコマンドを実行します。
sudo mokutil --enable-validation
セキュア・ブートを無効にするときと同じプロンプトに従います。
SBATステータスの検証
Oracle Linux 8およびOracle Linux 9のshim
パッケージのバージョン15.3以降、OracleではUEFI Secure Boot Advanced Targeting (SBAT)が使用されています。SBATは、UEFIバイナリの.sbat
セクションに生成番号を設定することで、grub2
やshim
などの古いバージョンのコア・ブート・コンポーネントを取り消すメカニズムです。UEFIバイナリに設定されている生成番号は、その失効レベルを定義します。
UEFI Secure Bootがアクティブかどうかを確認するには、mokutil
コマンドで--sb-state
オプションを使用します。
mokutil --sb-state
mokutil
パッケージのバージョン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 Secure Bootを無効にしてから、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 Secure Boot 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について通知された場合は、ツールを手動で使用する必要がある場合があります。