Linux自動アップデートの設定方法|脆弱性パッチを確実に適用する実践ガイド

Linux Security

「セキュリティパッチが出ているのは知っているけれど、毎回手動で適用するのは手が回らない」――サーバー運用の現場で、こんな悩みを抱えている方は多いのではないでしょうか。

脆弱性情報は日々公開されており、パッチの適用が遅れればその分だけ攻撃のリスクにさらされ続けます。実際、既知の脆弱性を放置したことが原因で侵入を許す事例は後を絶ちません。JPCERT/CCの報告でも、「パッチ適用済みであれば防げた」インシデントが多数を占めています。

この記事では、RHEL系(Rocky Linux、AlmaLinux、CentOS等)のdnf-automaticと、Debian/Ubuntu系のunattended-upgradesを使った自動アップデートの設定方法を、実際のコマンドと設定ファイルを交えて解説します。手動運用から脱却し、パッチ適用の仕組み化を目指しましょう。

Linux自動アップデートの設定方法|脆弱性パッチを確実に適用する実践ガイド

なぜ自動アップデートが必要なのか

Linuxサーバーのセキュリティを維持するうえで、パッチ適用は最も基本的かつ効果の高い対策です。しかし「手動で毎日確認して適用する」運用は、現実的には破綻しがちです。

脆弱性公開から攻撃開始までの時間が短い: 重大な脆弱性が公開されると、24〜48時間以内に攻撃コードが出回ることも珍しくありません。週次や月次の手動確認では間に合わないケースがあります
人手不足の現場では後回しになる: 中小企業の情シス担当者は複数のサーバーを1人で運用していることが多く、パッチ適用の優先度が下がりがちです
「動いているものは触りたくない」心理: アップデートによる不具合を恐れて適用を先送りする心理は理解できますが、既知の脆弱性を放置するリスクのほうが遥かに大きいのが現実です

自動アップデートは、こうした課題を仕組みで解決するためのアプローチです。

自動アップデートの仕組みを理解する

自動アップデートといっても、「すべてのパッケージを無条件に更新する」わけではありません。ディストリビューションが提供するツールには、更新対象の絞り込みや通知のみの運用など、柔軟な設定が用意されています。

RHEL系: dnf-automatic

RHEL 8以降、CentOS Stream、Rocky Linux、AlmaLinuxではdnf-automaticが標準ツールです。dnfのアップデートチェックとダウンロード・適用をsystemdタイマーで自動実行します。

動作モードは設定ファイルで切り替えられます。

通知のみ(download_updates = no, apply_updates = no): 更新があることをメールで通知するだけ。適用は管理者が手動で行う
ダウンロードのみ(download_updates = yes, apply_updates = no): パッケージをダウンロードしておき、適用は手動で行う。適用時の待ち時間を短縮できる
自動適用(download_updates = yes, apply_updates = yes): ダウンロードから適用まで全自動で行う。セキュリティパッチのみに絞ることも可能

Debian/Ubuntu系: unattended-upgrades

Debian、Ubuntuではunattended-upgradesパッケージが自動アップデートを担います。APTの仕組みと連携し、指定した条件に合致するパッケージを自動で更新します。

こちらもデフォルトではセキュリティアップデートのみが対象で、一般のパッケージ更新は手動という安全な設計になっています。

Linux自動アップデートの設定方法|脆弱性パッチを確実に適用する実践ガイド - 解説

RHEL系: dnf-automaticの設定手順

ここからは実際の設定手順を解説します。以下の操作はroot権限(またはsudo)で実行してください。

1. dnf-automaticのインストール

# dnf-automaticをインストール sudo dnf install -y dnf-automatic

RHEL 8/9やRocky Linux、AlmaLinuxでは最小インストールでも利用可能です。

2. 設定ファイルの編集

設定ファイルは/etc/dnf/automatic.confにあります。主要な設定項目を見ていきましょう。

# /etc/dnf/automatic.conf [commands] # セキュリティ関連のアップデートのみに絞る # デフォルト: default(全種類)→ security に変更 upgrade_type = security # ダウンロードを自動で行う # デフォルト: yes download_updates = yes # ダウンロードしたアップデートを自動で適用する # デフォルト: no → yes に変更 apply_updates = yes [emitters] # 通知方法を指定(email, stdio, motd から選択) emit_via = email [email] # 通知メールの送信先 email_to = admin@example.com # メール送信に使うコマンド email_from = root@localhost

