Accéder au contenu
Secret Knock

Configurer un serveur fwknop

L’Autorisation par paquet unique de fwknop garde SSH fermé jusqu’à l’arrivée d’un paquet UDP chiffré et authentifié. Ces étapes permettent de le configurer sur un serveur Debian ou Ubuntu ; testez d’abord depuis un ordinateur, puis ajoutez les mêmes clés à Secret Knock.

1. Installer et générer des clés

Installez le serveur et le client, puis générez une paire de clés. Conservez la sortie : les deux mêmes clés sont utilisées dans access.conf et dans Secret Knock.

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

2. Autoriser SSH pour les paquets SPA

access.conf indique ce qu’un paquet valide peut ouvrir et pendant combien de temps.

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. Indiquer à fwknopd où écouter

fwknopd capture les paquets sur une interface ; il n’a pas besoin d’un port ouvert. Définissez l’interface utilisée par votre serveur.

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

4. Fermer SSH par défaut

Gardez une session SSH ouverte pendant cette opération et effectuez un test depuis une seconde connexion avant de vous déconnecter. fwknopd insère sa propre chaîne en tête de INPUT et y ajoute une règle ACCEPT temporaire pour chaque paquet valide.

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

5. Tester, puis ajouter la porte

Redémarrez fwknop-server, envoyez un paquet depuis une autre machine et connectez-vous :

# 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]
Depuis un ordinateur avec fwknop-client
  1. 1Dans Secret Knock : Nouvelle porte › Commencer à partir d’un modèle › fwknop, saisissez l’hôte, puis collez la sortie de fwknop --key-gen avec Coller les clés.
  2. 2Frappez ; la porte affiche Porte entrouverte lorsque le port 22 répond.
  3. 3Exécutez fwknopd -f -v sur le serveur si ce n’est pas le cas : le guide de dépannage répertorie les causes habituelles.

Tous les exemples sur GitHub → Toutes les configurations de cette page, prêtes à copier : github.com/mobilcomm/secretknock-examples (domaine public).

Questions

fwknopd a-t-il besoin d’un port ouvert ?

Non. Il lit les paquets depuis l’interface réseau, le port SPA peut donc rester fermé dans le pare-feu ; le paquet doit seulement atteindre le serveur.

Guides pour votre configuration