Ubuntu Server 24.04 LTS セキュリティ自動アップデート、高信頼性、高堅牢性なロケットプールステーキング
信頼性の高いロケットプールステーキングサーバーを目指して
イーサリアムのステーキングを実運用しているは本設備は私個人のためだけではなく、手数料14%を徴収し、他人から借りたイーサリアムも運用している。不測の停止やセキュリティトラブルは他人の迷惑にもなるため最新の注意をはらって運用していきたい。
そのためにはセキュリティに関するアップデートは速やかに当てていきたいし必要とするなら再起動も自動で実施できるようする。
自動更新の現在の設定を確認する
自動更新は/etc/apt/apt.conf.d 以下にファイルの形式で存在している。
これら設定ファイルを書き換えることで自動更新を実現する。
まずは現状の状態を確認する。
確認するファイルは20auto-upgradesである。
$ cd /etc/apt/apt.conf.d
$ ls
01-vendor-ubuntu 20packagekit 50unattended-upgrades
01autoremove 20snapd.conf 70debconf
20auto-upgrades 50appstream 99needrestart
$less 20auto-upgrade
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
どうやら、自動アップデートはデフォルトで有効になっているようだ。
”1”を"0"に変えると自動アップデートは無効になる。
続いて再起動が必要な更新があった場合自動で再起動する設定を確認する。
これは50unattended-upgradesに書かれている。
$ less 50unattended-upgrades
途中省略
// Automatically reboot *WITHOUT CONFIRMATION* if
// the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";
// Automatically reboot even if there are users currently logged in
// when Unattended-Upgrade::Automatic-Reboot is set to true
//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
自動再起動の設定は
//Unattended-Upgrade::Automatic-Reboot "false";
とデフォルトでコメントアウトされ、無効(false)になっている。
また、誰かログインしていても強制的に再起動する設定
//Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
はデフォルトで有効化(true)されている。これについてはログインできる人は私一人なので有効のままで良いと判断した。
自動再起動の時刻は午前2時がデフォルト値として設定されている。
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";
自動更新される時間の確認
自動再起動するにあたり、自動更新されてからあまり時間をおかず再起動するのが好ましい。そのために自動更新のスクリプトが動く時間を確認する。
$ sudo systemctl list-timers apt-daily*
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sun 2024-05-12 19:12:07 JST 2h 44min Sun 2024-05-12 14:33:38 JST 1h 53min ago apt-daily.timer apt-daily.service
Mon 2024-05-13 06:23:58 JST 13h Sun 2024-05-12 06:41:52 JST 9h ago apt-daily-upgrade.timer apt-daily-upgrade.service
apt-daily.timerはパッケージのリストを更新する
apt-daily-upgrade.timerはパッケージを更新する
自動更新はだいたい日本時間の午前6時ころに実施しているようだ。
一応自動更新される時間を確認する。
$ less /lib/systemd/system/apt-daily-upgrade.timer
[Unit]
Description=Daily apt upgrade and clean activities
After=apt-daily.timer
[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=60m
Persistent=true
[Install]
WantedBy=timers.target
ランダマイザ設定がディレイ60分なので6:00~7:00の間のランダムな時間で更新されるようだ。わざわざランダムにするのは更新作業によってパッケージを配布しているサーバーへの負荷を分散させるためであろう。
設定ファイルの更新
おおよそ内容がわかったので設定ファイルを書き換えていく。
sudo vi 50unattended-upgrades
//Unattended-Upgrade::Automatic-Reboot "false";この行を
Unattended-Upgrade::Automatic-Reboot "true";このように書き換える
//Unattended-Upgrade::Automatic-Reboot-Time "02:00";この行を
Unattended-Upgrade::Automatic-Reboot-Time "07:30";このように書き換える
これでアップグレードしたあとに/var/run/reboot-requiredが存在した場合のみ再起動が自動で実施される(そうでない場合は再起動しない)
また、再起動の時間は最遅更新後30分程度時間の余裕を見て午前7時30分に実施するようにした(人が利用するサーバーでないので深夜に実施する必要もないだろう)
不要ファイルの削除
使われなくなったパッケージもディスクスペースの節約のため削除するようにした。先ほどのファイル 50unattended-upgradesのなかの
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
の先頭の // を消し falseをtrueに書き換えれば終了。
内容はコメントに書いてあるように apt autoremoveと同じだ。
$ sudo vi 50unattended-upgrades
途中省略
// Do automatic removal of unused packages after the upgrade
// (equivalent to apt-get autoremove)
Unattended-Upgrade::Remove-Unused-Dependencies "true";
設定ファイルの有効化
設定ファイルを書き換えたら設定が有効になるようにロードし直す。
$ sudo systemctl restart unattended-upgrades
以上で終了。