Security
Wie ich mein Homelab absichere. Alles, was hier steht, läuft bei mir wirklich so.
Netz & Zugriff
Getrennte Netze
Mein Netz, Smart-Home-Geräte, Kameras und Gäste hängen in eigenen Zonen. Die Kameras haben gar kein Internet. Was von einer Zone in die andere darf, ist einzeln freigegeben.
Warum so: Eine gehackte Lampe oder Kamera kommt so nicht an meine Rechner.
Firewall an jedem System
Jeder Container und jede VM hat zusätzlich eine eigene Firewall, und standardmäßig ist alles zu. Dienste sind grundsätzlich nur über den Reverse Proxy erreichbar, nicht direkt.
Warum so: Ein neuer Dienst startet erst mal dicht, und ich mach nur auf, was er braucht. Nach jeder Änderung teste ich in beide Richtungen. Vom falschen Rechner muss es blocken, vom richtigen durchgehen.
Reverse Proxy mit HTTPS
Alle Weboberflächen laufen über einen Reverse Proxy mit automatischen Zertifikaten. Aus dem Internet erreichbar ist nur, was ich ausdrücklich freigegeben hab.
Zweiter Faktor
Wichtige Seiten haben ein zentrales Login mit zweitem Faktor davor. Auch die Verwaltung der Server ist mit einem Einmalcode gesichert. Privat ist mein zweiter Faktor ein YubiKey, getrennt vom Passwortmanager.
Warum so: Ein Passwort allein reicht nicht, ein gestohlenes erst recht nicht.
Angreifer aussperren
Der Reverse Proxy fragt CrowdSec, ob eine Adresse bekannt schlecht ist oder sich komisch verhält. Auf den Servern sperrt fail2ban Adressen nach drei fehlgeschlagenen SSH-Logins für eine Stunde.
Härtung
Nur so viele Rechte wie nötig
Jeder Dienst läuft in seinem eigenen Container. Mein Dashboard kann zum Beispiel nur anzeigen, fürs Schalten gibt es ein getrenntes Token. Und der Wächter darf auf den Servern nur ein paar feste Abfragen ausführen.
Warum so: Wer ein Stück übernimmt, soll nicht automatisch alles in der Hand haben.
SSH gehärtet
Ich melde mich überall mit Schlüsseln an. Wenige Versuche, kurze Zeit zum Einloggen, dazu Kernel-Einstellungen gegen die üblichen Netzwerk-Tricks.
Keine Geheimnisse im Code
Passwörter und Tokens stehen nie im Code oder in Compose-Dateien, sondern in .env-Dateien, die nur der jeweilige Dienst lesen darf. Nach dem Audit im April hab ich die Datenbank-Passwörter rotiert. Für diese Website gilt dieselbe Regel.
Erkennen & Überwachen
Änderungen protokollieren
Auf den Servern läuft auditd. Es schreibt mit, wenn SSH-Schlüssel, sudo-Rechte, Benutzer oder Cronjobs angefasst werden. Bei SSH-Schlüsseln und sudo kommt innerhalb weniger Minuten eine Nachricht aufs Handy, den Rest gibt's als Tagesübersicht.
Warum so: Wenn jemand drin ist, will ich es merken, bevor er sich festsetzt.
Wöchentliche Scans
Jeden Sonntag prüft ein Skript alle Server und Container mit trivy auf bekannte Sicherheitslücken und mit lynis auf Härtungsmängel. Ein nmap-Lauf vergleicht das ganze Netz mit dem Stand davor und meldet neue Geräte und offene Ports. Raus kommt eine Zusammenfassung mit Vergleich zur Vorwoche.
Wächter
Auf einem eigenen Container laufen rund um die Uhr 24 Prüfungen und melden sich per Telegram, wenn was nicht stimmt.
Warum so: Ein Alarm ist für mich erst fertig, wenn die Nachricht wirklich auf dem Handy ankommt. Und ich achte auf Fehlalarme, sonst wische ich sie irgendwann nur noch weg.
Bewusst leicht
Ein vollwertiges SIEM wie Wazuh hab ich mir angeschaut und verworfen. Es wäre zu schwer für meinen Cluster. Kleine Skripte machen genau das, was ich brauche.
Updates & Wiederherstellung
Updates laufen von selbst
Die Container ziehen Sicherheitsupdates nachts selbst. Home Assistant macht vor einem Update ein Backup, und ich krieg eine Meldung, wenn danach was nicht mehr läuft. Kritische Programme wie der Reverse Proxy sind gesperrt und werden von Hand aktualisiert.
Warum so: Automatisch ist gut, außer es zerlegt mir den Proxy.
Backups, die ich teste
Nachts gehen Backups aufs NAS und verschlüsselt in die Cloud. Ob eine Wiederherstellung klappt, probiere ich aus. Backup in eine Test-VM zurückspielen, Prüfsummen vergleichen, wieder wegwerfen.
Alles dokumentiert
Jedes Audit bekommt ein Protokoll mit dem, was ich gefunden und geändert hab. Im April waren das über 30 Fixes.
Wie die Teile zusammenhängen, siehst du im Schaubild auf der Setup-Seite.