Hallo zusammen,
ich bin ein Rückkehrer nach längerer Zeit bei einem anderen Anbieter. Dort war ich es gewohnt, alles zu automatisieren, was ich für den täglichen Betrieb brauche – besonders die Firewall-Regeln. Ihr kennt das bestimmt: man sitzt hinter einem ISP mit dynamischer IP, und alle paar Tage muss man wieder die Adresse aktualisieren, um überhaupt auf den Server zu kommen. Nervig. Und SSH dauerhaft offen lassen will ja auch keiner.
Zum Glück bietet Netcup mit der SCP-API genau das, was man dafür braucht. Also hab ich mir ein kleines Tool gebaut: netcup-autofirewall.
Was es macht:
Bei jedem Lauf ermittelt es deine aktuelle öffentliche IPv4/IPv6, schreibt sie in eine Firewall-Policy namens ssh-autofirewall und hängt die an das Interface deines Servers – zusätzlich zu allem, was da schon dran hängt, nichts wird überschrieben. Die Policy selbst besteht aus drei Regeln: ACCEPT für deine aktuelle IPv4, ACCEPT für deine IPv6, DROP für den Rest. Läuft die IP-Adresse dir weg, wird beim nächsten Aufruf einfach dieselbe Policy aktualisiert statt eine neue anzulegen – da sammelt sich also nichts an.
Ein Punkt, der mir persönlich wichtig war: die IP-Erkennung läuft komplett selbst gehostet. Es gibt einen kleinen echo-server, den man auf einer eigenen Maschine laufen lässt (bei mir läuft er hinter Cloudflare), und der beantwortet nur die Frage "was ist meine IP". Kein Drittanbieter-Dienst sieht deine Adresse.
Außerdem dabei:
- Optional --cf, um zusätzlich HTTPS von Cloudflares Edge-Ranges freizugeben (praktisch, wenn der Server hinter Cloudflare-Proxy läuft)
- Optional --wg für WireGuard auf UDP 51820
- Ein eingebauter Scheduler (run), der sich selbst per Cron-Ausdruck immer wieder neu anwendet – man braucht also nicht mal Host-Cron dafür
- Beide Binaries (CLI + echo-server) gibt's als schlanke Container-Images
Login läuft über den OAuth2 Device Flow, danach genügt für den Alltag nur noch netcup-autofirewall apply --yes bzw. der Daemon-Modus.
Ist noch recht frisch, daher: Feedback, Issues und PRs sind willkommen. Falls jemand ähnliche Bedürfnisse hatte und selbst was gebaut hat, würde mich auch interessieren, wie ihr das gelöst habt.
Ein Wort der Warnung, falls jemand es ausprobiert: Serial/VNC-Konsole griffbereit halten, bis ihr sicher seid, dass es funktioniert. Lockout ist bei sowas immer ein Thema.
Viele Grüße
hra42