linux-ubuntu-debian security updates automation maintenance

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