Zum Inhalt springen
labkompass

Logbuch#security#dokumentation#selfhosting#meta

Mein eigener Export gab echte LAN-Adressen preis

Von Niclas Hennrich


ProblemBehoben

Etwas ist ausgefallen oder kaputtgegangen.

Zwischen meinem privaten Homelab-Journal und dieser Seite steht ein Export, der nur explizit freigegebene Einträge durchlässt und sie vorher auf Secrets prüft. Passwörter, Tokens, private Schlüssel: blockiert, zuverlässig.

Bevor ich weitere Einträge freigegeben habe, wollte ich das nachprüfen — nicht im Code lesen, sondern im bereits exportierten Bestand nachzählen. Ein grep über die privaten Adressbereiche, sortiert nach Häufigkeit.

Acht verschiedene private Adressen in fünf von damals zwanzig exportierten Einträgen. Router, Resolver, Switch, Server und zwei Netze aus früheren Umzügen. Dazu interne Hostnamen aus meiner home.arpa-Zone. Eine Adresse stand sogar im Titel eines Eintrags — und damit zusätzlich in der Manifest-Datei, die die Website einliest.

Die Ursache stand als Kommentar im eigenen Code: private Adressbereiche seien Beispiele und dürften deshalb durch. Die Annahme dahinter — wer 192.168.x.x schreibt, meint ein Beispiel — ist für Guides richtig und für ein Journal falsch. In einem Journal schreibe ich auf, was tatsächlich läuft.

Blockieren wäre hier das falsche Mittel gewesen. Ein Homelab-Journal ohne jede Adresse ist unlesbar, und für die Aussage sind die konkreten Zahlen fast immer egal. Stattdessen ersetzt der Export jetzt deterministisch: private IPv4, Unique-Local-IPv6 und MAC-Adressen werden durch Dokumentationswerte getauscht, jedes reale Netz bekommt ein eigenes Ersatznetz — und das letzte Oktett bleibt erhalten. „Der Server auf .42 fragt den Resolver auf .7" liest sich danach genauso wie vorher, nur eben in einem Netz, das es bei mir nicht gibt. Die Zuordnung gilt über den ganzen Exportlauf, damit der öffentliche Bestand in sich stimmig bleibt.

Was ich mitnehme: Eine Sicherheitsprüfung ist nur so gut wie ihre Annahmen — und die stehen selten in der Doku, sondern als Kommentar im Code. Meiner sagte „bleiben erlaubt", und genau da lag der Fehler. Nachgezählt habe ich im Ergebnis, nicht in der Implementierung; im Code hätte ich den Kommentar vermutlich gelesen und genickt.

Wer sein Homelab öffentlich dokumentiert, sollte einmal grep über den fertigen Export laufen lassen, bevor er dem eigenen Filter glaubt.