Linuxサーバーを運用していると、必ずこういう状況に直面します。深夜、カーネルの深刻な脆弱性が公開される。ローカル権限昇格(LPE)系で、CVSS8.8以上。しかし本番環境は24時間365日稼働中であり、次のメンテナンス窓は3週間後。「パッチを当てたいが再起動できない。どうする?」――この板挟みに悩んだことはありませんか。
この記事では、Linuxカーネルの脆弱性パッチを再起動なしに適用できる「カーネルライブパッチ(Kernel Live Patching)」について、仕組みから具体的な設定手順まで現場で使えるレベルで解説します。RHEL/AlmaLinux/Rocky Linux系のkpatch、UbuntuのCanonical Livepatch、そして予算が限られた中小企業向けの現実的な選択肢まで網羅します。

カーネルライブパッチとは?なぜ今重要か
カーネルライブパッチとは、実行中のLinuxカーネルに対して、システムを停止・再起動させずにセキュリティパッチを適用する技術です。
従来のパッチ適用フローは「パッケージ更新 → 再起動」が必須でした。カーネルはOSの根幹であり、稼働中に書き換えることは非常に危険とされてきたからです。ライブパッチはこの常識を、Linuxカーネルが提供するftraceという関数フックの仕組みを使って覆しました。
動作原理はシンプルです。
・脆弱な関数をftraceでフックし、修正済みの新しい実装に処理を差し替える
・差し替えは原子的(atomic)に行われ、実行中のリクエストが中断されない
・パッチを取り除けばフックが外れ、元の動作に戻せる
どんな脅威に有効か
カーネルライブパッチが特に力を発揮するのは、「ローカル権限昇格(LPE)系の脆弱性」です。外部から直接悪用されるわけではないため「後回しでよい」と思われがちですが、現実の攻撃シナリオはそう甘くありません。
攻撃者がWebアプリの脆弱性からWebシェルを設置し、一般ユーザー権限でサーバー内部に潜伏。その後、カーネルLPE脆弱性を使ってroot昇格する二段構えのシナリオは、インシデント報告書で繰り返し登場するパターンです。
再起動まで待てない。しかし脆弱なまま放置するのはリスク。この矛盾をライブパッチは解消します。
主要なライブパッチ実装の比較
現在、実用的なカーネルライブパッチの選択肢は主に3つあります。
| 実装 | 対象ディストリビューション | 費用 | 特徴 |
|---|---|---|---|
| kpatch + kpatch-dnf | RHEL 7/8/9、AlmaLinux、Rocky Linux | RHELサブスクに含む | Red Hat公式。dnfで自動管理が可能 |
| Canonical Livepatch | Ubuntu 20.04/22.04/24.04 LTS | Ubuntu Pro(個人5台まで無料) | 30分ごとに自動チェック・自動適用 |
| KSplice | Oracle Linux、RHEL系 | Oracle Linux Premierサブスク | 最初期の実装。Oracle Linux向け |
以下では最も普及しているkpatch(RHEL/AlmaLinux/Rocky Linux向け)とCanonical Livepatch(Ubuntu向け)を実践形式で解説します。
RHEL/AlmaLinux/Rocky LinuxでのKernel Live Patch設定
1. カーネルバージョン確認とパッケージインストール
まず現在のカーネルバージョンを確認します。インストールするkpatchパッチパッケージはカーネルバージョンに対応したものを選ぶ必要があるためです。
# 現在のカーネルバージョンを確認 uname -r # 例: 5.14.0-427.13.1.el9_4.x86_64 # kpatch本体とdnfプラグインをインストール dnf install kpatch kpatch-dnf # 利用可能なパッチパッケージを確認(カーネルバージョンに対応したものを探す) dnf list kpatch-patch-*
RHELの場合は `subscription-manager status` でサブスクリプションが有効か確認してから進めてください。AlmaLinuxおよびRocky Linuxはサブスクリプション不要で利用できます。
2. カーネル対応のkpatchパッケージをインストール
# カーネル 5.14.0-427.13.1.el9_4 の場合のインストール例 # ハイフンをアンダースコアに変換したパッケージ名になる dnf install kpatch-patch-5_14_0-427_13_1_el9_4 # インストール後、適用済みパッチを確認 kpatch list # Loaded patch modules: # kpatch_5_14_0_427_13_1_el9_4_1 [enabled]
「[enabled]」と表示されていれば、パッチは現在実行中のカーネルに適用されています。`kpatch list` で「Loaded」と「Installed」の両方に同じモジュールが表示されることを確認してください。
3. kpatch-dnfによる自動管理の設定
kpatch-dnfプラグインを有効にすると、カーネルアップデート時に対応するライブパッチパッケージが自動的にインストールされます。
# kpatch-dnfプラグインの設定を確認 cat /etc/dnf/plugins/kpatch.conf # [main] # enabled = 1 ← これが有効になっていればOK # どのCVEに対応するパッチか確認する方法 rpm -q --changelog kpatch-patch-5_14_0-427_13_1_el9_4 | head -30
Linux自動アップデート(dnf-automatic)と組み合わせることで、カーネルパッケージ更新とライブパッチの両方を自動化できます。
UbuntuでのCanonical Livepatch設定
1. Ubuntu Proへの登録
Canonical Livepatchを利用するには、Ubuntu Proへの登録が必要です。個人または小規模利用なら最大5台まで無料です。ubuntu.com/pro でUbuntu SSOアカウントを作成するとトークンが取得できます。
# Ubuntu Proのトークンでシステムをアタッチ sudo pro attach
# アタッチ後のサービス一覧確認 sudo pro status
2. Livepatchの有効化と確認
# Livepatchを有効化 sudo pro enable livepatch # 適用状態を確認 sudo canonical-livepatch status # 詳細情報(適用済みCVE一覧など) sudo canonical-livepatch status --verbose
3. 自動適用の動作確認
Canonical Livepatchは30分ごとに自動チェックし、新しいパッチがあれば自動適用します。手動で今すぐ確認・適用したい場合は次のコマンドを使います。
# 手動チェックと即時適用 sudo canonical-livepatch refresh # 自動実行サービスの確認 systemctl status canonical-livepatchd # 適用ログをjournalctlで確認 journalctl -u canonical-livepatchd --since="7 days ago"
中小企業でも今日からできること
「RHELサブスクリプションも、Ubuntu Proの有償枠も、予算が出ない」という現場は少なくありません。そういった環境でも実践できる現実的なアプローチを紹介します。
・AlmaLinux / Rocky Linuxの無償kpatch活用: CentOS後継として広く普及しているこれらのディストリビューションはkpatchを無償で利用できます。パッチの提供タイミングにラグがある場合もありますが、全く対策しないよりは大幅にリスクを下げられます。
・定期再起動サイクルの確立を最優先に: ライブパッチはあくまで「次の再起動まで」の保険です。月次または四半期ごとのメンテナンスウィンドウを設け、カーネル更新と再起動を計画的に実施することがベースラインです。パッチ管理の基本サイクルを整備した上でライブパッチを組み合わせることが、最も費用対効果の高いアプローチです。
・CVSSによる優先度判断: すべての脆弱性にライブパッチが提供されるわけではありません。「CVSS 7.0以上のローカル権限昇格系を最優先、それ以外は通常サイクルで対応」というルールを決めておくと、対応工数を合理的に管理できます。
・KernelCare(商用・月額課金): CloudLinux社が提供するサービスで、AlmaLinux・Rocky Linuxへのライブパッチに対応しています。サーバー1台あたり月額数ドル程度から利用でき、RHELサブスクリプションより安価なケースもあります。
Linuxサーバーの基本的な堅牢化設定については、Linuxサーバー初期セキュリティ設定チェックリストも合わせて参照してください。
よくある誤解と注意点
【注意1】ライブパッチは定期再起動の代替にはならない
ライブパッチを導入しても、定期的なカーネルアップデートと再起動は引き続き必要です。ライブパッチはカーネル全体を最新版に置き換えるものではなく、特定の脆弱な関数を一時的に差し替えるものです。
特に注意が必要な点として、`uname -r` で表示されるカーネルバージョンはライブパッチ適用後も変わりません。「バージョンが古いまま」に見えても、ライブパッチが適用されていれば特定の脆弱性は封じられています。逆に言えば、ライブパッチ未対応の脆弱性は引き続き残ります。
【注意2】提供されるパッチは高リスク脆弱性に絞られる
ライブパッチとして提供されるのは、セキュリティ上の高リスク脆弱性(主にCVSSスコアが高いもの)に限られます。バグ修正やパフォーマンス改善には適用されません。`kpatch list` や `canonical-livepatch status` を定期的に確認し、何が適用されていて何がされていないかを把握しておくことが重要です。
【注意3】EOLカーネルにはパッチが提供されない
ライブパッチはサポート期間内のカーネルバージョンにのみ提供されます。メジャーバージョンのサポート終了が近づくと、ライブパッチの提供も縮小・停止されます。カーネルパラメータのセキュリティ設定と合わせて、カーネルバージョンの計画的な管理を行いましょう。
【注意4】ライブパッチ適用履歴を記録する
インシデント発生時の調査や、コンプライアンス対応のため、ライブパッチの適用履歴を残しておくことが重要です。
# RHEL/AlmaLinux系:適用済みパッチとCVE対応を確認 kpatch list rpm -q --changelog kpatch-patch-* | grep CVE # Ubuntu系:Livepatchの適用ログ sudo canonical-livepatch status --verbose journalctl -u canonical-livepatchd | grep -E "(applied|patched|CVE)"

