Zum Hauptinhalt springen
Zurück zur Kategorie

Automatische Updates: unattended-upgrades Anleitung

unattended-upgrades installieren und konfigurieren, nur Sicherheitsupdates, E-Mail-Benachrichtigungen, Tests, Risiken und Gegenmaßnahmen.

Lesezeit: 10 min Serververwaltung
unattended-upgradesautomatische updatessicherheitsupdatesubuntudebianlinuxapt

Inhaltsverzeichnis

Automatische Updates: unattended-upgrades Anleitung

Eine der grundlegendsten Anforderungen an die Serversicherheit ist die rechtzeitige Anwendung von Sicherheits-Patches. Das Vergessen manueller Updates kann Ihren Server bekannten Sicherheitslücken aussetzen. Das Paket unattended-upgrades wendet Sicherheitsupdates auf Ubuntu- und Debian-Systemen automatisch an. Diese Anleitung behandelt Installation, Konfiguration und Best Practices.

Was ist unattended-upgrades?

unattended-upgrades ist ein APT-Plugin, das Sicherheitsupdates ohne menschliches Eingreifen automatisch herunterlädt und installiert. Es ist ideal für:

  • Schnelle Anwendung kritischer Sicherheits-Patches
  • Automatische Updates außerhalb der Geschäftszeiten oder in Wartungsfenstern
  • Vereinfachung der Update-Verfolgung bei der Verwaltung mehrerer Server

Automatische Updates können manchmal zu Dienstunterbrechungen führen. Kernel-Updates erfordern insbesondere einen Neustart. Konfigurieren Sie sorgfältig in Produktionsumgebungen.

Installation

Ubuntu/Debian

hljs bash
# Paket installieren
sudo apt update
sudo apt install unattended-upgrades apt-listchanges -y

# Installation verifizieren
dpkg -l unattended-upgrades

# Dienststatus prüfen
systemctl status unattended-upgrades

Automatischer Konfigurationsassistent

hljs bash
# Grundkonfiguration automatisch einrichten
sudo dpkg-reconfigure -plow unattended-upgrades
# "Yes" auswählen

Grundkonfiguration

Hauptkonfigurationsdatei: /etc/apt/apt.conf.d/50unattended-upgrades

hljs bash
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
    // Ubuntu-Sicherheitsupdates
    "${distro_id}:${distro_codename}-security";

    // Alle Updates (nicht empfohlen — nur Sicherheitsupdates bevorzugen)
    // "${distro_id}:${distro_codename}";
    // "${distro_id}:${distro_codename}-updates";
};

// Bestimmte Pakete von Updates ausschließen
Unattended-Upgrade::Package-Blacklist {
    // "nginx";
    // "mysql-server";
    // "php*";
};

// Automatischer Neustart nach Updates
Unattended-Upgrade::Automatic-Reboot "false";

// Neustartzeit (nur wenn Automatic-Reboot true ist)
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

// Ungenutzte Abhängigkeiten entfernen
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Ungenutzte Kernel-Pakete entfernen
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

// E-Mail-Benachrichtigung
Unattended-Upgrade::Mail "admin@rexe.tr";

// E-Mail nur bei Änderungen senden
Unattended-Upgrade::MailReport "on-change";
// Optionen: "always", "only-on-error", "on-change"

// Update-Log führen
Unattended-Upgrade::SyslogEnable "true";

Update-Zeitplan

Die Update-Häufigkeit wird in /etc/apt/apt.conf.d/20auto-upgrades konfiguriert:

hljs bash
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
// Paketliste täglich aktualisieren
APT::Periodic::Update-Package-Lists "1";

// Aktualisierbare Pakete täglich herunterladen
APT::Periodic::Download-Upgradeable-Packages "1";

// unattended-upgrades täglich ausführen
APT::Periodic::Unattended-Upgrade "1";

// Alten Paket-Cache alle 7 Tage bereinigen
APT::Periodic::AutocleanInterval "7";

Werte sind in Tagen angegeben. "1" = täglich, "7" = wöchentlich, "0" = deaktiviert.

Nur Sicherheitsupdates

Nur Sicherheitsupdates automatisch anzuwenden ist der sicherste Ansatz für Produktionsserver:

Unattended-Upgrade::Allowed-Origins {
    // NUR Sicherheitsupdates
    "${distro_id}:${distro_codename}-security";
};

// Alle anderen Update-Quellen auskommentieren
// "${distro_id}:${distro_codename}";
// "${distro_id}:${distro_codename}-updates";

E-Mail-Benachrichtigungen

mailutils oder postfix ist für Update-Benachrichtigungen erforderlich:

