Amazon Linux 2023 での UEFI セキュアブート対応開始に伴い、既存のインスタンスも対象とする方法を確認してみた

記事タイトルとURLをコピーする

みなさん、こんにちは。AWS CLI が好きなテクニカルサポート課の市野です。

先日 2023年6月28日 に Amazon Linux 2023 の AL2023.1 でセキュアブートのサポートが開始される発表がありました。

aws.amazon.com

ドキュメントにて詳細を確認すると、Amazon Linux 2023 の AMI のうち、2023.1 リリース以上を利用していることが前提条件である言及がありました。

docs.aws.amazon.com

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.202306292023.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 パッケージを利用することで確認が可能です。

docs.aws.amazon.com

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)