本記事のまとめ
| 項目 | 内容 |
|---|---|
| カーネルライブパッチとは | 再起動なしに、ftraceで脆弱な関数を差し替えるカーネルパッチ技術 |
| RHEL/AlmaLinux系 | kpatch + kpatch-dnfで自動管理。dnf install kpatch-patch-[バージョン] |
| Ubuntu系 | Ubuntu Pro登録後にCanonical Livepatch有効化。30分ごと自動チェック |
| 何が保護されるか | 高リスクセキュリティ脆弱性(主にLPE系)のみ。全脆弱性ではない |
| 中小企業の現実解 | AlmaLinux無償kpatch+定期再起動サイクルの組み合わせが費用対効果高 |
カーネルライブパッチは「再起動できないから脆弱なまま放置」という最悪の選択肢を回避するための、現場で使える実践的なツールです。本番環境の可用性とセキュリティを両立させる選択肢として、ぜひ運用に組み込んでみてください。
LinuxのセキュリティコマンドやOS設定の詳細については、姉妹サイトLinuxMaster.JPでも幅広く解説しています。
PR
ファイル権限・SSH設定・SELinux・ファイアウォールまで、Linuxサーバーのセキュリティ設定を体系的に学べる一冊。カーネルパッチ管理の文脈にも通じる実践的な内容です。
