Ubuntuのセキュリティアップデート自動適用

サーバー

はじめに

手動でセキュリティアップデートを適用するのが面倒なので、自動適用するように設定しました。Ubuntuサーバーでのセキュリティアップデートの自動適用には、unattended-upgradesというパッケージを使用します。この記事では、Ubuntuでの自動アップデートの設定で行った内容を残しておこうと思います。

環境の確認

$ cat /etc/issue

Ubuntu 22.04.3 LTS
Bash

自動アップデートの設定を確認

20auto-upgradesは、Ubuntuシステムの自動アップデートに関する設定ファイルです。

$ sudo cat /etc/apt/apt.conf.d/20auto-upgrades

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Bash
APT::Periodic::Update-Package-Lists

パッケージリストの自動アップデートを有効にします。

APT::Periodic::Unattended-Upgrade

パッケージの自動アップグレードを有効にします。

"1":有効 / "0":無効

自動アップデートの対象を確認

50unattended-upgradesは、Ubuntuシステムの自動アップデートに関する設定ファイルです。

$ sudo cat /etc/apt/apt.conf.d/50unattended-upgrades

// Automatically upgrade packages from these (origin:archive) pairs
//
// Note that in Ubuntu security updates may pull in new dependencies
// from non-security sources (e.g. chromium). By allowing the release
// pocket these get automatically pulled in.
Unattended-Upgrade::Allowed-Origins {
   "${distro_id}:${distro_codename}";
   "${distro_id}:${distro_codename}-security";
   // Extended Security Maintenance; doesn't necessarily exist for
   // every release and this system may not have it installed, but if
   // available, the policy for updates is such that unattended-upgrades
   // should also install from here by default.
   "${distro_id}ESMApps:${distro_codename}-apps-security";
   "${distro_id}ESM:${distro_codename}-infra-security";
   //      "${distro_id}:${distro_codename}-updates";
   //      "${distro_id}:${distro_codename}-proposed";
   //      "${distro_id}:${distro_codename}-backports";
};
Bash
Unattended-Upgrade::Allowed-Origins

自動アップデートが適用されるパッケージのソースを指定しています。

セキュリティ関連のアップデートのみがデフォルトで自動的に適用されるように設定されています。その他の更新や変更、バックポートされたパッケージなどは、明示的に設定する必要があります。

自動再起動の設定を調整する

システムが自動的にアップデートを適用した後に自動的に再起動する動作を制御します。

$ sudo vim /etc/apt/apt.conf.d/50unattended-upgrades

// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
Unattended-Upgrade::Automatic-Reboot "true";

// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
Bash

Unattended-Upgrade::Automatic-Rebootの値を “false” から “true” に変更します。この設定は、システムがアップデートを適用した後に自動的に再起動するかどうかを制御します。デフォルトでは、この値は “false” に設定されていますが “true” に変更する事で、アップデートが適用された後にシステムが自動的に再起動されます。

Unattended-Upgrade::Automatic-Reboot-Timeの値を、”02:00″から “03:00” に変更します。Unattended-Upgrade::Automatic-Reboot-Timeは、特定の時間に再起動をスケジュールするための設定です。デフォルトの値は “02:00” で、デフォルトの状態だと午前2時に再起動を行います。午前3時は活動していない人が最も多い時間帯なので、この時間を設定しました。

unattended-upgradesの再起動

unattended-upgradesサービスを再起動します。

$ sudo systemctl restart unattended-upgrades
Bash

“systemctl reload”を使用してサービスを再読み込みしようとすると、下記のようなエラーメッセージが表示されます。

Failed to reload unattended-upgrades.service: Job type reload is not applicable for unit unattended-upgrades.service.

unattended-upgradesサービスが “reload” に対応していない為です。代わりに “restart” コマンドを使用して再起動する必要があります。

まとめ

自動アップデートの設定は、50unattended-upgradesファイルを編集してunattended-upgradesを再起動するだけでした。この設定により、アップデートと再起動のスケジューリングが自動化され、管理が簡素化されたため、SSHでログインするたびに行っていた手作業のおまじないが不要になりました。

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