🐧 Linux 総合学習プラットフォーム
セキュリティ/権限強化 ・ 中級

セキュリティ更新の運用

サーバーは一度立てたら終わりではありません。日々新しい脆弱性が見つかり、CVE番号で管理・公開されます。この記事では、CVEの読み方から、apt update/upgradeの復習、Debian・Ubuntu系で自動セキュリティ更新を担うunattended-upgrades、再起動が必要な更新まで、更新運用の全体像を整理します。「入れっぱなしサーバ」が最も危険という原則も押さえます。

サーバーは公開した瞬間から、世界中のスキャンにさらされ続ける。ソフトウェアに脆弱性が見つかれば、それを突く攻撃はあっという間に出回る。だからこそ、更新を継続する運用そのものがセキュリティ対策の柱になる。

🔗
たとえセキュリティ更新は、家の鍵の弱点が見つかるたびに新しい鍵に交換するようなものだ。交換をサボった家だけが、後から狙われやすくなる。

🏷️ CVE番号の読み方

世の中で見つかった脆弱性には、CVE(Common Vulnerabilities and Exposures)という共通の識別番号が振られる。書式はCVE-発見年-通し番号で、例えばCVE-2024-12345なら「2024年に登録された、12345番目の脆弱性」という意味になる。

💡
ポイントCVE番号は脆弱性そのものの深刻さを表す数字ではない。あくまで「どの脆弱性を指しているか」を一意に特定するための識別子であり、深刻度は別途CVSSというスコアで示されることが多い。
つまずき数字が新しいから危険、古いから安全とは限らない。何年も前のCVEでも、対象ソフトウェアを更新していなければそのリスクは今も生きたままになる。
コツ自分のサーバーで使っているソフトウェア名とバージョンをメモしておくと、ニュースで見かけたCVEが自分の環境に関係あるかどうかを素早く判断できる。日頃からパッケージのバージョンを把握しておく習慣が、いざという時の初動を速くする。

CVEは事件番号のようなものだ。番号だけでは事件の重さは分からないが、番号があるおかげで、ニュースでも掲示板でも同じ脆弱性の話をしていると確実に照合できる。

🔄 updateとupgradeの復習から自動化へ

Debian/Ubuntu系では、apt updateでパッケージの最新情報一覧を取得し、apt upgradeで実際にパッケージを新しいバージョンへ入れ替える、という2段階の流れが基本になる。updateは「更新があるか調べるだけ」、upgradeは「実際に入れ替える」と覚えておくと混同しない。

定期メンテナンスの定番の2行。 $ sudo apt update $ sudo apt upgrade -y 1行目で最新情報を取得し、2行目で実際にインストール済みパッケージを更新する。
apt update最新情報を調べるだけapt upgrade実際に入れ替える最新の状態に

手作業でこの2行を毎日打つのは現実的ではない。人手を介さず定期的に更新を適用する仕組みが求められる理由がここにある。

🤖 unattended-upgrades

Debian/Ubuntu系には、セキュリティ更新を自動で適用してくれるunattended-upgradesという仕組みが用意されている。有効にしておくと、決まったタイミング(多くは1日1回程度)で、セキュリティ関連の更新パッケージだけを自動で取得・適用してくれる。

💡
ポイントunattended-upgradesは既定でセキュリティ更新に絞って自動適用する設計が一般的だ。機能追加を伴う通常のアップグレードまで無条件に自動化するわけではない点は覚えておきたい。

設定ファイルは /etc/apt/apt.conf.d/ 配下にあり、対象にするリポジトリの種類や、自動再起動を許可するかどうかなどを調整できる。導入直後は、設定の中身を一度確認しておくと安心だ。

unattended-upgradesは、家の鍵の交換を自動で代行してくれる管理人のようなものだ。任せきりにするのではなく、たまにはどんな鍵に交換されたか記録を見返す姿勢も大事になる。

🔁 再起動が要る更新(カーネル)

パッケージの中には、更新を適用しただけでは効果が反映されないものがある。代表格がLinuxカーネル本体だ。カーネルの更新は、動いているプロセスにその場で反映されるものではなく、次回起動時に新しいカーネルへ切り替わる仕組みになっている。

つまり、カーネルにセキュリティ修正が入っても、サーバーを再起動しない限り、実際に動いているのは古い脆弱なカーネルのままということが起こりうる。

つまずき多くのディストリビューションには「再起動が必要かどうか」を知らせる仕組みがある(例えば /var/run/reboot-required というファイルの有無で判定できる環境もある)。更新作業のたびに、この兆候を見落とさないようにする。
コツ本番サービスを止めずに再起動したい場合は、負荷の低い時間帯を選ぶ、複数台構成なら1台ずつ順番に再起動する(ローリング再起動)といった工夫が有効になる。
新カーネルを取得・適用再起動するまで旧カーネルのまま動作rebootここで初めて反映

💤 入れっぱなしサーバが一番危ない

セキュリティの世界でよく言われるのが、最新の対策を入れたサーバーより、何年も更新していない放置サーバーの方がはるかに危ないという事実だ。攻撃者は最新の脆弱性より、何年も直っていない既知の穴を探す方が労力が少なくて済む。

🔗
たとえ入れっぱなしのサーバーは、何年も鍵を変えていない空き家のようなものだ。侵入の難易度を見比べたとき、攻撃者は当然そちらを狙う。
💡
ポイントセキュリティは一度の強固な設定より、更新を止めない継続の方が効く。派手な対策を1回入れるより、地味な更新を止めないことの方が長期的には効果が大きい。

更新を止めていた期間が長いサーバーほど、再開したときに一度に適用すべき更新の量も増え、動作確認の手間が膨らむ。こまめに更新を続ける方が、結局は1回あたりの作業も軽くて済む。

更新は面倒に見えて、実は最もコストの低い防御策だ。CVEという共通言語を知り、自動化の仕組みを整え、再起動という最後の一手を忘れない。この3つが揃って、はじめて更新運用と呼べる状態になる。

この項目に出てくる用語

CVEしーぶいいー
世界共通で使われる脆弱性の識別番号。書式はCVE-発見年-通し番号。
unattended-upgradesあなてんでっど あっぷぐれーど
Debian/Ubuntu系で、セキュリティ更新を自動的に取得・適用する仕組み。

▶ 学習アプリでこの続きを学ぶ・演習する