5.3. AWS Marketplace でセキュアブートを使用して RHEL インスタンスを設定する


AWS 上の RHEL インスタンスでオペレーティングシステムのブートプロセスのセキュリティーを確保するには、セキュアブートを使用します。AWS でセキュアブートをサポートする Red Hat Enterprise Linux (RHEL) インスタンスを設定するには、AWS Marketplace から、uefi-preferred 対応のブートモードで事前設定された RHEL Amazon Machine Image (AMI) を起動します。uefi-preferred オプションは、セキュアブートに必要な Unified Extensible Firmware Interface (UEFI) ブートローダーのサポートを有効にします。UEFI がないと、セキュアブート機能は動作しません。

警告

セキュリティー上の問題を回避するために、現在の RHEL インスタンスとは別に秘密鍵を生成して保管してください。セキュアブートのシークレットが、使用中のインスタンスと同じインスタンスに保存されている場合、侵入者がシークレットにアクセスして特権を昇格できます。AWS EC2 インスタンスの起動の詳細は、Get started with Amazon EC2 を参照してください。

前提条件

  1. RHEL AMI のブート設定で uefi-preferred オプションが有効になっている。

    $ aws ec2 describe-images --image-id <ami-099f85fc24d27c2a7> --region <us-east-2> | grep -E '"ImageId"|"Name"|"BootMode"'
    
    "ImageId": "ami-099f85fc24d27c2a7",
    "Name": "RHEL-10.0.0_HVM_GA-20250423-x86_64-0-Hourly2-GP3",
    "BootMode": "uefi-preferred"
    Copy to Clipboard Toggle word wrap
  2. RHEL インスタンスに次のパッケージがインストールされている。

    • awscli2
    • python3
    • openssl
    • efivar
    • keyutils
    • edk2-ovmf
    • python3-virt-firmware

手順

  1. RHEL Marketplace AMI インスタンスのプラットフォームステータスを確認します。

    $ mokutil --sb-state
    
    SecureBoot disabled
    Platform is in Setup Mode
    Copy to Clipboard Toggle word wrap

    setup モードでは、インスタンス内のセキュアブート UEFI 変数を更新できます。

  2. 新しいランダムな汎用一意識別子 (UUID) を作成し、システムによって生成されたテキストファイルに保存します。

    $ uuidgen --random > GUID.txt
    Copy to Clipboard Toggle word wrap
  3. Platform Key データベース用の新しい RSA 秘密鍵 PK.key と自己署名 X.509 証明書 PK.cer を生成します。

    $ openssl req -quiet \
    -newkey rsa:3072 \
    -nodes -keyout PK.key \
    -new -x509 -sha256 \
    -days 3650 \
    -subj "/CN=Platform key/" \
    -outform DER -out PK.cer
    Copy to Clipboard Toggle word wrap

    openssl ユーティリティーは、出力形式を Distinguished Encoding Rules (DER) に設定して、証明書のコモンネーム Platform key を生成します。

  4. Key Exchange Key データベース用の新しい RSA 秘密鍵 KEK.key と自己署名 X.509 証明書 KEK.cer を生成します。

    $ openssl req -quiet \
    -newkey rsa:3072 \
    -nodes -keyout KEK.key \
    -new -x509 -sha256 \
    -days 3650 \
    -subj "CN=Key Exchange Key/" \
    -outform DER -out KEK.cer
    Copy to Clipboard Toggle word wrap
  5. カスタム証明書 custom_db.cer を生成します。

    $ openssl req -quiet \
    -newkey rsa:3072 \
    -nodes -keyout custom_db.key \
    -new -x509 -sha256 \
    -days 3650 \
    -subj "/CN=Signature Database key/" \
    --outform DER -out custom_db.cer
    Copy to Clipboard Toggle word wrap
  6. Microsoft Corporation UEFI CA 2011 証明書をダウンロードします。

    $ wget https://go.microsoft.com/fwlink/p/?linkid=321194 --user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" -O MicCorUEFCA2011_2011-06-27.crt
    Copy to Clipboard Toggle word wrap
  7. x64 ビットシステム用の更新された禁止署名 (dbx) の UEFI 失効リストファイルをダウンロードします。

    $ wget https://uefi.org/sites/default/files/resources/x64_DBXUpdate.bin
    Copy to Clipboard Toggle word wrap
  8. virt-fw-vars ユーティリティーを使用して UEFI 変数ファイルを生成します。

    $ virt-fw-vars --set-pk "$(< GUID.txt)" PK.cer \
    --add-kek "$(< GUID.txt)" KEK.cer \
    --add-db "$(< GUID.txt)" custom_db.cer \
    --add-db 77fa9abd-0359-4d32-bd60-28f4e78f784b MicCorUEFCA2011_2011-06-27.crt \
    --set-dbx DBXUpdate.bin -i /usr/share/edk2/ovmf/OVMF_VARS.secboot.fd \
    --output VARS
    Copy to Clipboard Toggle word wrap

    詳細は、システム上の virt-fw-vars(1) man ページを参照してください。

  9. UEFI 変数を Extensible Firmware Interface (EFI) Signature List (ESL) 形式に変換します。

    $ python3 /usr/share/doc/python3-virt-firmware/experimental/authfiles.py \
    --input VARS \
    --outdir .
    $ for f in PK KEK db dbx; do tail -c +41 $f.auth > $f.esl; done
    Copy to Clipboard Toggle word wrap
    注記

    GUID はそれぞれ割り当てられた値であり、EFI パラメーターを表します。

    • 8be4df61-93ca-11d2-aa0d-00e098032b8c: EFI_GLOBAL_VARIABLE_GUID
    • d719b2cb-3d3a-4596-a3bc-dad00e67656f: EFI_IMAGE_SECURITY_DATABASE_GUID

    EFI_GLOBAL_VARIABLE_GUID パラメーターは、ブート可能なデバイスとブートマネージャーの設定を保持します。一方、EFI_IMAGE_SECURITY_DATABASE_GUID パラメーターは、セキュアブート変数である dbdbx、および必要な鍵と証明書を保存するためのイメージセキュリティーデータベースを表します。

  10. データベース証明書をターゲットインスタンスに転送し、efivar ユーティリティーを使用して UEFI 環境変数を管理します。

    1. PK.esl を転送するには、次のように入力します。

      # efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-PK -f PK.esl
      Copy to Clipboard Toggle word wrap
    2. KEK.esl を転送するには、次のように入力します。

      # efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-KEK -f KEK.esl
      Copy to Clipboard Toggle word wrap
    3. db.esl を転送するには、次のように入力します。

      # efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-db -f db.esl
      Copy to Clipboard Toggle word wrap
    4. x64 アーキテクチャー用の dbx.esl UEFI 失効リストファイルを転送するには、次のように入力します。

      # efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-dbx -f dbx.esl
      Copy to Clipboard Toggle word wrap
  11. AWS コンソールからインスタンスを再起動します。

検証

  1. セキュアブートが有効になっているかどうかを確認します。

    $ mokutil --sb-state
    
    SecureBoot enabled
    Copy to Clipboard Toggle word wrap
  2. keyctl ユーティリティーを使用して、カスタム証明書のカーネルキーリングを確認します。

    $ sudo keyctl list %:.platform
    
    4 keys in keyring:
    786569360: ---lswrv     0     0 asymmetric: Signature Database key: 5856827178d376838611787277dc1d090c575759
    ...
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat