Updates, unbeaufsichtigt

Permalink

Eine wunderbare Erfindung sind die Package-Manager der verschiedenen Linux-Distributionen. Ohne, bräuchte ich wahrscheinlich die Zeit von sieben Leben um hinter den Updates für jedes einzelne Stück Software hinterherzulaufen. Dank Paketmanagern sind nur ein paar Befehle nötig um alles auf den aktuellen Stand zu bringen. Aber der Mensch ist ein seltsames Wesen: Wiederkehrende, stupide Arbeiten gehen gerne vergessen. Daher ist es besser auch diesen letzten Schritt noch zu automatisieren.

Im Fall von Debian gibt es im erwähnten Paketmanager, wie könnte es anders sein, ein passendes Script das sich um alles nötige kümmert: unattended-upgrades.

Vorbereitungen

Auch Aufgaben die automatisch erledigt werden sollten nicht ganz aus den Augen verloren gehen. Daher kann unattended-upgrades Mails verschicken wann immer es ein Update installiert hat. Das ist besonderst dann wichtig, wenn auf einmal irgendwas nicht mehr wie gewohnt funktioniert. In dem Fall hilft unter Umständen ein Blick in die Mails um den Schuldigen einzugrenzen.

Wie ein MTA so eingerichtet werden kann, dass er Mails auch außerhalb des Servers zustellt, habe ich in meinem Artikel „Wissen was geht mit E-Mail-Benachrichtigungen“ aufgeschrieben.

Installation

Die Installation des Scriptes unattended-upgrades erfolgt ganz einfach mit folgendem Befehl:

sudo apt-get install unattended-upgrades

Dadurch wird auch gleich eine funktionierende Standardkonfiguration eingerichtet. Damit werden auf täglicher Basis alle Sicherheitsupdates für Debian installiert.

Konfiguration

Die Häufigkeit der der Updates, standardmäßig täglich, ist in der Datei /etc/apt/apt.conf.d/20auto-upgrades festgelegt. Am Ende jeder der Zeilen in dieser Datei steht eine Zahl. Diese legt fest wie viele Tage zwischen den Aufrufen vergehen soll. Hier würde ich aber nichts ändern.

Die wichtigerer Konfigurationsdatei ist /etc/apt/apt.conf.d/50unattended-upgrades. Hier wird alles eingestellt außer dem vorab genannten Scheduling.

Origins einstellen

Um auch andere als die sicherheitsrelevanten Updates automatisch zu installieren, muss man die Software-Repositiories ergänzen aus denen diese Updates stammen können. Diese kann man über den Befehl apt-cache policy ermitteln. Der Befehl gibt eine Reihe von Attributen für jedes Repository aus das auf dem Computer eingerichtet ist. Diese Attribute nutzt man dann um die Konfigurationsdatei 50unattended-upgrades zu erweitern. Dazu wird pro Repository eine Zeile im Block Unattended-Uprade::Origins-Pattern {} hinzugefügt. Dabei können Variablen genutzt werden um unabhängig vom Debian-Release zu sein.

Die folgenden drei Zeilen decken die drei „normalen“ Repositories von Debian Stretch ab:

"origin=Debian,codename=${distro_codename}";
"origin=Debian,codename=${distro_codename}-updates";
"origin=Debian,codename=${distro_codename},label=Debian-Security";

Im Fall von Raspian, der Variante von Debian für den Raspberry Pi, ist leider ein Fehler in der Standardkonfiguration enthalten. Diese verweist auf die Repositories des originalen Debian und würde so nicht funktionieren. Die korrekten Einträge lauten wie folgt:

"origin=Raspian,codename=${distro_codename}";
"origin=Raspberry Pi Foundation,codename=${distro_codename}";

Mail- und Neustartoptionen

Im unteren Teil der Konfigurationsdatei sind bereits alle anderen Optionen zusammen mit beschreibenden Kommentaren aufgeführt. Allerdings sind diese Zeilen auskommentiert.

Um per E-Mail benachrichtigt zu werden muss die Option Unattended-Upgrade::Mail aktiviert werden. Anstelle von „root“ kann auch ein anderer Benutzer oder eine Mailadresse angegeben werden.

Manchmal benötigen Updates auch einen Neustart des Servers um wirksam zu werden. Damit dieser ebenfalls automatisch durchgeführt wird, sollte die Option Unattended-Upgrade::Automatic-Reboot aktiviert werden. Für die Option Unattended-Upgrade::Automatic-Reboot-Time ist es ratsam eine günstige Zeit zu setzen. Der Zeitpunkt ist so zu wählen das der Neustart möglichst nicht stört.

Testen

Um die Konfiguration zu testen kann man das Script auch manuell aufrufen. Wenn man dabei die Debug-Option wählt erhält man mehr Informationen:

sudo unattended-upgrade --debug

Fehlersuche

Wenn mal etwas nicht funktioniert kann man dem Fehler in den Logfiles nachspüren. Diese findet man im Verzeichnis /var/log/unattended-upgrades/. Dort sollte man die Analyse in der Datei unattended-upgrades.log beginnen.