Zum Inhalt springen
Secret Knock

Einen fwknop-Server einrichten

fwknop Single Packet Authorization hält SSH geschlossen, bis ein verschlüsseltes, authentifiziertes UDP-Paket eintrifft. Diese Schritte richten es auf einem Debian- oder Ubuntu-Server ein. Teste es zunächst von einem Computer aus und füge dann dieselben Schlüssel zu Secret Knock hinzu.

1. Installieren und Schlüssel generieren

Installiere den Server und den Client, und generiere dann ein Schlüsselpaar. Bewahre die Ausgabe auf: Dieselben zwei Schlüssel werden in access.conf und in Secret Knock verwendet.

sudo apt install fwknop-server fwknop-client
fwknop --key-gen          # prints KEY_BASE64 and HMAC_KEY_BASE64
Debian / Ubuntu

2. SSH für SPA-Pakete erlauben

access.conf legt fest, was ein gültiges Paket öffnen darf und wie lange.

SOURCE              ANY
OPEN_PORTS          tcp/22
KEY_BASE64          <output of fwknop --key-gen>
HMAC_KEY_BASE64     <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT   30
/etc/fwknop/access.conf

3. fwknopd mitteilen, wo es lauschen soll

fwknopd erfasst Pakete an einer Schnittstelle; es benötigt keinen offenen Port. Lege die Schnittstelle fest, die dein Server verwendet.

# /etc/fwknop/fwknopd.conf
PCAP_INTF               eth0;
PCAP_FILTER             udp port 62201;
MAX_SPA_PACKET_AGE      120;
/etc/fwknop/fwknopd.conf

4. SSH standardmäßig schließen

Lass währenddessen eine SSH-Sitzung geöffnet und teste über eine zweite Verbindung, bevor du dich abmeldest. fwknopd fügt seine eigene Kette oben in INPUT ein und ergänzt dort für jedes gültige Paket ein zeitlich begrenztes ACCEPT.

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
iptables

5. Testen, dann die Tür hinzufügen

Starte fwknop-server neu, sende ein Paket von einem anderen Computer und verbinde dich:

# from another machine: request SSH for the address the server sees (-R)
fwknop -A tcp/22 -R -D server.example.com \
    --key-base64-rijndael "<KEY_BASE64>" --key-base64-hmac "<HMAC_KEY_BASE64>"
ssh [email protected]
Von einem Computer mit fwknop-client
  1. 1In Secret Knock: Neue Tür › Mit einer Vorlage starten › fwknop — Single Packet Authorization. Gib den Host ein und füge die Ausgabe von fwknop --key-gen mit „Schlüssel aus fwknop --key-gen einfügen“ ein.
  2. 2Klopfe an; die Tür zeigt „Tür angelehnt“, wenn Port 22 antwortet.
  3. 3Führe auf dem Server fwknopd -f -v aus, falls dies nicht geschieht — der Leitfaden zur Fehlerbehebung führt die üblichen Ursachen auf.

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

Fragen

Benötigt fwknopd einen offenen Port?

Nein. Es liest Pakete von der Netzwerkschnittstelle, daher kann der SPA-Port in der Firewall geschlossen bleiben; das Paket muss lediglich den Server erreichen.

Anleitungen für dein Setup