セキュリティ更新の運用
サーバーは一度立てたら終わりではありません。日々新しい脆弱性が見つかり、CVE番号で管理・公開されます。この記事では、CVEの読み方から、apt update/upgradeの復習、Debian・Ubuntu系で自動セキュリティ更新を担うunattended-upgrades、再起動が必要な更新まで、更新運用の全体像を整理します。「入れっぱなしサーバ」が最も危険という原則も押さえます。
サーバーは公開した瞬間から、世界中のスキャンにさらされ続ける。ソフトウェアに脆弱性が見つかれば、それを突く攻撃はあっという間に出回る。だからこそ、更新を継続する運用そのものがセキュリティ対策の柱になる。
🏷️ CVE番号の読み方
世の中で見つかった脆弱性には、CVE(Common Vulnerabilities and Exposures)という共通の識別番号が振られる。書式はCVE-発見年-通し番号で、例えばCVE-2024-12345なら「2024年に登録された、12345番目の脆弱性」という意味になる。
CVEは事件番号のようなものだ。番号だけでは事件の重さは分からないが、番号があるおかげで、ニュースでも掲示板でも同じ脆弱性の話をしていると確実に照合できる。
🔄 updateとupgradeの復習から自動化へ
Debian/Ubuntu系では、apt updateでパッケージの最新情報一覧を取得し、apt upgradeで実際にパッケージを新しいバージョンへ入れ替える、という2段階の流れが基本になる。updateは「更新があるか調べるだけ」、upgradeは「実際に入れ替える」と覚えておくと混同しない。
手作業でこの2行を毎日打つのは現実的ではない。人手を介さず定期的に更新を適用する仕組みが求められる理由がここにある。
🤖 unattended-upgrades
Debian/Ubuntu系には、セキュリティ更新を自動で適用してくれるunattended-upgradesという仕組みが用意されている。有効にしておくと、決まったタイミング(多くは1日1回程度)で、セキュリティ関連の更新パッケージだけを自動で取得・適用してくれる。
設定ファイルは /etc/apt/apt.conf.d/ 配下にあり、対象にするリポジトリの種類や、自動再起動を許可するかどうかなどを調整できる。導入直後は、設定の中身を一度確認しておくと安心だ。
unattended-upgradesは、家の鍵の交換を自動で代行してくれる管理人のようなものだ。任せきりにするのではなく、たまにはどんな鍵に交換されたか記録を見返す姿勢も大事になる。
🔁 再起動が要る更新(カーネル)
パッケージの中には、更新を適用しただけでは効果が反映されないものがある。代表格がLinuxカーネル本体だ。カーネルの更新は、動いているプロセスにその場で反映されるものではなく、次回起動時に新しいカーネルへ切り替わる仕組みになっている。
つまり、カーネルにセキュリティ修正が入っても、サーバーを再起動しない限り、実際に動いているのは古い脆弱なカーネルのままということが起こりうる。
💤 入れっぱなしサーバが一番危ない
セキュリティの世界でよく言われるのが、最新の対策を入れたサーバーより、何年も更新していない放置サーバーの方がはるかに危ないという事実だ。攻撃者は最新の脆弱性より、何年も直っていない既知の穴を探す方が労力が少なくて済む。
更新を止めていた期間が長いサーバーほど、再開したときに一度に適用すべき更新の量も増え、動作確認の手間が膨らむ。こまめに更新を続ける方が、結局は1回あたりの作業も軽くて済む。
更新は面倒に見えて、実は最もコストの低い防御策だ。CVEという共通言語を知り、自動化の仕組みを整え、再起動という最後の一手を忘れない。この3つが揃って、はじめて更新運用と呼べる状態になる。