- VPSを運用しているが、カーネル更新をしたことがない方
- カーネルの脆弱性リスクを理解したい方
- セキュリティ更新の自動化を設定したい方
なぜカーネル更新が重要なのか
カーネルはOSの中核部分で、ハードウェアとソフトウェアの橋渡しをします。カーネルに脆弱性があると、攻撃者がroot権限を奪取できる可能性があります。
放置するとどうなる?
カーネルの脆弱性は定期的に発見されています。古いバージョンのまま放置すると、公開された攻撃コード(PoC)を使って誰でも攻撃できる状態になります。
カーネルのバージョンを確認する
まず現在のカーネルバージョンを確認します。
uname -r
6.1.0-22-amd64
次に、利用可能な更新があるか確認します。
sudo apt update
apt list --upgradable 2>/dev/null | grep linux
linux-image-amd64/oldstable-security 6.1.162-1 amd64 [upgradable from: 6.1.94-1]
upgradable と表示されたら、セキュリティ修正が未適用です。特に linux-image はカーネル本体なので、早めの更新が推奨されます。
カーネルを更新する
Step 1 パッケージを更新する
sudo apt update && sudo apt upgrade -y
カーネルパッケージが含まれている場合、新しいカーネルイメージがインストールされます。
Step 2 サーバーを再起動する
カーネルの更新はファイルを置き換えるだけで、実行中のカーネルには反映されません。再起動が必須です。
sudo reboot
再起動の影響
再起動するとサイトが一時的にダウンします。Dockerコンテナに restart: always を設定していれば、再起動後に自動復旧します。メンテナンス時間帯に実施しましょう。
Step 3 更新を確認する
再起動後、SSH接続してカーネルバージョンを確認します。
uname -r
6.1.0-43-amd64
バージョンが更新されていれば成功です。Dockerコンテナも起動しているか確認しましょう。
docker ps
自動セキュリティ更新を設定する
手動で毎回更新するのは現実的ではありません。unattended-upgrades を使えば、セキュリティ更新を自動適用できます。
Step 1 インストール
sudo apt install unattended-upgrades -y
Step 2 有効化
sudo dpkg-reconfigure -plow unattended-upgrades
「自動的にセキュリティアップデートをダウンロードしてインストールしますか?」と聞かれるので「はい」を選択します。
Step 3 設定を確認
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
上記の設定により、セキュリティ更新のみが自動適用されます。通常のパッケージ更新は含まれないため、意図しない変更が入るリスクは低いです。
カーネル更新の自動再起動
カーネル更新は再起動が必要なため、自動更新だけでは反映されません。定期的に uname -r で確認し、更新がある場合は手動で再起動しましょう。
まとめ
- カーネルの確認:
uname -rとapt list --upgradableで現状を把握 - 更新手順:
apt update && apt upgrade -y→rebootで適用 - 自動更新:
unattended-upgradesでセキュリティパッチを自動適用 - 定期確認: カーネル更新は再起動が必要なため、手動で定期的に確認する