Accéder au contenu
Secret Knock

Pourquoi une frappe n’ouvre pas la porte

Une frappe peut ne jamais atteindre le serveur, l’atteindre sous une forme que le démon n’accepte pas, ou ouvrir la porte pour une adresse que vous n’utilisez pas. Parcourez la liste dans l’ordre : elle est classée selon la fréquence de chaque cause.

1. La porte s’est ouverte pour une autre adresse

Le pare-feu ouvre le port pour l’adresse source vue par le serveur. Si vous avez frappé via IPv6 puis que SSH se connecte via IPv4 — ou l’inverse — la porte est ouverte pour une adresse que vous n’utilisez pas. Les données mobiles, le NAT de l’opérateur et les VPN modifient également l’adresse.

Comparez l’adresse affichée par Secret Knock sur l’écran d’accueil (« Vous frappez depuis… ») avec celle figurant dans le journal du serveur, et définissez IPv4 ou IPv6 pour la porte si elles diffèrent.

2. Les paquets n’atteignent pas le serveur

Les réseaux d’hôtels, de bureaux et mobiles bloquent parfois les ports inhabituels, et un pare-feu cloud placé devant le serveur peut abandonner les paquets avant que knockd ou fwknopd ne les voie. Observez le trafic sur le serveur pendant que vous frappez :

# 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
Sur le serveur

3. La séquence arrive sous une forme incorrecte

  1. 1SYN retransmis : lorsqu’une frappe TCP ne reçoit aucune réponse, le système d’exploitation du client renvoie le même SYN. knockd 0.8 réinitialise la séquence lors d’une telle répétition. Secret Knock envoie chaque frappe TCP sous la forme d’un seul SYN et arrête immédiatement la tentative ; d’autres clients peuvent ne pas le faire.
  2. 2Synchronisation : toutes les étapes doivent arriver dans l’ordre et dans le délai seq_timeout. Ajoutez un court délai avant une étape si un routeur intermédiaire réordonne les paquets.
  3. 3Protocole : une étape UDP doit être envoyée en UDP, une étape TCP en TCP — vérifiez chaque étape par rapport à knockd.conf.
  4. 4tcpflags = syn fait que knockd ignore les paquets TCP dépourvus de l’indicateur SYN. Sans cela, les autres paquets d’une connexion vers le même port comptent aussi comme des occurrences et peuvent interrompre la séquence.

4. fwknop : clés, horloges et rejeux

  1. 1Les deux clés doivent correspondre à access.conf : la clé Rijndael et la Clé HMAC, avec le même condensat (SHA-256 par défaut).
  2. 2fwknopd rejette les paquets datant de plus de MAX_SPA_PACKET_AGE (120 secondes par défaut) ; si l’horloge d’un appareil est très décalée, chaque paquet paraît ancien.
  3. 3Chaque paquet SPA ne peut être utilisé qu’une fois ; fwknopd abandonne volontairement un paquet rejoué.
  4. 4Si vous frappez via HTTP, un service doit accepter les connexions TCP sur ce port, sinon la requête n’est jamais envoyée.

5. La porte s’entrouvre, mais SSH échoue toujours

  1. 1Ordre des règles : la règle ajoutée par le démon doit précéder celle qui abandonne le port — un iptables -A ajoute une règle après un DROP existant et ne correspond donc jamais.
  2. 2La fenêtre : cmd_timeout ou FW_ACCESS_TIMEOUT a fermé la porte avant la connexion SSH. Connectez-vous pendant la fenêtre ; les sessions établies continuent de fonctionner si votre pare-feu accepte les connexions établies.
  3. 3La vérification du port effectuée par Secret Knock après la frappe vous indique si le port a répondu, indépendamment de l’authentification SSH.

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

Questions

Comment voir ce que l’app a réellement envoyé ?

L’historique de la porte affiche chaque frappe avec son heure, son résultat et sa famille d’adresses, et l’éditeur affiche la même frappe sous la forme d’une commande de terminal que vous pouvez exécuter depuis un ordinateur à des fins de comparaison.

Guides pour votre configuration