セキュリティパッチの適用遅れは重大な脆弱性につながります。この記事ではUbuntu/Debianのunattended-upgradesとRHEL/CentOSのdnf-automaticを使った自動アップデートの設定を詳しく解説します。
Ubuntu/Debian:unattended-upgrades
# インストール
$ sudo apt install unattended-upgrades
# 設定ウィザードで有効化
$ sudo dpkg-reconfigure --priority=low unattended-upgrades
/etc/apt/apt.conf.d/50unattended-upgrades を編集して詳細設定を行います。
# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security"; // セキュリティ更新のみ(推奨)
// "${distro_id}:${distro_codename}-updates"; // 一般更新(コメント外すと有効)
};
// 不要な依存パッケージを自動削除
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// パッケージ削除は慎重に(必要なパッケージを削除しないよう)
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
// カーネル更新後の自動再起動(本番は false が安全)
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
// メール通知(設定している場合)
// Unattended-Upgrade::Mail "admin@example.com";
# /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1"; // 毎日リスト更新
APT::Periodic::Unattended-Upgrade "1"; // 毎日自動適用
APT::Periodic::AutocleanInterval "7"; // 7日ごとにキャッシュ削除
# ドライラン(実際には適用しない・設定の確認)
$ sudo unattended-upgrades --dry-run --debug
# 手動で強制実行
$ sudo unattended-upgrades -v
# 実行ログを確認
$ sudo tail -f /var/log/unattended-upgrades/unattended-upgrades.log
# 再起動が必要なパッケージがあるか確認
$ cat /var/run/reboot-required 2>/dev/null && echo "再起動が必要です"
RHEL/CentOS:dnf-automatic
# インストール
$ sudo dnf install dnf-automatic
# /etc/dnf/automatic.conf を編集
[commands]
upgrade_type = security # security のみ(推奨)/ default で全更新
apply_updates = yes # 自動適用
emit_via = motd # /etc/motd にログを記録
[email]
# email_to = admin@example.com # メール通知(設定している場合)
# 有効化・起動(timerとして動作)
$ sudo systemctl enable --now dnf-automatic.timer
# タイマーの状態・次回実行時刻を確認
$ systemctl status dnf-automatic.timer
$ systemctl list-timers dnf-automatic.timer
# 手動テスト(実際には適用しない)
$ sudo dnf-automatic --no-install
本番環境での推奨方針
| 更新種類 | 方針 | 理由 |
|---|---|---|
| セキュリティ更新 | 自動適用OK | 脆弱性対応は迅速に行うべき |
| 一般更新 | 手動確認推奨 | アプリの動作に影響する可能性あり |
| カーネル更新 | 再起動を計画的に | メンテナンス時間を設けて実施 |
セキュリティ更新の確認方法
# 適用可能なセキュリティ更新を一覧表示(Ubuntu/Debian)
$ apt list --upgradable 2>/dev/null | grep -i security
# 更新の詳細を確認(RHEL/CentOS)
$ sudo dnf check-update --security
# パッケージのCVE情報を確認(RHEL/CentOS)
$ sudo dnf updateinfo list security
まとめ
- Ubuntu/Debianは
unattended-upgrades、RHEL/CentOSはdnf-automaticで自動化 - セキュリティ更新のみ自動適用し、一般更新は手動確認が安全
--dry-run/--no-installで動作確認してから本番適用するAutomatic-Reboot = falseにしてカーネル更新後の再起動は計画的に行う/var/run/reboot-requiredで再起動が必要かどうかを確認できる



コメント