Automatische Linux-Updates: unattended-upgrades & dnf-automatic | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

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";

Info

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.

Warning

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_updates und apply_updates - Sicherheitsupdates automatisch herunterzuladen und zu installieren.

Info

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

Info

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_updates in 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

Warning

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

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA