Automatische Linux-Updates: unattended-upgrades und dnf-automatic für Linux-Server-Updates konfigurieren
Schwierigkeitsgrad: Experte
Geschätzte Dauer: ca. 30 Minuten
Ziel: Unterbrechungsfreie, skalierbare automatische Linux-Updates mit unattended-upgrades und dnf-automatic nach den Prinzipien von Infrastructure as Code konfigurieren.
Einführung
Das manuelle Patchen von Servern ist ein kritischer Engpass bei der Verwaltung jeder Produktionsumgebung: Ohne Automatisierung wäre es sehr schwierig, Hunderte von Knoten zuverlässig abzusichern und aktuell zu halten. Eine verwundbare Anwendung kann innerhalb von Minuten kompromittiert werden, und die meisten Exploits zielen auf bekannte, ungepatchte Schwachstellen ab. Wir müssen Sicherheitsupdates (kritische Patches, die veröffentlicht werden, um bekannte Schwachstellen in Software zu beheben) rechtzeitig einspielen, um Sicherheitsvorfälle zu vermeiden. In dieser Anleitung konfigurieren wir automatische Linux-Updates auf einem Linux-Server mit unattended-upgrades und dnf-automatic. Dieser Ansatz standardisiert die Updates von Linux-Servern.
Was sind unattended-upgrades und dnf-automatic?
unattended-upgrades ist ein Dienstprogramm für Debian/Ubuntu, das die Installation von Sicherheits- und sonstigen Paketupdates automatisiert.
dnf-automatic ist eine Komponente, die automatische Updates für RHEL/CentOS/Fedora-Systeme bereitstellt.
Diese Werkzeuge ermöglichen es, automatische Updates (das Abrufen und Installieren von Updates ohne menschliches Eingreifen) nahtlos im Hintergrund auszuführen. Sie laufen in der Regel täglich über einen Systemd-Timer (eine systemd-Unit, die die Zeitplanung von Aufgaben steuert und klassische Cron-Jobs ersetzt).
Voraussetzungen
Stellen Sie vor Beginn sicher, dass die folgenden Bedingungen erfüllt sind:
- Betriebssystem: Ubuntu 20.04/22.04/24.04 LTS, Debian 12/13 oder RHEL/AlmaLinux 9/10
- Zugriff: sudo- oder root-Zugriff auf den Server
- Netzwerkanforderungen: Ausgehender HTTPS-Zugriff auf die Paket-Repositories (archive.ubuntu.com, security.debian.org, repo.almalinux.org)
- Erforderliche Kenntnisse: Fundiertes Verständnis von Systemadministration, systemd und den Grundlagen des Patch-Managements (der Prozess der Verteilung und Installation von Software-Updates) sowie des Linux-Patch-Managements.
Schritt 1: Automatische Linux-Updates mit unattended-upgrades konfigurieren
Für Systeme mit APT (Advanced Package Tool) (das zentrale Paketverwaltungssystem Debian-basierter Distributionen) verwenden wir unattended-upgrades. Dieses Werkzeug fügt sich nahtlos in Ihre Strategie für das Linux-Patch-Management ein.
1.1 Paket installieren
Prüfen Sie zunächst, ob das benötigte Paket vorhanden ist, und installieren Sie es aus dem Paket-Repository (ein zentraler Speicherort, aus dem Softwarepakete abgerufen und installiert werden).
Führen Sie den folgenden Befehl aus:
sudo apt update && sudo apt install unattended-upgrades -y
Sie sollten eine Ausgabe sehen, die die Installation bestätigt. Damit ist das System für automatische APT-Updates vorbereitet.
1.2 Erlaubte Quellen konfigurieren
Die Hauptkonfiguration befindet sich in /etc/apt/apt.conf.d/50unattended-upgrades. Wir passen die Konfiguration so an, dass ausschließlich Sicherheitsupdates installiert werden. Das minimiert das Risiko inkompatibler Änderungen bei automatischen Paketupdates.
Vor Änderungen empfiehlt es sich, eine Sicherung der ursprünglichen Konfigurationsdatei anzulegen:
sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak
Öffnen Sie die Konfigurationsdatei:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Ersetzen Sie den Inhalt des Blocks Allowed-Origins vollständig und ergänzen Sie die aufgeführten Namen im Block Package-Blacklist:
Für Ubuntu:
Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; };
Für Debian:
Unattended-Upgrade::Origins-Pattern { "origin=Debian,codename=${distro_codename},label=Debian-Security"; "origin=Debian,codename=${distro_codename}-security,label=Debian-Security"; };
Konfigurieren Sie anschließend die Paket-Blacklist und das Neustartverhalten:
Unattended-Upgrade::Package-Blacklist { "^nginx$"; "^mysql-server$"; "^mariadb-server$"; "postgresql*"; "docker*"; }; Unattended-Upgrade::Automatic-Reboot "false";
Die Package-Blacklist verwendet reguläre Ausdrücke. Ein Eintrag wie "nginx" trifft auch auf nginx-common, nginx-extras usw. zu. Um nur das exakte Paket zu erfassen, verwenden Sie Regex-Anker wie "^nginx$".
Dadurch werden automatische APT-Updates auf Sicherheitspatches beschränkt und kritische Pakete von der automatischen Aktualisierung ausgenommen. Das verringert das Risiko von Dienstunterbrechungen und erhält zugleich die Automatisierung von Sicherheitspatches.
Updates von Kernel, libc und anderen systemnahen Paketen können weiterhin einen Neustart erfordern. Lassen Sie automatische Neustarts in Produktionsumgebungen deaktiviert, sofern Wartungsfenster nicht durch eine Orchestrierung erzwungen werden.
1.3 Automatische Updates aktivieren
Erstellen Sie die Datei auto-upgrades, um den Systemd-Timer für APT zu aktivieren.
Öffnen Sie die Datei:
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
Fügen Sie Folgendes ein:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; APT::Periodic::AutocleanInterval "7";
Diese Konfiguration weist das System an:
Update-Package-Lists "1"- die Paketlisten täglich zu aktualisieren.Unattended-Upgrade "1"- automatische APT-Updates selbstständig auszuführen.AutocleanInterval "7"- den Paket-Cache alle 7 Tage zu bereinigen.
Schritt 2: dnf-automatic für Linux-Server-Updates konfigurieren
Für Systeme mit DNF (Dandified YUM) (der Paketmanager der nächsten Generation für RHEL-basierte Distributionen) bietet dnf-automatic eine robuste Update-Automatisierung mit DNF.
2.1 Paket installieren
Installieren Sie das Automatisierungswerkzeug aus dem Paket-Repository.
Führen Sie den folgenden Befehl aus:
sudo dnf install dnf-automatic -y
Sie sollten eine Ausgabe sehen, die die erfolgreiche Installation des Pakets für die Update-Automatisierung mit DNF bestätigt.
2.2 Update-Richtlinien konfigurieren
Die Hauptkonfiguration befindet sich in /etc/dnf/automatic.conf. Konfigurieren Sie das Werkzeug so, dass ausschließlich Sicherheitsupdates heruntergeladen und angewendet werden.
Legen Sie vor Änderungen eine Sicherung der Konfigurationsdatei an und prüfen Sie, ob für Ihre Distribution Sicherheitshinweise (Security Advisories) verfügbar sind:
sudo cp /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak sudo dnf updateinfo summary sudo dnf updateinfo list security
Öffnen Sie die Konfigurationsdatei:
sudo nano /etc/dnf/automatic.conf
Passen Sie die folgenden Parameter an:
[commands] upgrade_type = security random_sleep = 3600 download_updates = yes apply_updates = yes [emitters] emit_via = stdio
Diese Konfiguration weist das System an:
upgrade_type = security- ausschließlich Sicherheitspatches zu berücksichtigen.random_sleep = 3600- die Ausführung um bis zu 1 Stunde zufällig zu verzögern. Das verteilt die Last bei umfangreichen Infrastructure-as-Code-Rollouts, vermeidet Lastspitzen auf den Repositories und verhindert gleichzeitige Kaskadenausfälle.download_updatesundapply_updates- Sicherheitsupdates automatisch herunterzuladen und zu installieren.
upgrade_type = security hängt von den Sicherheitsmetadaten des Repositories ab. Fehlen Security Advisories (typisch für eine frische AlmaLinux-10-Installation), wendet dnf-automatic mit dieser Einstellung möglicherweise gar nichts an. Prüfen Sie die Unterstützung durch das Repository, bevor Sie sich in der Produktion auf reine Sicherheitsupdates verlassen. Alternativ können Sie für Produktivsysteme upgrade_type = security-severity:Critical oder default-security verwenden.
2.3 Systemd-Timer aktivieren
Aktivieren Sie den Timer, um die Update-Automatisierung mit DNF zeitlich einzuplanen.
Führen Sie den folgenden Befehl aus:
sudo systemctl enable --now dnf-automatic.timer
Sie sollten eine Ausgabe sehen, die anzeigt, dass der Timer aktiviert und gestartet wurde. Damit sind geplante automatische Paketupdates für das System aktiv.
Schritt 3: Konfiguration überprüfen
Nach dem Schreiben der Konfiguration sollte diese überprüft werden.
3.1 Überprüfung unter Debian/Ubuntu
Führen Sie einen Testlauf (Dry Run) durch, um die Konfiguration zu validieren. Das Flag -d (bzw. --dry-run) startet unattended-upgrades im Debug-Modus - es wird nichts tatsächlich geändert:
sudo unattended-upgrades --dry-run --debug
Das Flag --dry-run gibt Diagnoseinformationen aus, verändert aber keine Dateien. Stellen Sie sicher, dass keine Pakete der Blacklist zur Installation vorgemerkt sind.
In der Produktion sind Logs aussagekräftiger als Testläufe. Prüfen Sie, ob Timer und Dienst aktiv sind:
systemctl list-timers | grep apt systemctl status apt-daily-upgrade.service --no-pager
Prüfen Sie anschließend die jüngste Log-Ausgabe, um die Update-Aktivität zu bestätigen. Auf einem frisch konfigurierten System kann das Log leer sein. Für eine sofortige Prüfung führen Sie aus: sudo unattended-upgrade -v.
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
3.2 Timer unter RHEL/AlmaLinux prüfen
Prüfen Sie den Status des Timers:
systemctl list-timers | grep dnf-automatic
Erwartete Ausgabe:
Wed 2026-05-27 06:23:13 EEST 16h left - - dnf-automatic.timer dnf-automatic.service
Wenn der Timer aufgeführt wird, sind Ihre Updates korrekt eingeplant.
3.3 Notwendigkeit eines Neustarts prüfen
Kernel- und libc-Updates gehören zur Warteschlange der Sicherheitsupdates (unter Debian ist beispielsweise linux-image-amd64 Teil der Sicherheitsupdates). Da Automatic-Reboot=false gesetzt ist, müssen Sie selbst prüfen, ob ein manueller Neustart erforderlich ist.
Für Debian/Ubuntu:
test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs
Für AlmaLinux/RHEL:
sudo dnf needs-restarting -r
3.4 Erzwungener Lauf zur Überprüfung
Ergebnisse sehen Sie möglicherweise erst, wenn der Timer ausgelöst hat. So starten Sie den Update-Prozess zur Überprüfung manuell:
Für Debian/Ubuntu:
sudo unattended-upgrade -v
Für AlmaLinux/RHEL:
sudo dnf-automatic
Schritt 4: Erweiterte Konfiguration (Expertenniveau)
Um Anforderungen auf Expertenniveau zu erfüllen, können Sie das Setup um Benachrichtigungen und eine feingranulare Zeitplanung erweitern.
4.1 E-Mail-Benachrichtigungen
So erhalten Sie Berichte über die Updates:
Für Debian/Ubuntu:
Entfernen Sie in /etc/apt/apt.conf.d/50unattended-upgrades die Kommentarzeichen und passen Sie an:
Unattended-Upgrade::Mail "<YOUR_EMAIL>"; Unattended-Upgrade::MailReport "on-change";
Für AlmaLinux/RHEL:
Konfigurieren Sie in /etc/dnf/automatic.conf den Abschnitt [email] und ändern Sie den Emitter:
[emitters] emit_via = email [email] email_from = [email protected] email_to = <YOUR_EMAIL> email_host = localhost
4.2 Erweiterte dnf-automatic-Timer
dnf-automatic bietet mehrere Timer, mit denen sich Download- und Installationsphase trennen lassen. Das ermöglicht in der Produktion eine feinere Steuerung:
- dnf-automatic.timer: Der Standard-Timer (lädt herunter und installiert optional, falls konfiguriert).
- dnf-automatic-notifyonly.timer: Prüft nur auf Updates und sendet eine Benachrichtigung.
- dnf-automatic-download.timer: Lädt die Updates herunter, installiert sie aber nicht.
- dnf-automatic-install.timer: Lädt Updates herunter und installiert sie automatisch (überschreibt die Einstellung
apply_updatesin der Konfiguration).
Verwenden Sie den Timer, der zur Wartungsrichtlinie Ihres Clusters passt.
Rollback
Um alles rückgängig zu machen, entfernen Sie einfach die Werkzeuge und Konfigurationen.
Debian/Ubuntu:
sudo apt purge unattended-upgrades -y sudo rm -rf /etc/apt/apt.conf.d/20auto-upgrades /var/log/unattended-upgrades/ /var/run/reboot-required* sudo mv /etc/apt/apt.conf.d/50unattended-upgrades.bak /etc/apt/apt.conf.d/50unattended-upgrades
RHEL/AlmaLinux:
sudo systemctl disable --now dnf-automatic.timer sudo mv /etc/dnf/automatic.conf.bak /etc/dnf/automatic.conf sudo dnf remove dnf-automatic -y
Das Entfernen dieser Werkzeuge deaktiviert die automatischen Updates für das gesamte System. Ihre Server bleiben dann verwundbar, sofern sie nicht manuell gepatcht werden.
Fazit
Das war's. Ein korrekt konfiguriertes System mit unattended-upgrades oder dnf-automatic, per Dry Run überprüft - und fertig. Durch diese Automatisierung von Sicherheitspatches werden automatische Linux-Updates nahtlos eingespielt, der Wartungsaufwand bleibt gering und die Updates von Linux-Servern werden planbar statt reaktiv. Kombinieren Sie dieses Setup in größeren Umgebungen mit Infrastructure as Code und gestaffelten Rollouts, damit nicht alle Knoten gleichzeitig aktualisiert werden.
Dokumentversion: 1.0
Zuletzt aktualisiert: Mai 2026
Verantwortlich: Team für technische Dokumentation