手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 unattended-upgrades – セキュリティ更新の自動適用を設計する

Ubuntu 22.04 では、unattended-upgrades によってセキュリティ更新を自動適用できます。ただし、単に有効化するだけでは、再起動、通知、通常更新との境界があいまいになります。

この記事は、Ubuntu 22.04 の既存環境で自動更新設定を見直すための記事です。現在の運用では、セキュリティ更新を継続的に適用しつつ、サービス影響が大きい更新や再起動は運用方針に合わせて判断できる状態にしておきます。

関連する記事
この記事で確認すること
  • unattended-upgrades の役割
  • 手動更新と自動更新の境界
  • 自動更新対象と通知設定
  • 自動再起動を扱うときの注意点
  • ログと再起動要否の確認
参考
書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

unattended-upgrades の役割

unattended-upgrades は、APT の更新を自動実行するための仕組みです。Ubuntu Server では、主にセキュリティ更新を継続的に適用する目的で使います。

項目役割
20auto-upgradesパッケージ一覧更新と自動更新の周期を指定する
50unattended-upgrades自動更新の対象、通知、自動再起動などを指定する
/var/log/unattended-upgrades/自動更新の実行ログを確認する
/var/run/reboot-required再起動が必要か確認する

手動更新と自動更新の境界

手動の apt update / apt upgrade は、運用者が更新対象を確認して適用する方式です。一方、unattended-upgrades は、設定された範囲の更新を自動で適用します。

サーバー運用では、セキュリティ更新は自動適用し、通常更新や大きな変更は手動確認に残す方が扱いやすくなります。特にデーモン再起動、設定ファイル差分、カーネル更新を伴う場合は、メンテナンス時間帯と監視通知を合わせて考えます。

方式向いている用途注意点
手動更新更新内容を確認してから適用する定期的に運用者が確認する必要がある
自動更新セキュリティ更新を継続的に適用する再起動と通知の方針を決める必要がある
構成管理複数台の更新方針を統一する入力待ち、再起動、適用時間帯を設計する必要がある

現在の設定を確認する

まず自動更新が有効か確認します。

コマンド
cat /etc/apt/apt.conf.d/20auto-upgrades

一般的には、パッケージ一覧更新と自動更新が 1 日単位で有効になっています。

設定例
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

自動更新の対象を確認する

自動更新の対象は /etc/apt/apt.conf.d/50unattended-upgrades で確認します。Ubuntu のセキュリティ更新だけを対象にするのか、通常更新も含めるのかは運用方針によります。

コマンド
grep -A20 'Allowed-Origins' /etc/apt/apt.conf.d/50unattended-upgrades

通常更新まで自動化すると、サービス再起動や挙動変更の影響を受ける可能性が高くなります。まずはセキュリティ更新を中心にし、通常更新は手動確認や構成管理側で扱う方針にすると、影響範囲を把握しやすくなります。

通知を設定する

自動更新の結果をメールで受け取る場合は、メール送信できる経路が必要です。ローカル MTA、SMTP リレー、外部メールサービスのどれを使うかを先に決めます。

通知先を設定する例です。宛先は環境に合わせて変更します。

コマンド
sudo cp -a /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak.$(date +%Y%m%d%H%M%S)
sudo tee /etc/apt/apt.conf.d/52unattended-upgrades-mail >/dev/null <<'EOF'
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "on-change";
EOF

MailReport は通知頻度に関係します。すべて通知するのか、変更があったときだけ通知するのかは、監視のノイズ量と運用者が見る場所に合わせて決めます。

自動再起動をどう扱うか

カーネル更新などでは再起動が必要になることがあります。unattended-upgrades には自動再起動設定もありますが、サーバー用途では慎重に扱います。

方針利点注意点
自動再起動しない予期しない停止を避けやすい再起動待ちを放置しない運用が必要
時間指定で自動再起動するセキュリティ更新を完了しやすいサービス影響とメンテナンス時間帯を決める必要がある
監視や構成管理から再起動する複数台の制御をしやすいジョブ順序と影響範囲の管理が必要

自動再起動設定を明示する例です。ここでは値を false にして、意図せず再起動しない状態を示しています。

コマンド
sudo tee /etc/apt/apt.conf.d/53unattended-upgrades-reboot >/dev/null <<'EOF'
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
EOF

実際に自動再起動を有効にする場合は、サービス影響、監視通知、バックアップ時間帯との重なりを確認してから判断します。複数台構成では、同時再起動を避ける設計も必要です。

ログを確認する

自動更新が動いたかどうかはログで確認します。

コマンド
sudo tail -n 100 /var/log/unattended-upgrades/unattended-upgrades.log
sudo tail -n 100 /var/log/apt/history.log

/var/log/apt/history.log では、手動実行と自動実行のコマンドラインを分けて確認できます。/usr/bin/unattended-upgrade が出ていれば、自動更新による実行です。

再起動が必要か確認する

自動更新後も、再起動が必要な状態か確認します。

コマンド
if [ -f /var/run/reboot-required ]; then
  cat /var/run/reboot-required
fi
if [ -f /var/run/reboot-required.pkgs ]; then
  cat /var/run/reboot-required.pkgs
fi

再起動が必要な状態を検知したら、メンテナンス時間帯、冗長構成、監視抑止、バックアップ完了状況を確認してから実施します。

Proxy 環境での注意

Proxy 環境では、自動更新も APT のプロキシ設定に依存します。手動の apt update が通るだけでなく、タイマー実行時にも必要な設定が読み込まれるか確認します。

コマンド
apt-config dump | grep -i proxy
systemctl list-timers | grep apt

まとめ

Ubuntu 22.04 の unattended-upgrades は、セキュリティ更新を継続的に適用するために有用です。ただし、何を自動更新するか、通知をどう受けるか、再起動をどう扱うかを決めないまま有効にすると、運用上の不安が残ります。

手動更新は内容確認、自動更新はセキュリティ更新の継続適用、構成管理は複数台の統制、というように役割を分けると扱いやすくなります。Ubuntu 22.04 の既存環境では、現在の設定を確認し、通知と再起動の扱いを明示しておくことが重要です。

関連する記事
Ubuntu 22.04 unattended-upgrades – セキュリティ更新の自動適用を設計する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る