🧪 Tech-Lab & How-To Base von Sebastian Teßmann • Zu den Produktivservices: tessmann-digital.de

📚 Archiv

Supply Chain Security: Docker-Updates absichern mit Trivy und Watchtower CVE-2026-98432: Warum ein Kernel-Update allein nicht reicht (und echtes System-Hardening) Home Assistant vs. Alexa: Das echte Smart Home (inkl. Pi-Setup, HACS & FRITZ!Box) Zero-Day abgewehrt: Die Anatomie der PHP-Lücke (CVE-2026-109618) und der ultimative Docker-Schutz Zero-Bloat Hosting: Nginx Proxy Manager, Apache & Fail2ban sicher unter Docker vereinen Checkmk Community Edition auf Debian 13: Der ultimative Guide (Installation, Distributed Monitoring, Custom Plugins & Gotify) Debian 13 vs. Windows Server im Enterprise-Einsatz: Performance, Härtung & Top 20 CLI-Befehle Cyberkrieg gegen den Mittelstand: Unsere Migration auf Proxmox, OPNsense & Zero-Trust Open Source vs. Payware: Der ehrliche Vergleich für KMU & IT-Infrastrukturen Bye-bye VMware: Mein Weg über Hyper-V zu Proxmox VE Tutorial: High-Performance Cloud mit Seafile auf Debian 13 & Proxmox VE Tutorial: Portainer EE auf CE downgraden & sicherer Host-Umzug Tutorial: CorePlan via Docker deployen (HTTPS out-of-the-box) Tutorial: Eigenes Docker Image bauen (Apache, PHP, Auto-SSL & HTTP zu HTTPS Redirect) Proxmox Unified Console (PUC): Das All-in-One Dashboard für PVE, PBS & PMG Eigener Bitcoin Solo Pool: Full Node (bitcoind), public-pool Backend & individuelles PHP-Dashboard im Docker-Stack OPNsense: HAProxy als Reverse Proxy mit Let's Encrypt SSL-Offloading & SNI / ACL-Routing Mobiles Arbeiten & Kanzlei-Zugriff: WireGuard VPN auf der FRITZ!Box, Windows & iPhone inkl. NAS-SMB-Mount Tschüss Windows, hallo Pinguin: Der ehrliche Leitfaden für den Linux-Umstieg (und warum CachyOS mein Gaming rettete) Eigener Bitcoin Solo-Mining-Pool: Public-Pool & Pruned Full Node im Docker-Homelab Gaming auf Linux: Kompletter Umstieg von Windows zu CachyOS (Kernel, Steam, Heroic & MangoHud) Docker Container absichern: Rootless, Read-Only Filesystems & Linux Capabilities Portainer CE auf Docker: Schritt-für-Schritt Setup mit persistenten Volumes & Hardening Docker Engine & Compose V2 auf Debian/Ubuntu: Saubere Installation via Official Repository E-Mail Deliverability: SPF, DKIM & DMARC richtig konfigurieren (Schritt-für-Schritt) Proxmox VE & OPNsense: IPv6 /64 Subnetting (/80 WAN Transit & /96 LAN Segmentierung) OPNsense auf Proxmox VE: Vollständiges Setup von ISO-Download bis Hardening & DNSmasq Proxmox VE auf Debian 12 (Bookworm) installieren & Routed Network (vmbr0/vmbr1) einrichten

Supply Chain Security: Docker-Updates absichern mit Trivy und Watchtower

Automatisierung ist der beste Freund des Sysadmins. Tools wie Watchtower sind in der Docker-Welt ein absoluter Segen: Sobald ein neues Image-Release auf dem Docker Hub landet, zieht Watchtower es herunter und startet den Container neu. Zero-Touch, Zero-Downtime. Doch im Jahr 2026 birgt dieses blinde Vertrauen ein massives Risiko: Supply Chain Attacks.

Docker Supply Chain Security mit Trivy

Das Problem mit dem blinden Vertrauen

Was passiert, wenn der offizielle Maintainer eines Images gehackt wird? Oder wenn eine harmlose npm-Bibliothek tief im Build-Prozess durch ein böswilliges Update kompromittiert wird (wie beim berüchtigten xz-utils-Hack)?

