Amazon Linux 2 のカーネルライブパッチ - Amazon Elastic Compute Cloud

Amazon Linux 2 のカーネルライブパッチ

Amazon Linux 2 のカーネルライブパッチを使用すると、実行中のアプリケーションを再起動や中断せずに、実行中の Linux カーネルにセキュリティの脆弱性や重大なバグのパッチを適用することができます。これにより、インフラストラクチャを安全かつ最新に保つとともに、サービスとアプリケーションの可用性を向上させることができます。

AWS は、Amazon Linux 2 向けに 2 種類のカーネルライブパッチをリリースします。

  • [Security updates] (セキュリティ更新) – Linux の共通脆弱性とエクスポージャー (CVE) の更新プログラムが含まれます。これらの更新プログラムは、通常、Amazon Linux Security Advisory の評価で Important または Critical と評価されます。これらは、通常、共通脆弱性評価システム (CVSS) の 7 以上のスコアに該当します。場合によっては、CVE が割り当てられる前に AWS から更新プログラムが提供されることがあります。そのような場合、パッチはバグ修正プログラムとして提供される場合があります。

  • [Bug fixes] (バグ修正) – CVE に関連付けられていない重大なバグや安定性の問題の修正プログラムが含まれます。

AWS は、Amazon Linux 2 カーネルバージョンのリリースから 3 か月間、カーネルライブパッチを提供します。3 か月が過ぎた後にカーネルライブパッチを引き続き入手するには、新しいカーネルバージョンに更新する必要があります。

Amazon Linux 2 のカーネルライブパッチは、既存の Amazon Linux 2 リポジトリから署名付きの RPM パッケージとして入手できます。パッチを個別のインスタンスにインストールするには、既存の yum ワークフローを使用できます。パッチをマネージドインスタンスのグループにインストールするには、AWS Systems Manager を使用できます。

Amazon Linux 2 のカーネルライブパッチは、追加料金なしで提供されます。

サポートされている構成と前提条件

カーネルライブパッチは、Amazon EC2 インスタンスおよび Amazon Linux 2 が実行されているオンプレミスの仮想マシンでサポートされています。

Amazon Linux 2 でカーネルライブパッチを使用するには、以下を使用する必要があります。

  • x86_64 アーキテクチャのカーネルバージョン 4.14 または 5.10

  • ARM64 アーキテクチャのカーネルバージョン 5.10

ポリシーの要件

Amazon Linux リポジトリからパッケージをダウンロードするには、Amazon Elastic Compute Cloud がサービス所有の Amazon S3 バケットにアクセスする必要があります。環境で Amazon S3 用に Amazon Virtual Private Cloud (VPC) エンドポイントを使用している場合、VPC エンドポイントポリシーがそれらのパブリックバケットへのアクセスを許可しているようにする必要があります。

この表は、EC2 が Kernel Live Patching のためにアクセスする必要がある可能性がある各 Amazon S3 バケットを示しています。

