共通の設定基準:SEC-05・SEC-06・SEC-07。ほかのOSでも確認する基準を見る
01 / 更新と再起動
OSの公式サポート期間と更新の提供範囲を確認します。Ubuntuの正規リポジトリとAPTの署名検証を維持し、エラーや署名不一致を無視しないでください。ネットワークとバックアップを確認し、保守時間に管理者として実行します。変更内容を確認し、対話画面に応じて判断します。
sudo apt-get update
sudo apt-get upgrade --with-new-pkgs
apt list --upgradable
test -f /var/run/reboot-required && cat /var/run/reboot-required || echo '再起動要求ファイルなし'ここで扱う更新はAPT管理のパッケージです。Snapやコンテナー、追加アプリケーションはそれぞれの更新経路も確認してください。取得・導入の成否、残った更新、再起動の必要性を別々に記録します。再起動が必要なら影響を確認して実行し、コンソールと新規SSH接続、サービスを再確認します。
02 / 自動更新の方針
unattended-upgrades が導入済みであることと既存のAPT設定を確認します。以下は一覧を毎日更新し、自動更新を有効にし、自動再起動を無効にする例です。更新対象は既存の 50unattended-upgrades の許可元設定にも依存します。組織の運用方針と既存ファイルとの優先順位を確認してください。
sudo apt-get install unattended-upgrades
sudo test ! -e /etc/apt/apt.conf.d/52-server-guide-updates && sudo tee /etc/apt/apt.conf.d/52-server-guide-updates >/dev/null <<'EOF'
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Unattended-Upgrade::Automatic-Reboot "false";
EOF
systemctl list-timers 'apt-daily*' --all
sudo journalctl -u apt-daily.service -u apt-daily-upgrade.service --since '7 days ago' --no-pager同名ファイルが既にある場合は上書きせず内容を確認します。自動再起動を無効にした場合、必要な再起動は管理者が計画します。
03 / サービス・ログ・時刻
待ち受けと稼働サービスを棚卸しし、不要と思われるものも用途を調べてから変更します。認証ログと時刻同期を定期的に確認します。
sudo ss -lntup
systemctl --type=service --state=running --no-pager
sudo journalctl -u ssh --since '24 hours ago' --no-pager
sudo tail -n 50 /var/log/auth.log
timedatectl statusログの有無、異常な認証、時刻同期の実際の状態を記録してください。コマンドの実行だけで同期成功とは判断できません。
04 / 設定の保管と復旧
SSHやファイアウォール設定を変更前に保管し、アクセスを制限したバックアップをWeb公開領域やGitの外にも安全に保管します。秘密鍵やパスワードを記事や公開リポジトリに含めません。
BACKUP="$(sudo mktemp -d /root/server-guide-recovery.XXXXXX)" &&
sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.d /etc/ufw "$BACKUP/" &&
printf '保存先: %s\n' "$BACKUP"保存先を控えてください。別のコンソールにはシェル変数は引き継がれません。障害時はコンソールから差分を確認し、必要なファイルを復元します。SSH設定を戻した後は sudo /usr/sbin/sshd -t に成功してから sudo systemctl reload ssh を実行し、別端末で正しい鍵と拒否すべき認証を再確認します。復旧手順は実際の環境で演習し、バックアップの取得だけを復元成功とみなさないでください。
この節で、SSHの制限設定が有効な状態をバックアップした例では、コンソールから次のように対象の1ファイルを戻せます。BACKUP を実際の保存先に置き換えてください。
BACKUP='/root/server-guide-recovery.実際の名前'
sudo test -f "$BACKUP/sshd_config.d/00-server-guide.conf" &&
sudo install -m 644 "$BACKUP/sshd_config.d/00-server-guide.conf" /etc/ssh/sshd_config.d/00-server-guide.conf &&
sudo /usr/sbin/sshd -t &&
sudo systemctl reload sshここで行う復旧はSSH設定の1ファイルです。UFWやOS全体の設定を一括で上書きする手順ではありません。必要なルールはコンソールで確認して修正し、新規接続を試してください。

05 / 検証状況
2026年11月1日に、Ubuntu Server 22.04.5の検証用VMで次の結果を確認しました。
| APTの手動更新 | 258パッケージを更新、13パッケージを新規導入。終了コード0 |
|---|---|
| 適用後の再確認 | APTの更新候補0件、dpkgの未設定パッケージなし |
| 再起動後のカーネル | 5.15.0-202-generic(更新前は5.15.0-119-generic) |
| SSH | 公開鍵で新規ログイン成功。パスワード方式・未登録鍵・rootは拒否 |
| 自動更新の設定 | 一覧取得・自動更新は1日間隔。apt-daily / apt-daily-upgradeタイマーはenabled・active |
| 自動再起動 | false。今回の再起動は管理者が手動で実施 |
| 復旧演習 | SSH拒否条件を入れた隔離VMで、コンソールから復元し、正しい公開鍵で再接続。設定ファイルのSHA-256も一致 |
| 時刻同期 | NTPは有効だが、確認時はNTPSynchronized=no。同期成功は未確認 |
時刻同期が未完了のため、運用前にNTPの通信経路と同期先を確認して再検査してください。サービスの有効化だけでは同期成功とはいえません。
今回の更新はAPT管理のパッケージです。将来のタイマーによる自動適用、Snapのアプリ更新、公開インターネット・IPv6からの接続、OS全体のバックアップ復元は検証していません。
初回のファームウェア取得は通信切断で失敗しました。署名済みAPT一覧のハッシュと一致する完全なファイルを確認してから再実行し、更新を完了しています。検証VMのプロキシ設定は実運用向け設定に含めていません。
