Sicherheitsaktualisierungen automatisch einspielen lassen auf dem Raspberry Pi

Sicherheitsaktualisierungen automatisch einspielen lassen auf dem Raspberry Pi

Sicherheitsupdates einzuspielen ist wichtiger denn je. Auch heutzutage wird noch eine Vielzahl der kompromittierten Systeme durch Sicherheitslücken angegriffen, die längst in einem Update behoben wurden. Was trivial klingt, ist teilweise jedoch ein ernstes Problem. Gerade im Bereich der IOT-Geräte wird oft proprietäre Software eingesetzt. Hier ist der Kunde also vollständig vom Hersteller abhängig. Liefert der Hersteller die Sicherheitsaktualisierungen erst verspätet oder überhaupt nicht, stellt das Gerät eine Gefahr dar – und der Anwender ist ziemlich machtlos. Gerade bei günstigeren Geräten sind Aktualisierungen vom Hersteller jedoch oft gar nicht vorgesehen, um bei der Preisschlacht mitbieten zu können.

Auf einem freien Linux-System wie dem Raspberry Pi haben wir diese Probleme nicht: Man kann ihn selbst aktualisieren, ohne vom Hersteller abhängig zu sein. Sicherheitstechnisch macht es Sinn, entsprechende Updates automatisch zu installieren. Spätestens wenn mehrere Raspberrys im Einsatz sind, ist die zeitnahe Installation der Patches sonst nicht mehr zu gewährleisten. Im folgenden Artikel schauen wir uns an, wie dies unter Raspbian realisiert werden kann. Analog ist dies natürlich auch auf jedem Debian-Server möglich, sowie dessen zahlreicher Derivaten wie Ubuntu.

Autmatische Aktualisierungen mit Unattended-Upgrades

Für dieses verbreitete Problem gibt es bereits eine Lösung: Das Paket unattended-upgrades prüft automatisch regelmäßig auf Aktualisierungen und kann diese automatisch installieren. Zunächst müssen wir das Paket daher über die Paketverwaltung installieren:

sudo apt-get install unattended-upgrades

Nach der Installation gilt es auszuwählen, welche Aktualisierungen automatisch installiert werden sollen. Auf Wunsch lassen sich auch alle Updates ohne zutun einspielen. Hier ist allerdings abzuwägen, ob dieser Mehrwert den möglichen Problemen überwiegt. Das Beschränken auf Sicherheitsupdates ist meiner Meinung nach ein sinnvoller Kompromiss. Funktionelle Updates kann man dann von Zeit zu Zeit händisch installieren. Die automatischen Sicherheitsaktualisierungen aktivieren wir mit folgendem Befehl:

sudo dpkg-reconfigure -plow unattended-upgrades

Kurz darauf öffnet sich ein Dialogfenster, welches mit Ja zu bestätigen ist:

Konfiguration: Was passiert im Hintergrund?

Die Konfigurationsdateien liegen in /etc/apt/apt.conf.d/. Durch das Aktivieren der automatischen Updates wurden dort bestimmte Konfigurationsdateien angepasst. In der Datei /etc/apt/apt.conf.d/20auto-upgrades wird das Programm grundsätzlich aktiviert:

$ cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Update-Package-Lists aktualisiert die Paketlisten, wie man es händisch mit dem Befehl apt-get update durchführen würde. Unattended-Upgrade steht für die tatsächliche Aktualisierung der Pakete mit apt-get upgrade. Die Werte geben jeweils den Intervall in Tagen an. Standardmäßig wird also täglich auf neue Pakete geprüft und möglicherweise existierende Updates installiert.

Nur Sicherheitsupdates automatisch einspielen

Doch was genau wird aktualisiert? Dies lässt sich in /etc/apt/apt.conf.d/50unattended-upgrades festlegen. Unattended-Upgrade::Origins-Pattern filtert die Pakete, welche vom Programm automatisch geupdated werden. Standardmäßig enthält sie zwei Einträge:

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

Dies bezieht also auch normale Pakete mit ein. Um nur Sicherheitsupdates automatisiert einzuspielen, müssen wir alle Zeilen außer Debian-Security auskommentieren. Im hier vorliegenden Stand also die oberste Zeile. Auskommentiert wird mit zwei //. Damit haben wir die minimale Konfiguration abgeschlossen, um täglich nach Sicherheitsaktualisierungen zu suchen und diese bei Vorhandensein automatisch zu installieren.

