Root-Server absichern #2: Auto-Update

Root-Server absichern #2: Auto-Update
Photo by Vishnu Mohanan / Unsplash

Sicherheitslücken sind die größte Gefahr für jeden Serverbetreiber. Deshalb ist es unabdingbar sein System immer auf dem neusten Stand zu halten. Das kann man natürlich auch automatisieren, was ich hier am Beispiel von Debian zeigen möchte.

Auto-Updates können auch gefährlich sein, da es eventuell zu Problemen oder inkompatiblen Updates kommt. Manche Updates erfordern hinterher ein manuelles Eingreifen.

Die Warnung ist nicht umsonst rot hervorgehoben. Deshalb werden wir nicht alle Pakete auf unserem System automatisch aktualisieren, sondern nur Pakete mit kritischen Sicherheitsupdates. Für reine Funktionsupdates musst du also noch immer selbst Hand anlegen. Dafür kannst im Zweifel größerer Änderungen direkt korrigierend eingreifen.

unattanded-upgrades

Installation und Konfiguration

Debian bietet eine eigene Möglichkeit für automatische Updates. Dazu installiert man die Pakete unattended-upgrades und apt-listchanges.

sudo apt-get install unattended-upgrades apt-listchanges

Mit der Installation der Pakete werden im Ordner /etc/apt/apt.conf.d/ die Dateien 20auto-upgrades und 50unattended-upgrades angelegt. Da diese bei Updates überschrieben werden können legen wir unsere eigene Konfiguration an und füllen sie.

sudo nano /etc/apt/apt.conf.d/51my-unattended-upgrades
// Script aktivieren oder deaktivieren (0=deaktiviert)
APT::Periodic::Enable "1";

// Führe "apt-get update" alle n Tage aus (0=deaktiviert)
APT::Periodic::Update-Package-Lists "1";

// Führe "apt-get upgrade --download-only" alle n Tage aus (0=deaktiviert)
APT::Periodic::Download-Upgradeable-Packages "1";

// Führe "apt-get autoclean" alle n Tage aus (0=deaktiviert)
APT::Periodic::AutocleanInterval "7";

// Send report mail to root
//     0:  no report             (or null string)
//     1:  progress report       (actually any string)
//     2:  + command outputs     (remove -qq, remove 2>/dev/null, add -d)
//     3:  + trace on    APT::Periodic::Verbose "2";
APT::Periodic::Unattended-Upgrade "1";

// Aktualisiere automatisch folgende Pakete:
Unattended-Upgrade::Origins-Pattern {
      "o=Debian,a=stable";
      "o=Debian,a=stable-updates";
      "origin=Debian,codename=${distro_codename},label=Debian-Security";
};

// Hier schließt du Pakete aus, die nicht automatisch aktualisiert werden sollen.
Unattended-Upgrade::Package-Blacklist {
};

// Führe dpkg --force-confold --configure -a aus, wenn ein unklarer dpkg Status erkannt wurde. Damit werden Updates in jedem Fall durchgeführt.
Unattended-Upgrade::AutoFixInterruptedDpkg "true";

//Installiert Updates im laufenden Betrieb, nicht nur beim Herunterfahren.
Unattended-Upgrade::InstallOnShutdown "false";

// Ein Report wird an diese E-Mail geschickt
Unattended-Upgrade::Mail "root";

// Sende immer eine E-Mail.
Unattended-Upgrade::MailOnlyOnError "false";

// Entferne ungenutzte Abhängigkeiten nach dem Update.
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Entferne neue ungenutzte Abhängigkeiten nach dem Update.
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

// Führt automatisch einen Neustart des Systems durch, wenn /var/run/reboot-required nach einem Update gefunden wurde.
Unattended-Upgrade::Automatic-Reboot "true";

// Ignoriere eingeloggte Benutzer beim Neustart
Unattended-Upgrade::Automatic-Reboot-WithUsers "true";

/etc/apt/apt.conf.d/51my-unattended-upgrades

Anschließend kann man mit folgendem Befehl prüfen, ob alles funktioniert. Dabei wird das vorgehen nur simuliert. Läuft das ohne Fehlermeldung durch, dann könnt ihr weitergehen.

sudo unattended-upgrade -d --dry-run

unattended-upgrade simulieren und testen

Damit sollte euer Server regelmäßig nach Sicherheitsupdates suchen und diese installieren. Wichtig: Sollte ein Neustart notwendig sein, dann wird das System auch neu gestartet. Plant eure Services also so ein, dass sie automatisch starten.