Port Knocking (SPA)

Port Knocking für Windows Server mit Single Packet Authorization

Der sicherste offene Port ist ein geschlossener. ServerBouncer hält RDP, SSH, SMB oder SQL für alle gesperrt und öffnet sie nur für Geräte, die sich mit einem signierten Paket ausweisen.

Zugriffsfreigaben mit Single Packet Authorization Der RDP-Port ist für alle geschlossen. Ein autorisiertes Gerät sendet ein signiertes UDP-Paket; danach ist der Port nur für dessen Adresse für begrenzte Zeit offen. Unbekannte Absender erreichen den Dienst nie. Unbekannt Scanner, Exploit Ihr Gerät Ed25519 · sbc knock Windows Server RDP 3389 geschlossen offen nur für Ihr Gerät

Geschützte Dienste

Ein geschützter Dienst umfasst bis zu 16 Ports (TCP, UDP oder beides). Erlaubt sind nur Loopback, die Whitelist und aktive Freigaben.

Signiertes Klopfen

sbc knock <host> <dienst> sendet genau ein UDP-Paket, signiert mit dem Ed25519-Schlüssel des Geräts. Dafür sind keine Administratorrechte nötig.

Befristete Freigabe

Die Freigabe gilt für die Quell-IP und den Dienst, 15 Minuten bis 12 Stunden (Standard 60), und schließt sich automatisch oder sofort auf Befehl.

So läuft eine Anmeldung ab

  1. RDP (Port 3389) ist für das ganze Internet gesperrt. Ein Scanner sieht den Port nicht als offen, ein Exploit erreicht den RDP-Dienst nicht.
  2. Sie führen auf Ihrem Laptop sbc knock server.example.com rdp aus. Das schickt ein einziges UDP-Paket an den SPA-Port des Servers (Standard 62201).
  3. ServerBouncer prüft das Paket: Gerät bekannt, Ed25519-Signatur gültig, Uhrzeit innerhalb von 60 Sekunden, Paket nicht schon einmal gesehen.
  4. Ist alles in Ordnung, öffnet ServerBouncer RDP nur für Ihre IP-Adresse und nur für die angefragte Dauer (Standard 60 Minuten).
  5. Sie verbinden sich ganz normal mit Remotedesktop. Die Freigabe schließt sich danach automatisch – Ihre laufende Sitzung bleibt bestehen.

Der Server antwortet auf das Klopf-Paket nie, auch nicht bei Fehlern. Für Angreifer sieht der SPA-Port deshalb genauso aus wie ein geschlossener Port. Ob die Freigabe geklappt hat, sehen Sie daran, dass die RDP-Verbindung danach zustande kommt.

Einrichtung am Server

  1. SPA einschalten in der Konfigurationsdatei serverbouncer.json: Access:SpaEnabled = true, optional ein anderer Port über Access:SpaPort (Standard 62201).
  2. Geschützten Dienst anlegen, z. B. sbc access services set rdp --ports 3389 --protocol both. ServerBouncer prüft vorher, ob Sie sich damit selbst aussperren würden, und warnt in diesem Fall.
  3. Geräte registrieren – für jeden Client ein eigener Schlüssel (siehe unten). Geräte lassen sich einzeln entfernen; ein verlorener Laptop ist damit sofort ausgesperrt.

Muss am Server ein Port offen sein?

Ja, genau einer: der UDP-Port für SPA (Standard 62201, frei wählbar). Diesen Port legt ServerBouncer in der Windows-Firewall automatisch an, sobald SPA läuft, und entfernt die Regel wieder, wenn SPA aus ist. Alle geschützten Dienste wie RDP bleiben zu.

Liegt vor dem Server noch eine weitere Firewall oder ein Router mit NAT (z. B. beim Hoster oder im Rechenzentrum), muss dort UDP 62201 zum Server weitergeleitet werden – genauso wie heute RDP weitergeleitet wird.