Weitere sinnvolle Einstellungsmöglichkeiten

Das Tool beherrscht aber noch mehr nützliche Funktionen. Es empfiehlt sich, die auskommentierten Beispiele in der Datei /etc/apt/apt.conf.d/50unattended-upgrades anzusehen. Im folgenden ein Auszug.

Unattended-Upgrade::InstallOnShutdown „true“;

Setzt man dies auf true, werden die Updates nicht sofort installiert. Sondern beim nächsten Neustart. Dies kann sinnvoll sein um zu verhindern, dass bei einem händischen Neustart eine ggf. laufende Installation unterbrochen wird.

Bei Aktivierung wird Empfohlen, die maximiale Wartezeit in der Datei /etc/systemd/logind.conf zu erhöhen. Die Direktive lautet InhibitDelayMaxSec, sie kann z.B. auf 15 Min gesetzt werden:

InhibitDelayMaxSec=900

Unattended-Upgrade::Remove-Unused-Dependencies „true“;
Unattended-Upgrade::Remove-New-Unused-Dependencies „true“;

Führt Aufräumarbeiten aus, nachdem eine Aktualisierung erfolgt ist. Dies entspricht der Ausführung von apt-get autoremove.

Unattended-Upgrade::Automatic-Reboot „true“;
Unattended-Upgrade::Automatic-Reboot-Time „02:00“;

Teilweise ist ein Neustart erforderlich, damit Updates angewendet werden können. Beispielsweise bei Kernel-Updates. Im Falle von Sicherheitsupdates macht es Sinn, das System automatisch neu zu starten. In diesem Falle sollte man jedoch unbedingt eine Zeit festlegen. Ansonsten startet das System sofort neu, was u.u. dann tagsüber während der Verwendung geschieht.

Unattended-Upgrade::Mail „root“;

Sendet eine E-Mail an den angegebenen Benutzer, falls es bei einer Aktualisierung zu Problemen kommt. Dafür muss ein lokaler Mailhandler installiert sein. Raspbian liefert hierfür automatisch Postfix aus.

Testlauf

Wir können den Durchlauf mit folgendem Befehl simulieren:

sudo unattended-upgrades --dry-run

Durch den Probelauf (–dry-run) werden möglicherweise gefundene Updates nicht installiert. Wir erhalten diese aber angezeigt. Falls keine ausstehenden Aktualisierungen verfügbar sind, erfolgt keine Ausgabe. In der Logdatei /var/log/unattended-upgrades/unattended-upgrades.log können wir die Infolog sehen.

2020-12-26 16:54:22,789 INFO Checking if system is running on battery is skipped. Please install powermgmt-base package to check power status and skip installing updates when the system is running on battery.
2020-12-26 16:54:22,821 INFO Initial blacklist :
2020-12-26 16:54:22,822 INFO Initial whitelist:
2020-12-26 16:54:22,823 INFO Skript für automatische Systemaktualisierung wird gestartet
2020-12-26 16:54:22,824 INFO Erlaubte Ursprünge sind: origin=Debian,codename=buster,label=Debian-Security
2020-12-26 16:54:29,127 INFO Es wurden keine Pakete gefunden, von denen eine automatische Systemaktualisierung durchgeführt werden kann und kein ausstehendes automatisches Entfernen.

Um die korrekte Funktion sicherzustellen, empfiehlt es sich, die Logdatei einige Zeit später aufzurufen. Im besten Falle wird sie regelmäßig geprüft. Zu Testzwecken und der Fehlersuche kann es hilfreich sein, die Parameter –verbose für ausführlichere Protokolle sowie ggf. –debug für Debug-Meldungen (noch ausführlicher) zu verwenden:

sudo unattended-upgrades --dry-run --debug --verbose

Je nach aktivierten Funktionen und verfügbaren Aktualisierungen existieren bis zu drei Logdateien im /var/log/unattended-upgrades Ordner:

  • unattended-upgrades-dpkg.log: Protokoll für DPKG-Pakete
  • unattended-upgrades.log: Zeigt aktualisierte Pakete und Fehlermeldungen, falls Probleme aufgetreten sind
  • unattended-upgrades-shutdown.log: Infos zum automatisierten Neustart, falls ein Neustart notwendig war und dies aktiviert ist.

Bildicon: Freepik von Flaticon.com

Leave a Reply