Wenn du Watchtower ohne Sicherheitsnetz betreibst, rollt dein Server die Schadsoftware vollautomatisch und hochgradig effizient nachts um 3 Uhr in deine produktive Infrastruktur aus. Du automatisierst quasi deine eigene Kompromittierung.

Trust, but Verify: Die Zero-Bloat Lösung

Wir brauchen einen Türsteher, der jedes Update scannt, bevor es ausgeführt wird. Hier kommt Trivy von Aqua Security ins Spiel – ein extrem schneller Vulnerability-Scanner für Container-Images. Bei Tessmann Digital drehen wir den Prozess um: Watchtower wird vom automatischen Updater zum reinen Informanten degradiert, und Trivy übernimmt die Qualitätskontrolle.

Schritt 1: Watchtower als reinen Informanten aufsetzen (Monitor-Only)

Wir verbieten Watchtower das eigenmächtige Updaten. Über die Umgebungsvariable WATCHTOWER_MONITOR_ONLY=true prüft das Tool nur noch, ob neue Images verfügbar sind, und schickt uns eine Benachrichtigung (z. B. via Telegram oder Gotify).

Hier ist die passende docker-compose.yml für deinen Management-Stack:

version: "3.8"
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - WATCHTOWER_MONITOR_ONLY=true
      - WATCHTOWER_POLL_INTERVAL=86400 # Check einmal alle 24 Stunden
      - WATCHTOWER_CLEANUP=true
      # Optional: Benachrichtigungen aktivieren (Beispiel Telegram)
      # - WATCHTOWER_NOTIFICATIONS=shoutrrr
      # - WATCHTOWER_NOTIFICATION_URL=telegram://token@telegram?channels=chat_id
    restart: unless-stopped

Schritt 2: Das sichere Update-Skript mit ephemerem Trivy

Anstatt Trivy fest auf dem Debian-Host zu installieren (was dem Zero-Bloat-Ansatz widerspricht), nutzen wir Trivy einfach selbst als temporären Docker-Container. Wenn Watchtower ein Update meldet, führen wir dieses simple Bash-Skript aus.

Das Skript zieht das neue Image, startet Trivy als Wegwerf-Container (--rm), scannt das Image und bricht den Vorgang hart ab, falls kritische Lücken gefunden werden.

#!/bin/bash
# update_secure.sh - Der sichere Docker-Updater

IMAGE="nginx:latest"
COMPOSE_DIR="/opt/docker/webserver"

echo "[1] Ziehe neuestes Image für $IMAGE..."
docker pull $IMAGE

echo "[2] Scanne Image mit Trivy auf kritische CVEs..."
# Trivy läuft als temporärer Container und greift auf den Docker-Socket zu
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
    aquasec/trivy image \
    --severity CRITICAL \
    --no-progress \
    --exit-code 1 \
    $IMAGE

# Prüfen, ob Trivy angeschlagen hat (Exit-Code 1)
if [ $? -eq 0 ]; then
    echo "[3] Scan bestanden! Keine kritischen Lücken. Container wird aktualisiert..."
    cd $COMPOSE_DIR && docker-compose up -d
else
    echo "[!] ALARM: Trivy hat kritische Lücken gefunden!"
    echo "[!] Update abgebrochen. Der laufende Container bleibt auf der alten (sicheren) Version."
    exit 1
fi

Das Ergebnis: Härtung durch Design

Mit diesem simplen Setup hast du deine Supply Chain massiv abgesichert. Versucht ein Angreifer, ein verseuchtes Update über ein kompromittiertes Repository zu verteilen, schlägt die CVE-Datenbank von Trivy an. Dein Skript blockt das Update, dein laufender Container bleibt unangetastet, und du kannst entspannt analysieren, anstatt einen brennenden Server löschen zu müssen.

Echte Sicherheit in der IT bedeutet nicht, keine Automatisierung zu nutzen. Es bedeutet, Kontrollmechanismen in die Automatisierung einzubauen.