Zum Inhalt springen
Secret Knock

Warum ein Port-Knock die Tür nicht öffnet

Ein Anklopfversuch erreicht entweder den Server nie, erreicht ihn in einer Form, die der Daemon nicht akzeptiert, oder öffnet die Tür für eine Adresse, die du nicht verwendest. Arbeite die Liste von oben nach unten durch — sie ist danach sortiert, wie häufig die einzelnen Ursachen auftreten.

1. Die Tür wurde für eine andere Adresse geöffnet

Die Firewall öffnet den Port für die Quelladresse, die der Server gesehen hat. Wenn du über IPv6 angeklopft hast und SSH dann über IPv4 verbindet — oder umgekehrt — steht die Tür für eine Adresse offen, die du nicht verwendest. Mobile Daten, Carrier-NAT und VPNs ändern die Adresse ebenfalls.

Vergleiche die Adresse, die Secret Knock auf dem Startbildschirm anzeigt („Du klopfst von … aus an“), mit der Adresse im Protokoll des Servers, und lege IPv4 oder IPv6 für die Tür fest, wenn sie sich unterscheiden.

2. Die Pakete erreichen den Server nicht

Hotel-, Büro- und Mobilfunknetze blockieren manchmal ungewöhnliche Ports, und eine Cloud-Firewall vor dem Server verwirft Pakete, bevor knockd oder fwknopd sie sieht. Beobachte den Datenverkehr auf dem Server, während du anklopfst:

# knockd (UseSyslog): every recognised step and the command it ran
sudo journalctl -u knockd -f

# Do the packets reach the server at all? (use your interface and ports)
sudo tcpdump -ni eth0 'tcp port 7311 or tcp port 8822 or udp port 9133'

# fwknopd in the foreground with verbose output
sudo fwknopd -f -v
Auf dem Server

3. Die Sequenz kommt in der falschen Form an

  1. 1Erneut übertragene SYNs: Wenn ein TCP-Knock keine Antwort erhält, sendet das Betriebssystem des Clients dasselbe SYN erneut. knockd 0.8 setzt die Sequenz bei einer solchen Wiederholung zurück. Secret Knock sendet jeden TCP-Knock als einzelnes SYN und beendet den Versuch sofort; andere Clients möglicherweise nicht.
  2. 2Timing: Alle Schritte müssen innerhalb von seq_timeout und in der richtigen Reihenfolge eintreffen. Füge vor einem Schritt eine kurze Verzögerung hinzu, wenn ein Router dazwischen Pakete neu anordnet.
  3. 3Protokoll: Ein UDP-Schritt muss als UDP und ein TCP-Schritt als TCP gesendet werden — prüfe jeden Schritt anhand von knockd.conf.
  4. 4tcpflags = syn bewirkt, dass knockd TCP-Pakete ohne SYN-Flag ignoriert. Ohne diese Einstellung zählen auch die anderen Pakete einer Verbindung zum selben Port als Treffer und können die Sequenz unterbrechen.

4. fwknop: Schlüssel, Uhren und Wiederholungen

  1. 1Beide Schlüssel müssen mit access.conf übereinstimmen: der Rijndael-Schlüssel und der HMAC-Schlüssel, jeweils mit demselben Digest (standardmäßig SHA-256).
  2. 2fwknopd lehnt Pakete ab, die älter als MAX_SPA_PACKET_AGE sind (standardmäßig 120 Sekunden). Eine stark falsch eingestellte Geräteuhr lässt daher jedes Paket alt erscheinen.
  3. 3Jedes SPA-Paket kann nur einmal verwendet werden; fwknopd verwirft ein wiederholtes Paket absichtlich.
  4. 4Wenn du über HTTP anklopfst, muss etwas TCP-Verbindungen auf diesem Port akzeptieren, sonst wird die Anfrage nie gesendet.

5. Die Tür ist angelehnt, aber SSH schlägt weiterhin fehl

  1. 1Regelreihenfolge: Die Regel, die der Daemon hinzufügt, muss vor der Regel stehen, die den Port verwirft — ein iptables -A hängt sie nach einem bestehenden DROP an und sie trifft nie zu.
  2. 2Das Zeitfenster: cmd_timeout oder FW_ACCESS_TIMEOUT hat die Tür geschlossen, bevor SSH verbunden war. Verbinde dich innerhalb des Zeitfensters; bestehende Sitzungen funktionieren weiterhin, wenn deine Firewall bestehende Verbindungen akzeptiert.
  3. 3Die Portprüfung von Secret Knock nach dem Anklopfen zeigt dir unabhängig von der SSH-Authentifizierung, ob der Port überhaupt geantwortet hat.

Alle Beispiele auf GitHub → Jede Konfiguration auf dieser Seite, kopierbereit: github.com/mobilcomm/secretknock-examples (gemeinfrei).

Fragen

Wie sehe ich, was die App tatsächlich gesendet hat?

Der Verlauf der Tür zeigt jeden Anklopfversuch mit Zeit, Ergebnis und Adressfamilie. Der Editor zeigt denselben Anklopfversuch außerdem als Terminalbefehl, den du zum Vergleich auf einem Computer ausführen kannst.

Anleitungen für dein Setup