S3 バケット ARN 説明
arn:aws:s3:::packages.region.amazonaws.com/*

Amazon Linux AMI パッケージを含む Amazon S3 バケット

arn:aws:s3:::repo.region.amazonaws.com/*

Amazon Linux AMI リポジトリを含む Amazon S3 バケット

arn:aws:s3:::amazonlinux.region.amazonaws.com/*

Amazon Linux 2 リポジトリを含む Amazon S3 バケット

arn:aws:s3:::amazonlinux-2-repos-region/*

Amazon Linux 2 リポジトリを含む Amazon S3 バケット

次のポリシーは、組織に属する ID とリソースへのアクセスを制限し、Kernel Live Patching に必要な Amazon S3 バケットへのアクセスを提供する方法を示しています。regionprincipal-org-idresource-org-id を組織の値に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "principal-org-id", "aws:ResourceOrgID": "resource-org-id" } } }, { "Sid": "AllowAccessToAmazonLinuxAMIRepositories", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::packages.region.amazonaws.com/*", "arn:aws:s3:::repo.region.amazonaws.com/*", "arn:aws:s3:::amazonlinux.region.amazonaws.com/*", "arn:aws:s3:::amazonlinux-2-repos-region/*" ] } ] }

カーネルライブパッチの使用

個別のインスタンスでカーネルライブパッチを有効にして使用するには、インスタンス自体でコマンドラインを使用できます。マネージドインスタンスのグループでカーネルライブパッチを有効にして使用するには、AWS Systems Manager を使用できます。

以下のセクションでは、コマンドラインを使用して、カーネルライブパッチを有効にして個別のインスタンスで使用する方法について説明します。

マネージドインスタンスのグループでカーネルライブパッチを有効にして使用する方法の詳細については、AWS Systems Manager ユーザーガイドの「Amazon Linux 2 インスタンスでカーネルライブパッチを使用する」を参照してください。

カーネルライブパッチの有効化

Amazon Linux 2 では、カーネルライブパッチはデフォルトでは無効になっています。ライブパッチを使用するには、カーネルライブパッチの yum プラグインをインストールして、ライブパッチ機能を有効にする必要があります。

前提条件

カーネルライブパッチには binutils が必要です。binutils がインストールされていない場合は、以下のコマンドを使用してインストールします。

$ sudo yum install binutils

カーネルライブパッチを有効にするには

  1. カーネルライブパッチは、次の Amazon Linux 2 カーネルバージョンで使用できます。

    • x86_64 アーキテクチャのカーネルバージョン 4.14 または 5.10

    • ARM64 アーキテクチャのカーネルバージョン 5.10

    カーネルバージョンを確認するには、次のコマンドを実行します。

    $ sudo yum list kernel
  2. サポートされているカーネルバージョンが既にある場合は、この手順はスキップしてください。サポートされているカーネルバージョンがない場合は、次のコマンドを実行して、カーネルを最新バージョンに更新し、インスタンスを再起動します。

    $ sudo yum install -y kernel
    $ sudo reboot
  3. カーネルライブパッチの yum プラグインをインストールします。

    $ sudo yum install -y yum-plugin-kernel-livepatch
  4. カーネルライブパッチの yum プラグインを有効にします。

    $ sudo yum kernel-livepatch enable -y

    このコマンドは、設定されているリポジトリから最新バージョンのカーネルライブパッチの RPM もインストールします。

  5. カーネルライブパッチの yum プラグインが正常にインストールされたことを確認するには、次のコマンドを実行します。

    $ rpm -qa | grep kernel-livepatch

    カーネルライブパッチを有効にすると、空のカーネルライブパッチの RPM が自動的に適用されます。カーネルライブパッチが正常に有効になっていれば、このコマンドは最初の空のカーネルライブパッチの RPM を含むリストを返します。以下は出力例です。

    yum-plugin-kernel-livepatch-1.0-0.11.amzn2.noarch kernel-livepatch-5.10.102-99.473-1.0-0.amzn2.x86_64
  6. kpatch パッケージをインストールします。

    $ sudo yum install -y kpatch-runtime
  7. 既にインストール済みの場合は、kpatch サービスを更新します。

    $ sudo yum update kpatch-runtime
  8. kpatch サービスを起動します。このサービスは、初期化時または起動時にすべてのカーネルライブパッチをロードします。

    $ sudo systemctl enable kpatch.service
  9. Amazon Linux 2 Extras Library のカーネルライブパッチというトピックを有効にします。このトピックには、カーネルライブパッチが含まれています。

    $ sudo amazon-linux-extras enable livepatch

利用可能なカーネルライブパッチの表示

Amazon Linux のセキュリティアラートは、Amazon Linux Security Center に公開されます。カーネルライブパッチのアラートを含む Amazon Linux 2 のセキュリティアラートの詳細については、Amazon Linux Security Center を参照してください。カーネルライブパッチには、ALASLIVEPATCH というプレフィクスが付きます。Amazon Linux Security Center では、バグに対応するカーネルライブパッチは一覧に表示されていない場合があります。

アドバイザリおよび CVE に対する利用可能なカーネルライブパッチは、コマンドラインを使用して見つけることもできます。

アドバイザリに対する利用可能なすべてのカーネルライブパッチを一覧表示するには

次のコマンドを使用します。

$ yum updateinfo list

出力例を次に示します。

Loaded plugins: extras_suggestions, kernel-livepatch, langpacks, priorities, update-motd ALAS2LIVEPATCH-2020-002 important/Sec. kernel-livepatch-5.10.102-99.473-1.0-3.amzn2.x86_64 ALAS2LIVEPATCH-2020-005 medium/Sec. kernel-livepatch-5.10.102-99.473-1.0-4.amzn2.x86_64 updateinfo list done

CVE に対する利用可能なすべてのカーネルライブパッチを一覧表示するには

次のコマンドを使用します。

$ yum updateinfo list cves

出力例を次に示します。

Loaded plugins: extras_suggestions, kernel-livepatch, langpacks, priorities, update-motdamzn2-core/2/x86_64 | 2.4 kB 00:00:00 CVE-2019-15918 important/Sec. kernel-livepatch-5.10.102-99.473-1.0-3.amzn2.x86_64 CVE-2019-20096 important/Sec. kernel-livepatch-5.10.102-99.473-1.0-3.amzn2.x86_64 CVE-2020-8648 medium/Sec. kernel-livepatch-5.10.102-99.473-1.0-4.amzn2.x86_64 updateinfo list done

カーネルライブパッチの適用

カーネルライブパッチは、yum パッケージマネージャーを使用して、通常の更新プログラムを適用するのと同じ方法で適用します。カーネルライブパッチの yum プラグインは、適用するカーネルライブパッチを管理し、再起動も必要ありません。

ヒント

カーネルが安全かつ最新に保たれるよう、カーネルライブパッチを使用して定期的にカーネルを更新することをお勧めします。

特定のカーネルライブパッチを適用するか、利用可能なカーネルライブパッチを定期的なセキュリティ更新プログラムと一緒に適用するかを選択できます。

特定のカーネルライブパッチを適用するには

  1. 利用可能なカーネルライブパッチの表示」で説明されているコマンドのいずれかを使用して、カーネルライブパッチのバージョンを取得します。

  2. Amazon Linux 2 カーネルのカーネルライブパッチを適用します。

    $ sudo yum install kernel-livepatch-kernel_version.x86_64

    例えば、次のコマンドは、Amazon Linux 2 カーネルバージョン 5.10.102-99.473 のカーネルライブパッチを適用します。

    $ sudo yum install kernel-livepatch-5.10.102-99.473-1.0-4.amzn2.x86_64

利用可能なカーネルライブパッチを定期的なセキュリティ更新プログラムと一緒に適用するには

次のコマンドを使用します。

$ sudo yum update --security

バグ修正プログラムを含めるには、--security オプションを省略します。

重要
  • カーネルライブパッチを適用しても、カーネルバージョンは更新されません。バージョンは、インスタンスを再起動した後でのみ新しいバージョンに更新されます。

  • Amazon Linux 2 カーネルは、カーネルライブパッチを 3 か月間入手できます。3 か月が過ぎると、そのカーネルバージョンの新しいカーネルライブパッチはリリースされなくなります。3 か月が過ぎた後にカーネルライブパッチを引き続き入手するには、インスタンスを再起動して新しいカーネルバージョンに移行する必要があります。これにより、次の 3 か月も引き続きカーネルライブパッチを入手することができます。お使いのカーネルバージョンのサポート期間を確認するには、yum kernel-livepatch supported を実行します。

適用されたカーネルライブパッチの表示

適用されたカーネルライブパッチを表示するには

次のコマンドを使用します。

$ kpatch list

このコマンドは、ロードおよびインストールされたセキュリティ更新プログラムのカーネルライブパッチのリストを返します。出力例を次に示します。

Loaded patch modules: livepatch_cifs_lease_buffer_len [enabled] livepatch_CVE_2019_20096 [enabled] livepatch_CVE_2020_8648 [enabled] Installed patch modules: livepatch_cifs_lease_buffer_len (5.10.102-99.473.amzn2.x86_64) livepatch_CVE_2019_20096 (5.10.102-99.473.amzn2.x86_64) livepatch_CVE_2020_8648 (5.10.102-99.473.amzn2.x86_64)
注記

1 つのカーネルライブパッチには、複数のライブパッチが含まれていてインストールされる場合があります。

カーネルライブパッチの無効化

カーネルライブパッチを使用する必要がなくなった場合は、いつでも無効にできます。

カーネルライブパッチを無効にするには

  1. 適用されたカーネルライブパッチの RPM パッケージを削除します。

    $ sudo yum kernel-livepatch disable
  2. カーネルライブパッチの yum プラグインをアンインストールします。

    $ sudo yum remove yum-plugin-kernel-livepatch
  3. インスタンスを再起動します。

    $ sudo reboot

制約事項

カーネルライブパッチには以下の制限があります。

  • カーネルライブパッチの適用中は、休止を実行したり、高度なデバッグツール (SystemTap、kprobes、eBPF ベースのツールなど) を使用したり、カーネルライブパッチを適用したインフラストラクチャで使用されている ftrace の出力ファイルにアクセスしたりすることはできません。

よくある質問

Amazon Linux 2 のカーネルライブパッチに関するよくある質問については、「Amazon Linux 2 に関するよくある質問」を参照してください。