ビュー:

AWS環境を準備して、Server & Workload ProtectionがSecure Bootをサポートできるようにします。

重要
重要
  • Secure Bootキーを登録するにはプラットフォームキーが必要です。プラットフォームキーを持っていない場合は、AWSのドキュメントを参照してSecure Bootプラットフォームキーを生成してください。
  • すべてのデバイスのファームウェアにアクセスできない場合、プラットフォームキーを置き換えないでください。これには、GPUなどのブート時にロードされるデバイスが含まれます。新しいプラットフォームキーを使用するためにファームウェア署名チェーンを更新できない場合、Secure Bootによってインスタンスが永久に起動できなくなる可能性があります。

手順

  1. Secure BootをサポートするLinuxディストリビューションAMIからEC2仮想マシンインスタンスを作成します。
  2. そのインスタンスのコンソールで、Machine Owner Key (MOK) コマンドmokutiluefivars、およびPythonをインストールします。
    例えば、Red Hat Enterprise Linuxでは、次のコマンドを入力します。
    yum install mokutil
    yum install python3
    curl -L -o uefivars.zip https://github.com/awslabs/python-uefivars/archive/refs/heads/main.zip
    unzip uefivars.zip
    DebianまたはUbuntuでは、コマンドを使用します。
    sudo apt-get update
    sudo apt-get install efitools
    sudo apt-get install python3
    curl -L -o uefivars.zip https://github.com/awslabs/python-uefivars/archive/refs/heads/main.zip
    unzip uefivars.zip
  3. CA証明書とトレンドマイクロの公開鍵をインスタンスにアップロードします。
  4. プラットフォームキー、CA証明書、およびトレンドマイクロの公開鍵を単一のバイナリファイル (.bin) に結合してください
    以下は、各項目を.eslファイルに変換し、それらを結合して.binに変換するサンプルコードです。ここで、77fa9abd-0359-4d32-bd60-28f4e78f784bはMicrosoft Corporation KEK CA 2011証明書のSignatureOwnerフィールド内のGUIDです。
    # Convert your platform key into signatures list format
    cert-to-efi-sig-list YOUR_PLATFORM_KEY.crt YOUR_PLATFORM_KEY.esl
    # Convert CA certificates
    sbsiglist --owner 77fa9abd-0359-4d32-bd60-28f4e78f784b --type x509 --output MS_CA_KEK.esl MicCorKEKCA2011_2011-06-24.crt
    sbsiglist --owner 77fa9abd-0359-4d32-bd60-28f4e78f784b --type x509 --output MS_CA_PROD.esl MicWinProPCA2011_2011-10-19.crt
    sbsiglist --owner 77fa9abd-0359-4d32-bd60-28f4e78f784b --type x509 --output MS_CA_UEFI.esl MicCorUEFCA2011_2011-06-27.crt
    # Convert Trend Micro public keys
    sbsiglist --owner 77fa9abd-0359-4d32-bd60-28f4e78f784b --type x509 --output TREND_UEFI_db_DS20_v2.esl DS20_v2.der
    sbsiglist --owner 77fa9abd-0359-4d32-bd60-28f4e78f784b --type x509 --output TREND_UEFI_db_DS2022.esl DS2022.der
    # Combine CA and vendor public keys into one signatures list
    cat MS_CA_PROD.esl MS_CA_UEFI.esl TREND_UEFI_db_DS20_v2.esl TREND_UEFI_db_DS2022.esl > ALL_SIGNATURES_db.esl
    cp *.esl /root/
    # Combine all and convert to binary
    ./python-uefivars-main/uefivars.py -i none -o aws -O YOUR_BINARY_SIGNING_CHAIN.bin -P ./YOUR_PLATFORM_KEY.esl -K ./MS_CA_KEK.esl --db ./ALL_SIGNATURES_db.esl
  5. バイナリファイルをダウンロードしてください。
  6. インスタンスの新しいEC2スナップショットを作成します。
  7. AWS Cloudshellにアクセスする。
  8. [処理][ファイル][ファイルをアップロード] の順に移動して、バイナリ ファイルを選択します。
  9. スナップショットIDとアップロードした.binファイルを使用して新しいAMIを作成します。
    次に例を示します。
    aws ec2 register-image --name LIFT-UBUNTU20SecureBootX64 --uefi-data $(cat YOUR_BINARY_SIGNING_CHAIN.bin) --block-device-mappings "DeviceName=/dev/sda1,Ebs= {SnapshotId={{YOUR-SNAPSHOT-ID}},DeleteOnTermination=true}" --architecture x86_64 --root-device-name /dev/sda1 --virtualization-type hvm --boot-mode uefi
  10. カスタマイズしたイメージを使用して、セキュアブートが有効な新しいインスタンスを作成します。
  11. 鍵がMOKリストに正常に登録されたことを確認します。
    コマンドmokutil --db | grep Trendを使用してください。
  12. カーネルがトレンドマイクロの公開鍵を正常にロードしたことを確認します。
    コマンドdmesg | grep certを使用してください。