Unattended Upgrades: Automatic Patching (Artikel 029)
Konfiguration von automatischen Sicherheits-Updates unter Ubuntu und Debian. Erfahren Sie, wie Sie Patch-Zyklen automatisieren, Reboots planen und die Stabilität Ihres Systems gewährleisten.
# Unattended Upgrades: Sicherheit durch Automatisierung
TL;DR / Management Summary Ein ungepatchter Server ist ein offenes Tor für Angreifer. Da Admins nicht hunderte Server manuell auf neue CVEs prüfen können, ist unattended-upgrades das Tool der Wahl. Es installiert kritische Sicherheits-Updates automatisch im Hintergrund. Wichtig: Kombinieren Sie dies mit automatischen Reboots in der Nacht, um auch Kernel-Patches aktiv werden zu lassen.
# 1. Einführung & Konzepte
Patch-Management ohne Kopfschmerzen.
Das Paket unattended-upgrades nutzt APT, um in regelmäßigen Abständen nach Updates zu suchen und diese basierend auf Regeln zu installieren.
# Warum Automatisierung?
- Reaktionszeit: Sicherheitslücken werden oft innerhalb von Stunden nach Bekanntwerden ausgenutzt.
- Compliance: Erfüllung von Richtlinien (z.B. monatliches Patching).
- Entlastung: Weniger manuelle Routine-Aufgaben für das Team.
graph TD
A[APT Daily Timer] --> B[Check for Updates]
B --> C{Security Patch?}
C -->|Yes| D[Download & Install]
C -->|No| E[Check Configuration]
E -->|Allowed?| D
E -->|Denied?| F[Skip]
D --> G{Reboot Needed?}
G -->|Yes| H[Scheduled Nightly Reboot]
G -->|No| I[Finish]
# 2. Installation & Aktivierung
Der Schnellstart.
# Installation
sudo apt update
sudo apt install unattended-upgrades
# Grundkonfiguration triggern
sudo dpkg-reconfigure -plow unattended-upgrades
Wählen Sie “Ja”, um die automatischen Updates grundsätzlich zu aktivieren.
# 3. Konfiguration für Profis
Das Feintuning.
Die Hauptkonfiguration liegt in /etc/apt/apt.conf.d/50unattended-upgrades.
# Was soll installiert werden?
Stellen Sie sicher, dass nur “Security” oder “Updates” Quellen aktiv sind, um die Stabilität nicht zu gefährden.
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
};
# Automatische Reboots (Enterprise Best-Practice)
Ein Kernel-Patch bringt nichts, wenn der Server nicht neu startet.
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
# Pakete ausschließen (Blacklist)
Verhindern Sie Updates für kritische Datenbanken, die manuell geprüft werden müssen.
Unattended-Upgrade::Package-Blacklist {
"postgresql-*";
"mysql-server";
};
# 4. Day-2 Operations: Monitoring & Benachrichtigung
Wissen, was passiert ist.
# E-Mail Benachrichtigungen
Unattended-Upgrade::Mail "admin@company.com";
# Nur senden, wenn ein Fehler auftrat
Unattended-Upgrade::MailOnlyOnFailure "true";
# Logs prüfen
# Zusammenfassung der letzten Aktionen
cat /var/log/unattended-upgrades/unattended-upgrades.log
# Detaillierte APT-Logs
cat /var/log/apt/history.log
# 5. Troubleshooting & “War Stories”
Wenn das Update das System bricht.
# Story 1: “Der hängende Dienst nach Update”
Symptom: Ein Dienst (z.B. Apache) startet nach einem automatischen Update nicht mehr.
Ursache: Das Update hat die Konfigurationsdatei geändert und fordert eine manuelle Entscheidung (dpkg-dist), oder die neue Version hat einen Bug.
Lösung: Nutzen Sie Unattended-Upgrade::MinimalSteps "true", um sicherzustellen, dass Updates bei kleinsten Problemen abbrechen, und prüfen Sie die Logs.
# Story 2: “Reboot-Loop durch Kernel-Fehler”
Symptom: Server startet nachts um 03:00 Uhr neu und kommt nicht wieder hoch. Ursache: Ein fehlerhafter Kernel wurde installiert. Lösung: In Proxmox den vorletzten Kernel im GRUB wählen. Prävention: Lassen Sie unattended-upgrades auf Test-VMs 24h früher laufen als auf der Produktion (Staging-Time).
# 6. Fazit & Empfehlung
- Sicherheit: Unverzichtbar für alle Server mit Internetzugriff.
- Stabilität: Blacklisten Sie extrem kritische Core-Applikationen.
- Reboots: Planen Sie Reboots ein – ein System mit Uptime von 300 Tagen ist unsicher!
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Trockenübung (Dry-Run) | sudo unattended-upgrade --dry-run --debug |
| Sofort manuell ausführen | sudo unattended-upgrade -v |
| Prüfen ob Reboot nötig | [ -f /var/run/reboot-required ] && echo "Reboot needed" |
| Update-Zeitplan ändern | /etc/apt/apt.conf.d/20auto-upgrades |