Alibaba Cloud Linux は、カーネルホットフィックスを RPM パッケージとして提供し、再起動なしでセキュリティ脆弱性やバグにパッチを適用できます。このトピックでは、適用可能なホットフィックスの検索、インストール、問題のあるホットフィックスの削除、およびサーバー再起動時にホットフィックスを自動的にリロードするかどうかを制御する方法について説明します。
仕組み
カーネルライブパッチ (KLP) は、kpatch ユーティリティを使用して、ホットフィックスモジュールを実行中のカーネルに直接適用します。利用可能なホットフィックスには次の 2 種類があります。
CVE ホットフィックス (プレフィックス
HOTFIX-SA-):共通脆弱性識別子 (CVE) のセキュリティ問題に対応します。バグフィックスホットフィックス (プレフィックス
HOTFIX-BA-):セキュリティ以外のバグに対応します。CVE ID は関連付けられていません。
各ホットフィックスは、特定のカーネルのマイナーバージョン (たとえば、Alibaba Cloud Linux 3 の場合は 5.al8、Alibaba Cloud Linux 2 の場合は al7) を対象とします。ホットフィックスは、そのマイナーバージョンが実行中のカーネルと一致する場合にのみ適用されます。
カーネルホットフィックスの検索とダウンロード
ホットフィックスは、CVE 公開プラットフォームまたは YUM リポジトリの 2 つのソースから入手できます。
CVE 公開プラットフォームから
CVE 公開プラットフォームには、リリースされたすべてのホットフィックスの詳細とダウンロードリンクが一覧表示されます。
ご利用のディストリビューションに対応するセキュリティアドバイザリページを開きます。
Alibaba Cloud Linux 2.1903:Alibaba Cloud Linux 2.1903 Security Advisories
Alibaba Cloud Linux 3:Alibaba Cloud Linux 3 Security Advisories
[アドバイザリ ID] をクリックしてリストを並べ替えます。
HOTFIXで始まる ID のアドバイザリがカーネルホットフィックスです。
各アドバイザリには、次の列が含まれています。
列 説明 [影響を受けるパッケージ] ホットフィックスパッケージ名です。プレフィックスは kernel-hotfix-で、サフィックスは OS のマイナーバージョン番号です。これを使用して、ホットフィックスがご使用のシステムに適用されるかどうかを確認します。[アドバイザリ ID] リリースの識別子です。クリックすると、ホットフィックスの詳細が表示され、RPM パッケージをダウンロードできます。 [CVE ID (複数可)] 修正される CVE 識別子です。バグフィックスホットフィックスの場合は空欄です。 [アドバイザリ ID] をクリックして、ホットフィックスの詳細ページを開きます。