ポイントはupgrade_type = securityの設定です。これにより、セキュリティ修正を含むパッケージだけが自動更新の対象になります。機能追加やバグ修正のみのアップデートは除外されるため、意図しない動作変更のリスクを抑えられます。

3. systemdタイマーの有効化

dnf-automaticはsystemdタイマーで定期実行されます。用途に応じて3種類のタイマーが用意されています。

# セキュリティアップデートを自動ダウンロード+自動適用 sudo systemctl enable --now dnf-automatic-install.timer # タイマーの状態を確認 sudo systemctl status dnf-automatic-install.timer # 次回実行予定を確認 sudo systemctl list-timers dnf-automatic-install.timer

利用可能なタイマーは次の3種類です。

dnf-automatic-notifyonly.timer: 更新の有無を通知するだけ。ダウンロードも適用も行わない
dnf-automatic-download.timer: パッケージのダウンロードまで行い、適用は手動
dnf-automatic-install.timer: ダウンロードと適用を両方自動で行う

本番環境でセキュリティパッチの自動適用を行う場合は、dnf-automatic-install.timerを有効化します。

4. 動作確認

設定が正しく反映されているか、手動でテスト実行して確認します。

# 手動でdnf-automaticを実行(テスト) sudo dnf-automatic # ログを確認 sudo journalctl -u dnf-automatic-install.service --since today

メール通知を設定している場合は、テスト実行後にメールが届くことも確認しましょう。

Debian/Ubuntu系: unattended-upgradesの設定手順

1. パッケージのインストールと初期設定

# unattended-upgradesをインストール sudo apt install -y unattended-upgrades # 対話的な初期設定(自動アップデートを有効にするか聞かれる) sudo dpkg-reconfigure -plow unattended-upgrades

dpkg-reconfigureで「はい」を選択すると、APTの定期実行(apt-daily.timer)とunattended-upgradesの連携が自動で設定されます。

2. 更新対象の設定

設定ファイルは/etc/apt/apt.conf.d/50unattended-upgradesです。

# /etc/apt/apt.conf.d/50unattended-upgrades Unattended-Upgrade::Allowed-Origins { # セキュリティアップデートのみ有効(デフォルトで有効) "${distro_id}:${distro_codename}-security"; # 通常のアップデートも含める場合はコメントを外す // "${distro_id}:${distro_codename}-updates"; }; # 更新後に自動で再起動する(カーネルアップデート時に必要) # デフォルト: false → 必要に応じて true に変更 Unattended-Upgrade::Automatic-Reboot "false"; # 自動再起動する時刻を指定(Automatic-Reboot が true の場合) Unattended-Upgrade::Automatic-Reboot-Time "03:00"; # 通知メールの送信先 Unattended-Upgrade::Mail "admin@example.com"; # メール通知のタイミング(always, only-on-error, on-change) Unattended-Upgrade::MailReport "on-change"; # 不要になった依存パッケージを自動削除 Unattended-Upgrade::Remove-Unused-Dependencies "true";

3. 自動実行の間隔設定

APTの定期実行間隔は/etc/apt/apt.conf.d/20auto-upgradesで制御します。

# /etc/apt/apt.conf.d/20auto-upgrades # パッケージリストの自動更新(1 = 毎日) APT::Periodic::Update-Package-Lists "1"; # unattended-upgradesの自動実行(1 = 毎日) APT::Periodic::Unattended-Upgrade "1"; # ダウンロード済みパッケージの自動削除(7 = 7日ごと) APT::Periodic::AutocleanInterval "7";

4. 動作確認

# ドライラン(実際には適用せず動作をシミュレーション) sudo unattended-upgrades --dry-run --debug # ログを確認 cat /var/log/unattended-upgrades/unattended-upgrades.log

--dry-runオプションを使えば、実際にパッケージを更新せずに「何が更新されるか」を事前に確認できます。本番環境への導入前に必ず実行してください。