Warum ist ein offener UDP-Port unbedenklich? Der Listener prüft zuerst ein Rate-Limit je Absender, dann Format und Signatur. Er antwortet nie, führt nichts aus und öffnet nichts ohne gültige Signatur eines registrierten Geräts. Gefälschte Pakete werden auch nicht als Angriff gewertet, damit niemand fremde Adressen sperren lassen kann.

Voraussetzungen

  • ServerBouncer mit eingeschaltetem SPA auf dem Server, ausgehend vom Client erreichbarer UDP-Port 62201.
  • Richtige Uhrzeit auf Client und Server (Toleranz 60 Sekunden). Mit der automatischen Zeitsynchronisierung von Windows ist das der Normalfall.
  • Ein registrierter Geräteschlüssel auf dem Client.
  • Die Freigabe gilt für die IP-Adresse, die beim Server ankommt. Sitzen Sie hinter einem Router oder Firmen-Proxy mit NAT, ist das dessen öffentliche Adresse – die Freigabe gilt dann für alle Geräte hinter dieser Adresse, solange sie läuft. Halten Sie die Dauer deshalb kurz.

Client einrichten (Windows)

Der Client ist das Kommandozeilen-Werkzeug sbc.exe, das mit ServerBouncer ausgeliefert wird. Für knock und device keygen sind keine Administratorrechte nötig.

  1. Auf dem Client einen Schlüssel erzeugen:
    sbc access device keygen laptop-anna
    Der private Schlüssel bleibt auf dem Client, geschützt mit DPAPI im Windows-Benutzerprofil. Ausgegeben wird nur der öffentliche Schlüssel.
  2. Den öffentlichen Schlüssel am Server registrieren:
    sbc access device add laptop-anna --public-key <schlüssel>
    oder in der Web-Oberfläche unter Zugriff → Geräte.
  3. Klopfen und verbinden:
    sbc knock server.example.com rdp --minutes 30
    danach Remotedesktop wie gewohnt öffnen.

Am Server selbst geht es noch kürzer: sbc access device add <name> erzeugt den Schlüssel und registriert ihn in einem Schritt.

macOS, Linux, iOS und Android

Heute gibt es den Client nur für Windows. Das Paketformat ist offen und dokumentiert (UDP, Ed25519-signiert, höchstens 256 Byte); Clients für weitere Plattformen stehen auf der Roadmap:

  • macOS und Linux: ein Kommandozeilen-Client mit denselben Befehlen wie unter Windows.
  • iOS und Android: eine App, die mit einem Tipp klopft, bevor Sie den RDP-Client öffnen.

Bis dahin gibt es zwei Wege für Geräte ohne Windows-Client: ein Windows-Rechner, der für Sie klopft (die Freigabe gilt dann für dessen Adresse – sinnvoll, wenn beide hinter demselben Anschluss sitzen), oder eine befristete Freigabe für Ihre IP-Adresse, die ein Administrator in der Web-Oberfläche oder mit sbc access grant rdp <ip> erteilt.

Und wenn etwas schiefgeht?

  • Whitelist-Adressen (z. B. Ihr Büro) sind immer erlaubt und brauchen kein Klopfen.
  • Laufende Sitzungen werden nie getrennt, auch wenn die Freigabe abläuft.
  • An der Konsole des Servers öffnet sbc access open --local alle geschützten Dienste befristet (Notfallzugang).
  • Jede Freigabe, jedes Gerät und jede Notfallöffnung steht im Audit- und Windows-Ereignisprotokoll.

Warum das auch gegen Exploits hilft

Brute-Force-Schutz reagiert auf Fehlanmeldungen. Ein Exploit gegen RDP braucht keine Anmeldung. Ist der Port für alle Adressen ohne Freigabe gesperrt, erreicht das Paket des Angreifers den Dienst gar nicht – deshalb ist es die einzige Abwehr, die auch unbekannte Exploits stoppt.

ServerBouncer auf Ihren Servern testen

Startet im Lernmodus – Sie sehen zuerst, was gesperrt würde.