このページには、RPM パッケージ名が次の形式で表示されます。
kernel-hotfix-{hotfix_id}-{minor_version}-{hotfix_version}-{timestamp}.{major_version}.{architecture}.rpmたとえば、
kernel-hotfix-5928799-5.al8-1.0-20210720165816.al8.x86_64.rpmは次のように構成されています。フィールド 値 意味 ホットフィックス ID 5928799このホットフィックスの一意の識別子 マイナーバージョン 5.al8マイナーバージョンが 5.al8の Alibaba Cloud Linux 3 カーネルに適用されますホットフィックスバージョン 1.0RPM パッケージのバージョン タイムスタンプ 202107201658162021 年 7 月 20 日 16:58:16 に作成 メジャーバージョン al8Alibaba Cloud Linux 3 (すべての AL3 システムは al8を使用し、AL2 システムはal7を使用します)アーキテクチャ x86_64システムアーキテクチャ 一部の古いホットフィックスバージョンでは、タイムスタンプフィールドに無効な値が表示される場合があります。
YUM リポジトリから
sudo yum list | grep "kernel-hotfix" を実行すると、利用可能なすべてのホットフィックスが表示されます。これについては、後述のインストール手順で説明します。
カーネルホットフィックスのインストール
前提条件
開始する前に、次の条件を満たしていることを確認してください。
Alibaba Cloud Linux の ECS インスタンスへの SSH アクセス。接続方法については、「Connection methods」をご参照ください。
インスタンスの
sudo権限
操作手順
kpatch ユーティリティをインストールします。
sudo yum -y install kpatch実行中のカーネルのバージョンを確認します。
sudo uname -r出力例:
5.10.23-5.al8.x86_64マイナーバージョン番号は、最初のハイフンの後のセグメントです (この例では
5.al8)。この値に一致するホットフィックスのみがシステムに適用されます。お使いのカーネルで利用可能なホットフィックスを一覧表示します。
sudo yum list | grep "kernel-hotfix" | grep "" たとえば、マイナーバージョン番号が
5.al8の場合は、次を実行します。sudo yum list | grep "kernel-hotfix" | grep "5.al8"出力例:
kernel-hotfix-5928799-5.al8.x86_64 1.0-20210720165816.al8 alinux3-plus kernel-hotfix-5956925-5.al8.x86_64 1.0-20210726171200.al8 alinux3-plusホットフィックスをインストールします。
<package-name>を前の手順で取得した完全なパッケージ名に置き換えます。sudo yum -y install <package-name>例:
sudo yum -y install kernel-hotfix-5928799-5.al8.x86_64yum を使用してインストールする場合、パッケージ名に
.rpmを追加しないでください。
インストールの確認
次のコマンドを実行して、ホットフィックスがロードされ、アクティブになっていることを確認します。
sudo kpatch list期待される出力:
Loaded patch modules:
kpatch_5928799 [enabled]
Installed patch modules:
kpatch_5928799 (5.10.23-5.al8.x86_64)Loaded patch modules の下にある [enabled] は、ホットフィックスが実行中のカーネルに適用されていることを示します。
カーネルホットフィックスの削除
特定の問題を引き起こしたり、期待どおりに機能しなかったりするホットフィックスを削除します。
前提条件
開始する前に、次の条件を満たしていることを確認してください。
インスタンスの
sudo権限
操作手順
インストール済みのホットフィックスを一覧表示します。
sudo yum list installed | grep kernel-hotfix出力例:
kernel-hotfix-5928799-5.al8.x86_64 1.0-20210720165816.al8 @alinux3-plus問題のあるホットフィックスを削除します。
<package-name>を前の手順で取得したパッケージ名に置き換えます。sudo yum -y remove <package-name>例:
sudo yum -y remove kernel-hotfix-5928799-5.al8.x86_64
削除の確認
ホットフィックスが削除されたことを確認します。
sudo kpatch list期待される出力:
Loaded patch modules:
Installed patch modules:両方のセクションが空であることは、ホットフィックスがインストールされておらず、有効でないことを示します。
kpatch サービスの無効化
kpatch サービスを無効にすると、インストールされているすべてのカーネルホットフィックスモジュールが、次回の再起動時に自動的にロードされなくなります。ホットフィックスパッケージはディスク上に残ります。これは、起動時にホットフィックスを適用するかどうかを制御するだけです。
ホットフィックスがインストールされ有効になっているが、サーバーの再起動時にオペレーティングシステムにすべてのホットフィックスのカーネルモジュールをロードさせたくない場合は、次の手順を実行して kpatch サービスを無効にできます。
前提条件
開始する前に、次の条件を満たしていることを確認してください。
インスタンスの
sudo権限
操作手順
kpatch サービスが現在有効になっていることを確認します。
sudo systemctl is-enabled kpatch.service出力
enabledは、サービスがアクティブであることを示します。kpatch サービスを無効にします。
sudo systemctl disable kpatch.service期待される出力:
Removed symlink /etc/systemd/system/multi-user.target.wants/kpatch.service.
サービスが無効になっていることの確認
sudo systemctl status kpatch.service出力の Loaded: 行に disabled が表示されると、サービスが無効になっていることが確認されます:
kpatch.service - "Apply kpatch kernel patches"
Loaded: loaded (/usr/lib/systemd/system/kpatch.service; disabled; vendor preset: disabled)kpatch サービスを再度有効にし、再起動時のホットフィックスの自動ロードを復元するには、sudo systemctl enable kpatch.service を実行します。