Linuxで自動セキュリティアップデートを設定する方法(unattended-upgrades)

Linuxサーバーのセキュリティを強化するため、unattended-upgradesとcronを使用した自動アップデートの設定方法を初心者向けに解説。

Linux自動アップデートセキュリティunattended-upgradescron2026/5/25

はじめに

Linuxサーバーを運用する上で、セキュリティアップデートの適用は必須です。手動で更新を行うと漏れが発生しやすく、脆弱性を放置するリスクがあります。本記事では、unattended-upgrades パッケージと cron を利用して、Linuxシステムの自動セキュリティアップデートを設定する方法を解説します。

unattended-upgrades とは?

unattended-upgrades は、Debian/Ubuntu系のLinuxディストリビューションで利用できるパッケージです。セキュリティアップデートを自動的にダウンロードし、インストールすることができます。設定ファイルを編集することで、更新の対象やタイミングを細かく制御できます。

事前準備

1. システムの更新

まずはシステムを最新の状態にしておきます。

sudo apt update
sudo apt upgrade -y

2. unattended-upgrades のインストール

sudo apt install unattended-upgrades -y

インストール後、自動更新が有効になっているか確認します。

sudo dpkg-reconfigure --priority=low unattended-upgrades

対話画面で「Yes」を選択します。

自動アップデートの設定

設定ファイルの編集

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

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

#### アップデートの対象を指定

デフォルトではセキュリティアップデートのみが有効です。必要に応じて他のリポジトリ(例: updates)を追加できます。

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
    // 例: 通常のアップデートも自動適用したい場合
    // "${distro_id}:${distro_codename}-updates";
};

#### 自動再起動の設定

カーネルアップデートなど、再起動が必要な場合の設定を行います。

// 自動再起動を有効にする
Unattended-Upgrade::Automatic-Reboot "true";

// 再起動を遅らせる時間(例: 02:00) Unattended-Upgrade::Automatic-Reboot-Time "02:00";

#### メール通知の設定(オプション)

アップデートの結果をメールで受け取るには、mail コマンドが必要です。

sudo apt install mailutils -y

設定ファイルに以下を追加します。

Unattended-Upgrade::Mail "your-email@example.com";
Unattended-Upgrade::MailOnlyOnError "false";

自動更新のスケジュール設定

unattended-upgradesapt のタイマーで定期的に実行されます。通常は /lib/systemd/system/apt-daily.timerapt-daily-upgrade.timer が設定されています。

タイマーの状態を確認します。

sudo systemctl status apt-daily.timer
sudo systemctl status apt-daily-upgrade.timer

タイマーはデフォルトで有効ですが、タイミングを変更したい場合はオーバーライドします。

sudo systemctl edit apt-daily-upgrade.timer

以下のように記述すると、毎日午前3時に実行されます。

[Timer]
OnCalendar=*-*-* 3:00:00

保存後、タイマーを再読み込みします。

sudo systemctl daemon-reload
sudo systemctl restart apt-daily-upgrade.timer

cron を使った方法(代替)

systemd を使用しない環境では、cron で unattended-upgrades を定期的に実行できます。

sudo crontab -e

以下の行を追加します(毎日午前2時に実行)。

0 2 * * * /usr/bin/unattended-upgrades

動作確認

ドライランでテスト

実際にアップデートを適用せずに、どのパッケージが更新されるか確認できます。

sudo unattended-upgrades --dry-run --debug

ログの確認

アップデートのログは /var/log/unattended-upgrades/ に保存されます。

sudo cat /var/log/unattended-upgrades/unattended-upgrades.log

注意点

  • 自動再起動によるサービス停止: 自動再起動を有効にすると、予期せぬタイミングでサーバーが再起動します。本番環境では慎重に設定してください。
  • 依存関係の破損: 自動更新によって依存関係が壊れる可能性があります。テスト環境で事前に検証することを推奨します。
  • 更新の遅延: タイマーの設定によっては、セキュリティパッチの適用が遅れることがあります。
  • まとめ

    unattended-upgrades を使用すれば、Linuxサーバーのセキュリティアップデートを自動化でき、管理の手間を減らせます。適切な設定と監視を行うことで、脆弱性のリスクを低減しましょう。


    *この記事はArch Linux/btrfs/LUKs環境で実際に検証した内容を基にしています。セキュリティ設定は環境によって異なるため、本番環境への適用前に必ずテスト環境で検証してください。*

    参考リンク

  • Debian Wiki: UnattendedUpgrades
  • Ubuntu Community Help: AutomaticSecurityUpdates