中小企業でも今日からできること

自動アップデートは、セキュリティ専門チームがいなくても導入できる、費用対効果の高い対策です。

まずはセキュリティパッチだけを自動化する: 全パッケージの自動更新に不安がある場合は、セキュリティアップデートのみに限定すれば影響範囲を最小限にできます
通知だけの運用から始める: いきなり自動適用が不安なら、「更新があればメールで通知する」設定から始めて、慣れたら自動適用に切り替える段階的なアプローチも有効です
ステージング環境でテストする: 本番と同じ構成のテスト環境があれば、自動アップデート後に問題が起きないか事前に検証できます。本番環境への適用を1日遅らせる運用も効果的です
カーネルアップデートの再起動計画を立てる: カーネルの更新は再起動が必要です。メンテナンスウィンドウ(深夜帯等)に自動再起動する設定にするか、手動で再起動するかをあらかじめ決めておきましょう

Linuxの基本的な運用スキルについては、姉妹サイトLinuxMaster.JPでも詳しく解説しています。

よくある誤解と注意点

1. 「自動アップデートで本番環境が壊れるのでは」

最も多い懸念ですが、セキュリティアップデートに限定すれば、APIの変更や機能の廃止を含むことはほぼありません。セキュリティパッチはバグ修正に特化しており、既存の動作を変えないように設計されています。ただしゼロリスクではないため、重要なシステムではステージング環境での事前検証を推奨します。

2. 「アップデートすれば安全」ではない

自動アップデートはあくまで「既知の脆弱性にパッチを当てる」仕組みです。ゼロデイ攻撃(パッチが存在しない脆弱性を突く攻撃)には対応できません。firewalldによるアクセス制御、ログ監視、権限管理など、他のセキュリティ対策と組み合わせた多層防御が重要です。

3. 「全パッケージを自動更新するのがベストプラクティス」ではない

Webアプリケーションが特定のライブラリバージョンに依存している場合、自動更新でバージョンが上がると動作しなくなる可能性があります。セキュリティパッチのみ自動、それ以外は計画的に手動更新という運用が現実的です。

4. カーネルアップデートは再起動しないと反映されない

カーネルのセキュリティパッチを適用しても、OSを再起動しなければ古いカーネルのまま動作し続けます。needs-restarting -r(RHEL系)や/var/run/reboot-requiredの存在確認(Debian/Ubuntu系)で再起動が必要かどうかを定期的にチェックしましょう。

# RHEL系: 再起動が必要か確認 sudo needs-restarting -r # Debian/Ubuntu系: 再起動が必要か確認 [ -f /var/run/reboot-required ] && cat /var/run/reboot-required

Linux自動アップデートの設定方法|脆弱性パッチを確実に適用する実践ガイド - まとめ

本記事のまとめ

Linuxの自動アップデート設定のポイントを整理します。

項目 RHEL系(dnf-automatic) Debian/Ubuntu系(unattended-upgrades)
設定ファイル /etc/dnf/automatic.conf /etc/apt/apt.conf.d/50unattended-upgrades
セキュリティのみ upgrade_type = security -security オリジンのみ有効化
自動適用の有効化 apply_updates = yes Unattended-Upgrade セクションで設定
タイマー起動 systemctl enable dnf-automatic-install.timer dpkg-reconfigure で自動設定
動作確認 dnf-automatic + journalctl unattended-upgrades –dry-run
メール通知 emit_via = email + email_to Unattended-Upgrade::Mail

脆弱性パッチの適用は「知っているけれど後回しにしがち」な作業の代表格です。自動アップデートを導入すれば、人手をかけずにセキュリティの基盤を維持できます。まずはセキュリティパッチのみを対象にした自動化から始めて、運用に慣れたら対象範囲を広げていくとよいでしょう。

パッチ管理だけで終わらせていませんか?

自動アップデートはLinuxセキュリティの第一歩です。firewalld、SELinux、ログ監視と組み合わせた多層防御を体系的に学んでみませんか。
正しいセキュリティ知識を体系的に身につけたい方へ、メルマガで実践的なセキュリティ対策ノウハウをお届けしています。

コメント

タイトルとURLをコピーしました