hljs bash
# mailutils installieren
sudo apt install mailutils -y

# Für einfache SMTP-Konfiguration
sudo apt install ssmtp -y
sudo nano /etc/ssmtp/ssmtp.conf
root=admin@rexe.tr
mailhub=smtp.gmail.com:587
AuthUser=ihre-email@gmail.com
AuthPass=ihr-app-passwort
UseTLS=YES
UseSTARTTLS=YES
hljs bash
# E-Mail testen
echo "Testnachricht" | mail -s "Server-Update-Test" admin@rexe.tr

Konfiguration testen

Probelauf (Dry Run)

hljs bash
# Simulieren ohne tatsächlich zu aktualisieren
sudo unattended-upgrade --dry-run --debug

# Ausführlichere Ausgabe
sudo unattended-upgrade -d --dry-run

Manueller Lauf

hljs bash
# unattended-upgrades sofort ausführen
sudo unattended-upgrade -d

# Im Verbose-Modus ausführen
sudo unattended-upgrade --verbose

Log-Dateien überprüfen

hljs bash
# Haupt-Log-Datei
cat /var/log/unattended-upgrades/unattended-upgrades.log

# Fehler-Logs
cat /var/log/unattended-upgrades/unattended-upgrades-dpkg.log

# Echtzeit-Log-Überwachung
tail -f /var/log/unattended-upgrades/unattended-upgrades.log

Kernel-Updates und Neustarts

Kernel-Updates erfordern besondere Aufmerksamkeit:

hljs bash
# Prüfen ob ein Neustart erforderlich ist
cat /var/run/reboot-required

# Welche Pakete einen Neustart erfordern
cat /var/run/reboot-required.pkgs

# Neustart-Prüfung
if [ -f /var/run/reboot-required ]; then
  echo "Neustart erforderlich!"
fi

Automatische Neustart-Konfiguration

// Automatischen Neustart aktivieren
Unattended-Upgrade::Automatic-Reboot "true";

// Neustartzeit (2:00 Uhr)
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

// Nicht neu starten wenn Benutzer angemeldet sind
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";

Bevor Sie automatische Neustarts aktivieren, prüfen Sie ob Ihre Anwendung Neustarts tolerieren kann. Für kritische Produktionssysteme werden manuelle Neustarts bevorzugt.

Risiken und Gegenmaßnahmen

Mögliche Risiken

  1. Dienstunterbrechung: Einige Updates starten Dienste neu
  2. Abhängigkeitskonflikte: Paketkonflikte können in seltenen Fällen auftreten
  3. Konfigurationsänderungen: Updates können Konfigurationsdateien ändern
  4. Kernel-Updates: Erfordern einen Neustart

Risikominderung

Unattended-Upgrade::Package-Blacklist {
    // Kritischer Datenbankserver
    "mysql-server";
    "postgresql";
    // Webserver
    "nginx";
    "apache2";
    // Kernel (für manuelle Updates)
    "linux-image*";
    "linux-headers*";
};
hljs bash
# Dienststatus nach Updates prüfen
systemctl --failed

# Logs regelmäßig prüfen
tail -100 /var/log/unattended-upgrades/unattended-upgrades.log

dnf-automatic für CentOS/AlmaLinux/RHEL

RPM-basierte Systeme verwenden dnf-automatic:

hljs bash
# Installieren
sudo dnf install dnf-automatic -y

# Konfigurieren
sudo nano /etc/dnf/automatic.conf
hljs ini
[commands]
# Nur Sicherheitsupdates
upgrade_type = security
# Updates automatisch anwenden
apply_updates = yes

[emitters]
# E-Mail-Benachrichtigung
emit_via = email
email_to = admin@rexe.tr
hljs bash
# Dienst aktivieren
sudo systemctl enable --now dnf-automatic.timer

# Status prüfen
sudo systemctl status dnf-automatic.timer

Überwachen Sie auf beiden Ubuntu- und CentOS-Systemen die Log-Dateien in der ersten Woche nach der Aktivierung automatischer Updates genau. Dies hilft Ihnen, unerwartete Probleme frühzeitig zu erkennen.

Fazit

unattended-upgrades ist ein leistungsstarkes Tool zur Sicherung Ihrer REXE-Server. Durch automatisches Anwenden nur von Sicherheitsupdates, Blacklisting kritischer Pakete und Aktivierung von E-Mail-Benachrichtigungen können Sie sowohl eine sichere als auch stabile Serverumgebung aufrechterhalten. Regelmäßige Log-Prüfungen und Validierung in einer Testumgebung machen den automatischen Update-Prozess zuverlässiger.