Wie ich immer alle Internet-Dienste aktualisiert halte
Regelmäßige Updates sind entscheidend, um Sicherheitslücken zu schließen. Dieser Beitrag zeigt den Updateprozess meiner Docker- und Host-Systeme.
Die regelmäßige Aktualisierung der installierten Software gehört zu den zentralen Aufgaben eines Administrators. Um potenzielle Sicherheitslücken schnell zu schließen, ist es entscheidend, auf aktuelle Updates zu achten. Hierbei können wir auf bereits integrierte Systemfunktionen zurückgreifen, die in vielen Plattformen vorhanden sind.
Docker
Im Post über meinen Webserver habe ich es bereits thematisiert. Für diesen Zweck war der Ordner /var/docker/admin/
vorgesehen.
Hier lege ich folgendes docker-compose.yml
-File an, um watchtower
dazu zu nutzen, Dockercontainer aktuell zu halten:
version: '3'
services:
watchtower:
container_name: watchtower
image: containrrr/watchtower:latest
command: --cleanup --label-enable --schedule "0 3 * * *"
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 die Container aktualisiert, denen man den Label com.centurylinklabs.watchtower.enable=true
mitgibt. Da watchtower
selbst diesen Label enthält, wird er selbst ebenfalls aktualisiert, sobald es eine neue Version gibt. In dieser Konfiguration erfolgt die Überprüfung immer um 3:00 Uhr. 😉
Eine Email informiert über Aktualisierungen, falls ein Update durchgeführt wurde:
Von: Watchtower <mmlxc@xxxxxxxx.de>
An: michael@yyyyyyyyyy.de
Betreff: [mmlxc] Watchtower updates on mmlxc
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 relativ einfach, auf dem Host sicherzustellen, dass das System stets auf dem neuesten Stand ist. Da wir bereits E-Mail-Benachrichtigungen für solche Fälle eingerichtet haben, erhalten wir automatisch eine Information, sollte ein zusätzlicher Neustart notwendig sein. 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";
Ich reboote offensichtlich meine Server selbst, sobald ich dazu aufgefordert werde. Wer diese Aufgabe auch automatisieren will, kann dies hier natürlich leicht ändern.
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: mmlxc@xxxxxxxxxx.de
An: michael@yyyyyyyyyyyyyy.de
Betreff: [reboot required] unattended-upgrades result for mmlxc.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 auf effiziente Weise. Mit der hier vorgestellten Konfiguration reicht es aus, den Vorgang zu überwachen. Sollte ein Neustart erforderlich sein, wird man entsprechend benachrichtigt, und es besteht die Möglichkeit, diesen automatisch durchführen zu lassen oder manuell zu erledigen.
In den Templates meiner VMs und LXC-Container in meiner kleinen Cloud ist diese Konfiguration bereits integriert, sodass ich beim Erstellen neuer Maschinen sofort mit ihrer eigentlichen Aufgabe beginnen kann. Auf diese Weise dauert das Aufsetzen eines sicher konfigurierten Hosts nur etwa 10 Sekunden.