Wie ich immer alle Internet-Dienste aktualisiert halte

Regelmäßige Updates sind entscheidend, um Sicherheitslücken zu schließen. Der Beitrag zeigt die Konfiguration von Docker und Host-Systemen.

Wie ich immer alle Internet-Dienste aktualisiert halte
Photo by Markus Winkler / Unsplash

Die regelmäßige Aktualisierung der installierten Software zählt zu den essenziellen Aufgaben eines Administrators. Es ist entscheidend, potenzielle Sicherheitslücken umgehend zu schließen. Hierbei können wir von bereits vorhandenen Systemfeatures profitieren, die in vielen Systemen integriert sind.

Docker

Im Post über den Webserver haben wir es bereits thematisiert. Für diesen Zweck war der Ordner /var/docker/admin/ vorgesehen. Hier legen wir folgendes docker-compose.yml-File an:

version: '3'

services:
  watchtower:
    container_name: watchtower
    image: containrrr/watchtower:latest
    command: --cleanup --label-enable
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_NOTIFICATIONS=email
      - WATCHTOWER_NOTIFICATIONS_HOSTNAME=[Sender-Host]
      - WATCHTOWER_NOTIFICATION_EMAIL_SUBJECTTAG=[Sender-Host]
      - WATCHTOWER_NOTIFICATION_EMAIL_FROM=[From-Address]
      - WATCHTOWER_NOTIFICATION_EMAIL_TO=[To-Address]
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=[Mailserver-Hostname]
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=465
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_USER=[user-on-mailserver]
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=[and-his-password]
    labels:
      - com.centurylinklabs.watchtower.enable=true

In dieser Konfiguration werden nur Container aktualisiert, denen man den Label com.centurylinklabs.watchtower.enable=true mitgibt. Somit wird auch watchtower selbst aktualisiert, sobald es eine neue Version gibt. Fertig!

Eine Email informiert dann über Aktualisierungen:

Von: Watchtower <mmsrv@xxxxxxxx.de>
An: michael@yyyyyyyyyy.de
Betreff: [mmsrv] Watchtower updates on mmsrv
Datum: 12/20/23 11:20:49

Found new grafana/grafana:latest image (8387f19108f9)
Stopping /grafana (688d23bb5f1e) with SIGTERM
Creating /grafana
Removing image 06e5d59b720d

Der Host selbst

Es ist recht unkompliziert, auf dem Host sicherzustellen, dass das System auf dem neuesten Stand ist. Dabei sollte die Option in Betracht gezogen werden, dem Rechner das unbeaufsichtigte Neustarten zu ermöglichen. Da wir bereits die E-Mail-Benachrichtigung für den Versand konfiguriert haben, werden wir entsprechend informiert, falls ein zusätzlicher Neustart erforderlich ist. Im Folgenden sind die erforderlichen Schritte aufgeführt:

apt update && apt upgrade -y
apt install unattended-upgrades apt-listchanges apt-utils
dpkg-reconfigure -plow unattended-upgrades

In der Datei /etc/apt/apt.conf.d/50unattended-upgrades muss eine Email-Adresse hinterlegt werden und eine Reboot-Policy:

Unattended-Upgrade::Mail "[YOUR_MAIL_HERE]";
Unattended-Upgrade::Automatic-Reboot "false";

Auch in /etc/apt/listchanges.conf muss noch eine Email-Adresse eingetragen werden:

email_address=[YOUR_MAIL_HERE]

Wenn man testen will, ob alles funktioniert, kann man unattended-upgrades --dry-run ausführen.

Wurde dann eine Aktualisierung vorgenommen, erhält man auch hier eine Email:

Von: mmsrv@xxxxxxxxxx.de
An: michael@yyyyyyyyyyyyyy.de
Betreff: [reboot required] unattended-upgrades result for mmsrv.xxxxxx.world: SUCCESS
Datum: 12/20/23 06:08:56

Unattended upgrade result: All upgrades installed

Warning: A reboot is required to complete this upgrade, or a previous one.

Unattended-upgrades log:
Starting unattended upgrades script
Allowed origins are: o=Ubuntu,a=jammy, o=Ubuntu,a=jammy-security, o=UbuntuESMApps,a=jammy-apps-security, o=UbuntuESM,a=jammy-infra-security
Initial blacklist:
Initial whitelist (not strict):
Packages that will be upgraded: libssh-4 libssh-gcrypt-4 openssh-client openssh-server openssh-sftp-server
Writing dpkg log to /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
All upgrades installed

Fazit

Automatische Updates übernehmen zeitraubende wiederkehrende Aufgaben effizient. Durch die hier vorgestellte Konfiguration ist es lediglich notwendig, den Vorgang zu beobachten. Im Falle einer Benachrichtigung über einen erforderlichen Neustart besteht die Option, diesen entweder automatisch durchführen zu lassen oder selbstständig zu erledigen.