侵入されるサーバーのほとんどは、巧妙な手口で落ちるわけではありません。既知で修正済みの欠陥を持つソフトウェアを動かしていて、誰も修正を入れていなかったのです。セキュリティ更新の自動化は、ログインを覚えておかなくてもその穴をふさいでくれます。新しいサーバーにかける 5 分として、最も効果の高いものの一つです。
Ubuntu と Debian:unattended-upgrades
Ubuntu のイメージには通常最初から入っていますが、Debian には入っていないことがあります。インストールして有効にします。
apt update
apt install -y unattended-upgrades apt-listchanges
dpkg-reconfigure -plow unattended-upgrades # answer "Yes"
これで /etc/apt/apt.conf.d/20auto-upgrades が作られます。
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
2 つの 1 は、毎日パッケージリストを更新し、セキュリティ更新をインストールするという意味です。
再起動をどうするか決める
カーネルのパッチを有効にするには再起動が必要です。静かな時間帯に自動で再起動させるには、/etc/apt/apt.conf.d/50unattended-upgrades を編集して次のように設定します。
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
サーバーが再起動するのは、更新が本当に必要とするとき(/var/run/reboot-required が存在するとき)だけです。
テストする
unattended-upgrade --dry-run --debug
ログは /var/log/unattended-upgrades/ にあります。
Rocky Linux と AlmaLinux:dnf-automatic
dnf install -y dnf-automatic
/etc/dnf/automatic.conf を編集します。
[commands]
upgrade_type = security
apply_updates = yes
タイマーを有効にします。
systemctl enable --now dnf-automatic.timer
systemctl list-timers dnf-automatic.timer
更新後に再起動が必要か確かめるには、dnf-utils をインストールして needs-restarting -r を実行します。
どの再起動ポリシーが合っているか
- 夜間に 1 分止まっても構わない単一のアプリ(ボット、個人用サービス、小さなサイト):自動再起動を有効に。
- 24 時間使われるもの、または自分で再起動したいデータベース: 自動再起動は無効にし、
/var/run/reboot-requiredが現れたら再起動するようリマインダーを設定。
カバーされないもの
対象はシステムパッケージだけです。Docker イメージ、言語の依存関係(pip、npm)、手動でインストールしたバイナリは自動では更新されないので、別途スケジュールしてください。また、バージョン内の更新は自動ですが、新しいバージョンへの移行(Ubuntu 22.04 → 24.04)は意図して行う手作業のままです。
万一、不具合のある更新で起動しなくなっても、EQVPS パネルの Web コンソールから SSH なしで入れます。Managed Backups には変更前の復元ポイントもあります。
コメント
まだコメントはありません。最初になりましょう。