Root-Server absichern #2: Auto-Update
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.
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.