みなさん、こんにちは。AWS CLI が好きなテクニカルサポート課の市野です。
先日 2023年6月28日 に Amazon Linux 2023 の AL2023.1 でセキュアブートのサポートが開始される発表がありました。
ドキュメントにて詳細を確認すると、Amazon Linux 2023 の AMI のうち、2023.1 リリース以上を利用していることが前提条件である言及がありました。
Prerequisites
- You must be using an AMI with AL2023 release 2023.1 or higher.
- The instance type must support UEFI Secure Boot. For more information, see Launch an instance in the Amazon EC2 User Guide for Linux Instances.
そこで、Amazon Linux 2023 のうち 2023.0 リリースの AMI から構築している AL2023 インスタンスで、今回の UEFI セキュアブートに対応できるのか確認しました。
まとめ
手順の説明が若干長くなりましたので、先に結論を記載します。
- 2023.0 リリースの AMI から起動している既存の Amazon Linux 2023 インスタンスでも UEFI セキュアブートに対応可能
- 手順としては、
dnf check-release-update
コマンドを実行し、2023.1
リリースとなっている--releasever
バージョンを確認する - 上記で確認した
--releasever
バージョンを明示的に指定し、dnf upgrade
を実行しアップデートを行う
検証
検証用のインスタンスの作成
AMI ID の取得
以下のコマンドで、AMI 名が al2023-ami-2023.0
で始まる最新の AMI ID を取得します。
検証時点での東京リージョンでは、ami-0f9816f78187c68fb
が該当しました。
AMI_ID=$(aws ec2 describe-images \ --owners amazon \ --filters "Name=architecture,Values=x86_64" \ "Name=name,Values=al2023-ami-2023.0*" \ --query 'Images[].[Name, ImageId]' \ --output text \ | sort \ | tail -n 1 | awk -F ' ' '{print $2}') \ && echo ${AMI_ID} ami-0f9816f78187c68fb
UEFI ブートに対応するインスタンスタイプの確認
以下のコマンドで、boot-mode
として UEFI がサポートされているインスタンスタイプを出力します。
aws ec2 describe-instance-types \ --filters Name=supported-boot-mode,Values=uefi \ --query "InstanceTypes[*].[InstanceType]" \ --output text \ | sort
2023/07/18 時点では、以下のインスタンスタイプが得られました。
今回は、t3.micro
を利用することとします。
クリックで「得られたインスタンスタイプ一覧」が表示されます。
a1.2xlarge a1.4xlarge a1.large a1.medium a1.metal a1.xlarge c5.12xlarge c5.18xlarge c5.24xlarge c5.2xlarge c5.4xlarge c5.9xlarge c5.large c5.xlarge c5a.12xlarge c5a.16xlarge c5a.24xlarge c5a.2xlarge c5a.4xlarge c5a.8xlarge c5a.large c5a.xlarge c5d.12xlarge c5d.18xlarge c5d.24xlarge c5d.2xlarge c5d.4xlarge c5d.9xlarge c5d.large c5d.xlarge c5n.18xlarge c5n.2xlarge c5n.4xlarge c5n.9xlarge c5n.large c5n.xlarge c6a.12xlarge c6a.16xlarge c6a.24xlarge c6a.2xlarge c6a.32xlarge c6a.48xlarge c6a.4xlarge c6a.8xlarge c6a.large c6a.xlarge c6g.12xlarge c6g.16xlarge c6g.2xlarge c6g.4xlarge c6g.8xlarge c6g.large c6g.medium c6g.metal c6g.xlarge c6gd.12xlarge c6gd.16xlarge c6gd.2xlarge c6gd.4xlarge c6gd.8xlarge c6gd.large c6gd.medium c6gd.metal c6gd.xlarge c6gn.12xlarge c6gn.16xlarge c6gn.2xlarge c6gn.4xlarge c6gn.8xlarge c6gn.large c6gn.medium c6gn.xlarge c6i.12xlarge c6i.16xlarge c6i.24xlarge c6i.2xlarge c6i.32xlarge c6i.4xlarge c6i.8xlarge c6i.large c6i.xlarge c6id.12xlarge c6id.16xlarge c6id.24xlarge c6id.2xlarge c6id.32xlarge c6id.4xlarge c6id.8xlarge c6id.large c6id.xlarge c6in.12xlarge c6in.16xlarge c6in.24xlarge c6in.2xlarge c6in.32xlarge c6in.4xlarge c6in.8xlarge c6in.large c6in.xlarge c7g.12xlarge c7g.16xlarge c7g.2xlarge c7g.4xlarge c7g.8xlarge c7g.large c7g.medium c7g.metal c7g.xlarge d3.2xlarge d3.4xlarge d3.8xlarge d3.xlarge g4dn.12xlarge g4dn.16xlarge g4dn.2xlarge g4dn.4xlarge g4dn.8xlarge g4dn.xlarge g5.12xlarge g5.16xlarge g5.24xlarge g5.2xlarge g5.48xlarge g5.4xlarge g5.8xlarge g5.xlarge g5g.16xlarge g5g.2xlarge g5g.4xlarge g5g.8xlarge g5g.metal g5g.xlarge i3en.12xlarge i3en.24xlarge i3en.2xlarge i3en.3xlarge i3en.6xlarge i3en.large i3en.xlarge i4i.16xlarge i4i.2xlarge i4i.32xlarge i4i.4xlarge i4i.8xlarge i4i.large i4i.xlarge im4gn.16xlarge im4gn.2xlarge im4gn.4xlarge im4gn.8xlarge im4gn.large im4gn.xlarge inf1.24xlarge inf1.2xlarge inf1.6xlarge inf1.xlarge is4gen.2xlarge is4gen.4xlarge is4gen.8xlarge is4gen.large is4gen.medium is4gen.xlarge m5.12xlarge m5.16xlarge m5.24xlarge m5.2xlarge m5.4xlarge m5.8xlarge m5.large m5.xlarge m5a.12xlarge m5a.16xlarge m5a.24xlarge m5a.2xlarge m5a.4xlarge m5a.8xlarge m5a.large m5a.xlarge m5ad.12xlarge m5ad.16xlarge m5ad.24xlarge m5ad.2xlarge m5ad.4xlarge m5ad.8xlarge m5ad.large m5ad.xlarge m5d.12xlarge m5d.16xlarge m5d.24xlarge m5d.2xlarge m5d.4xlarge m5d.8xlarge m5d.large m5d.xlarge m5dn.12xlarge m5dn.16xlarge m5dn.24xlarge m5dn.2xlarge m5dn.4xlarge m5dn.8xlarge m5dn.large m5dn.xlarge m5n.12xlarge m5n.16xlarge m5n.24xlarge m5n.2xlarge m5n.4xlarge m5n.8xlarge m5n.large m5n.xlarge m5zn.12xlarge m5zn.2xlarge m5zn.3xlarge m5zn.6xlarge m5zn.large m5zn.xlarge m6a.12xlarge m6a.16xlarge m6a.24xlarge m6a.2xlarge m6a.32xlarge m6a.48xlarge m6a.4xlarge m6a.8xlarge m6a.large m6a.xlarge m6g.12xlarge m6g.16xlarge m6g.2xlarge m6g.4xlarge m6g.8xlarge m6g.large m6g.medium m6g.metal m6g.xlarge m6gd.12xlarge m6gd.16xlarge m6gd.2xlarge m6gd.4xlarge m6gd.8xlarge m6gd.large m6gd.medium m6gd.metal m6gd.xlarge m6i.12xlarge m6i.16xlarge m6i.24xlarge m6i.2xlarge m6i.32xlarge m6i.4xlarge m6i.8xlarge m6i.large m6i.xlarge m6id.12xlarge m6id.16xlarge m6id.24xlarge m6id.2xlarge m6id.32xlarge m6id.4xlarge m6id.8xlarge m6id.large m6id.xlarge m6idn.12xlarge m6idn.16xlarge m6idn.24xlarge m6idn.2xlarge m6idn.32xlarge m6idn.4xlarge m6idn.8xlarge m6idn.large m6idn.xlarge m6in.12xlarge m6in.16xlarge m6in.24xlarge m6in.2xlarge m6in.32xlarge m6in.4xlarge m6in.8xlarge m6in.large m6in.xlarge m7g.12xlarge m7g.16xlarge m7g.2xlarge m7g.4xlarge m7g.8xlarge m7g.large m7g.medium m7g.metal m7g.xlarge p3dn.24xlarge r5.12xlarge r5.16xlarge r5.24xlarge r5.2xlarge r5.4xlarge r5.8xlarge r5.large r5.xlarge r5a.12xlarge r5a.16xlarge r5a.24xlarge r5a.2xlarge r5a.4xlarge r5a.8xlarge r5a.large r5a.xlarge r5ad.12xlarge r5ad.16xlarge r5ad.24xlarge r5ad.2xlarge r5ad.4xlarge r5ad.8xlarge r5ad.large r5ad.xlarge r5b.12xlarge r5b.16xlarge r5b.24xlarge r5b.2xlarge r5b.4xlarge r5b.8xlarge r5b.large r5b.xlarge r5d.12xlarge r5d.16xlarge r5d.24xlarge r5d.2xlarge r5d.4xlarge r5d.8xlarge r5d.large r5d.xlarge r5dn.12xlarge r5dn.16xlarge r5dn.24xlarge r5dn.2xlarge r5dn.4xlarge r5dn.8xlarge r5dn.large r5dn.xlarge r5n.12xlarge r5n.16xlarge r5n.24xlarge r5n.2xlarge r5n.4xlarge r5n.8xlarge r5n.large r5n.xlarge r6g.12xlarge r6g.16xlarge r6g.2xlarge r6g.4xlarge r6g.8xlarge r6g.large r6g.medium r6g.metal r6g.xlarge r6gd.12xlarge r6gd.16xlarge r6gd.2xlarge r6gd.4xlarge r6gd.8xlarge r6gd.large r6gd.medium r6gd.metal r6gd.xlarge r6i.12xlarge r6i.16xlarge r6i.24xlarge r6i.2xlarge r6i.32xlarge r6i.4xlarge r6i.8xlarge r6i.large r6i.xlarge r6id.12xlarge r6id.16xlarge r6id.24xlarge r6id.2xlarge r6id.32xlarge r6id.4xlarge r6id.8xlarge r6id.large r6id.xlarge r6idn.12xlarge r6idn.16xlarge r6idn.24xlarge r6idn.2xlarge r6idn.32xlarge r6idn.4xlarge r6idn.8xlarge r6idn.large r6idn.xlarge r6in.12xlarge r6in.16xlarge r6in.24xlarge r6in.2xlarge r6in.32xlarge r6in.4xlarge r6in.8xlarge r6in.large r6in.xlarge r7g.12xlarge r7g.16xlarge r7g.2xlarge r7g.4xlarge r7g.8xlarge r7g.large r7g.medium r7g.metal r7g.xlarge t3.2xlarge t3.large t3.medium t3.micro t3.nano t3.small t3.xlarge t3a.2xlarge t3a.large t3a.medium t3a.micro t3a.nano t3a.small t3a.xlarge t4g.2xlarge t4g.large t4g.medium t4g.micro t4g.nano t4g.small t4g.xlarge x2idn.16xlarge x2idn.24xlarge x2idn.32xlarge x2iedn.16xlarge x2iedn.24xlarge x2iedn.2xlarge x2iedn.32xlarge x2iedn.4xlarge x2iedn.8xlarge x2iedn.xlarge x2iezn.12xlarge x2iezn.2xlarge x2iezn.4xlarge x2iezn.6xlarge x2iezn.8xlarge z1d.12xlarge z1d.2xlarge z1d.3xlarge z1d.6xlarge z1d.large z1d.xlarge
インスタンスの作成
aws ec2 run-instances \ --instance-type t3.micro \ --image-id ${AMI_ID} \ --key-name ${KEY_NAME}
確認①
以下の通り、構築したインスタンスへ接続し、AL2023 2023.0 リリースでは、UEFI セキュアブートが OS レベルで選択できないことの確認をします。
$ sudo amazon-linux-sb enroll sudo: amazon-linux-sb: command not found
上記の通り、amazon-linux-sb
というコマンドを知らないと怒られます。
対応
前述の通り、OS レベルで UEFI セキュアブートに対応していないことを確認しましたので、対応をします。
最新のリポジトリバージョンの確認
構築した EC2 インスタンスへ接続し、以下のコマンドを実行し、最新のリポジトリバージョンを確認します。
2023/07/18 時点では、2023.1.20230629
、2023.1.20230705
が利用可能であることを確認しました。
今回は、2023.1.20230629
を利用する方針とします。
$ sudo dnf check-release-update WARNING: A newer release of "Amazon Linux" is available. Available Versions: Version 2023.1.20230629: Run the following command to upgrade to 2023.1.20230629: dnf upgrade --releasever=2023.1.20230629 Release notes: https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html Version 2023.1.20230705: Run the following command to upgrade to 2023.1.20230705: dnf upgrade --releasever=2023.1.20230705 Release notes: https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html
最新のリポジトリバージョンへのアップデート
以下のコマンドで最新のリポジトリバージョンへのアップデートを実施します。
$ sudo dnf upgrade --releasever=2023.1.20230629
2023/07/18 時点では、以下のようなパッケージのアップデートがあることの表示がありました。
キーボードで y
を入力し、アップデート処理を継続します。
Amazon Linux 2023 repository 40 MB/s | 15 MB 00:00 Last metadata expiration check: 0:00:04 ago on Tue Jul 18 09:45:34 2023. Dependencies resolved. ======================================================================================================= Package Architecture Version Repository Size ======================================================================================================= Installing: kernel x86_64 6.1.34-58.102.amzn2023 amazonlinux 32 M Upgrading: amazon-linux-repo-s3 noarch 2023.1.20230629-0.amzn2023 amazonlinux 18 k binutils x86_64 2.39-6.amzn2023.0.6 amazonlinux 4.4 M dbus x86_64 1:1.12.28-1.amzn2023.0.1 amazonlinux 8.5 k dbus-common noarch 1:1.12.28-1.amzn2023.0.1 amazonlinux 15 k dbus-libs x86_64 1:1.12.28-1.amzn2023.0.1 amazonlinux 153 k dnf-plugin-support-info noarch 1.2-1.amzn2023 amazonlinux 77 k dracut x86_64 055-6.amzn2023.0.7 amazonlinux 346 k dracut-config-generic x86_64 055-6.amzn2023.0.7 amazonlinux 8.7 k glib2 x86_64 2.74.7-688.amzn2023.0.1 amazonlinux 2.7 M glibc x86_64 2.34-52.amzn2023.0.3 amazonlinux 1.9 M glibc-all-langpacks x86_64 2.34-52.amzn2023.0.3 amazonlinux 18 M glibc-common x86_64 2.34-52.amzn2023.0.3 amazonlinux 307 k glibc-gconv-extra x86_64 2.34-52.amzn2023.0.3 amazonlinux 1.5 M glibc-locale-source x86_64 2.34-52.amzn2023.0.3 amazonlinux 4.0 M grub2-common noarch 1:2.06-61.amzn2023.0.7 amazonlinux 1.8 M grub2-efi-x64-ec2 x86_64 1:2.06-61.amzn2023.0.7 amazonlinux 274 k grub2-pc-modules noarch 1:2.06-61.amzn2023.0.7 amazonlinux 913 k grub2-tools x86_64 1:2.06-61.amzn2023.0.7 amazonlinux 1.8 M grub2-tools-minimal x86_64 1:2.06-61.amzn2023.0.7 amazonlinux 608 k kernel-livepatch-repo-s3 noarch 2023.1.20230629-0.amzn2023 amazonlinux 18 k kernel-tools x86_64 6.1.34-58.102.amzn2023 amazonlinux 148 k kpatch-runtime noarch 0.9.7-12.amzn2023.0.3 amazonlinux 27 k libeconf x86_64 0.4.0-1.amzn2023.0.3 amazonlinux 28 k ncurses x86_64 6.2-4.20200222.amzn2023.0.4 amazonlinux 394 k ncurses-base noarch 6.2-4.20200222.amzn2023.0.4 amazonlinux 60 k ncurses-libs x86_64 6.2-4.20200222.amzn2023.0.4 amazonlinux 328 k openldap x86_64 2.4.57-6.amzn2023.0.5 amazonlinux 257 k openssl x86_64 1:3.0.8-1.amzn2023.0.3 amazonlinux 1.1 M openssl-libs x86_64 1:3.0.8-1.amzn2023.0.3 amazonlinux 2.2 M perl-Class-Struct noarch 0.66-477.amzn2023.0.5 amazonlinux 23 k perl-DynaLoader x86_64 1.47-477.amzn2023.0.5 amazonlinux 26 k perl-Errno x86_64 1.30-477.amzn2023.0.5 amazonlinux 16 k perl-Fcntl x86_64 1.13-477.amzn2023.0.5 amazonlinux 21 k perl-File-Basename noarch 2.85-477.amzn2023.0.5 amazonlinux 18 k perl-File-stat noarch 1.09-477.amzn2023.0.5 amazonlinux 18 k perl-Getopt-Std noarch 1.12-477.amzn2023.0.5 amazonlinux 16 k perl-HTTP-Tiny noarch 0.078-1.amzn2023.0.3 amazonlinux 56 k perl-IO x86_64 1.43-477.amzn2023.0.5 amazonlinux 87 k perl-IPC-Open3 noarch 1.21-477.amzn2023.0.5 amazonlinux 23 k perl-POSIX x86_64 1.94-477.amzn2023.0.5 amazonlinux 97 k perl-Pod-Perldoc noarch 3.28.01-459.amzn2023.0.3 amazonlinux 84 k perl-SelectSaver noarch 1.02-477.amzn2023.0.5 amazonlinux 12 k perl-Symbol noarch 1.08-477.amzn2023.0.5 amazonlinux 15 k perl-if noarch 0.60.800-477.amzn2023.0.5 amazonlinux 15 k perl-interpreter x86_64 4:5.32.1-477.amzn2023.0.5 amazonlinux 72 k perl-libs x86_64 4:5.32.1-477.amzn2023.0.5 amazonlinux 2.1 M perl-mro x86_64 1.23-477.amzn2023.0.5 amazonlinux 29 k perl-overload noarch 1.31-477.amzn2023.0.5 amazonlinux 46 k perl-overloading noarch 0.02-477.amzn2023.0.5 amazonlinux 13 k perl-subs noarch 1.03-477.amzn2023.0.5 amazonlinux 12 k perl-vars noarch 1.05-477.amzn2023.0.5 amazonlinux 14 k screen x86_64 4.8.0-5.amzn2023.0.3 amazonlinux 635 k system-release noarch 2023.1.20230629-0.amzn2023 amazonlinux 29 k Installing dependencies: amazon-linux-sb-keys noarch 2023.1-1.amzn2023.0.3 amazonlinux 24 k efivar x86_64 38-2.amzn2023.0.1 amazonlinux 51 k efivar-libs x86_64 38-2.amzn2023.0.1 amazonlinux 123 k sbsigntools x86_64 0.9.4-8.amzn2023.0.2 amazonlinux 88 k Transaction Summary ======================================================================================================= Install 5 Packages Upgrade 53 Packages Total download size: 79 M Is this ok [y/N]:
確認②
問題なくアップデートが完了した時点で、以下のコマンドを実施し、amazon-linux-sb
コマンドが存在していることを確認します。
$ which amazon-linux-sb /usr/sbin/amazon-linux-sb
続けて、UEFI セキュアブートの有効化を実施します。
sudo amazon-linux-sb enroll
コマンドを実行した時点でエラー発生がなく、ブートローダとカーネル署名の確認プロセスが開始されます。
$ sudo amazon-linux-sb enroll Checking bootloader and kernel signatures... WARNING: This only checks they have been signed by an Amazon Linux key. This does NOT check that the key hasn't been revoked. Ensure your kernels and bootloaders are up to date with the version of the installed amazon-linux-sb-keys package. Checking signatures: Grub2 bootloader : OK Linux Kernel : OK Enrolling the Secure Boot keys in instance cannot be undone. Please confirm you want to proceed (y/N)
キーボードで y
を入力し、継続します。
以下のように表示がされれば、あとは、EC2 インスタンスを再起動しセキュアブートを完全に有効化します。
Enrolling ... Done. Reboot for Secure Boot to be fully enabled
以上の手順で、AL2023 2023.1 よりも前の AMI から起動していた既存の EC2 インスタンスに対しても UEFI セキュアブートを適用することができました。
なお、Linux インスタンスで、セキュアブートが有効化されているかの確認には、mokutil
パッケージを利用することで確認が可能です。
Amazon Linux 2023 では初期状態でインストールされていないため、インストールして確認してみました。
$ sudo dnf install -y mokutil 〜中略〜 $ mokutil --sb-state SecureBoot enabled
おわりに
今回は検証用環境でしたので、いきなり dnf upgrade --releasever=${RELEASE_VER}
コマンドで一括のアップデートを実施していますが、以下のような書式で明示的に特定のパッケージのみアップデートすることも可能です。
sudo dnf upgrade --releasever= 2023.1.20230629 system-release
お使いの環境にて影響範囲をご確認いただき、適用を進めていただければ幸いです。
この記事がどなたかのお役に立てば幸いです。
ではまた。
市野 和明 (記事一覧)
マネージドサービス部・テクニカルサポート課
お客様から寄せられたご質問や技術検証を通じて得られた気づきを投稿していきます。
情シスだった前職までの経験で、UI がコロコロ変わる AWS においては GUI で手順を残していると画面構成が変わってしまって後々まごつくことが多かった経験から、極力変わりにくい AWS CLI での記事が多めです。
X(Twitter):@kazzpapa3(AWS Community Builder)