Accéder au contenu
Secret Knock

Masquer SSH derrière le port knocking

Un port SSH ouvert reçoit des tentatives de connexion provenant de tout Internet. Le port knocking maintient le port fermé jusqu’à ce que vous prouviez que vous connaissez un secret — puis l’ouvre uniquement pour votre adresse, pendant quelques secondes.

Avec knockd et nftables

Bloquez SSH par défaut et acceptez-le uniquement depuis les adresses d’un ensemble avec expiration. knockd ajoute l’adresse qui frappe à cet ensemble ; nftables la supprime lorsque le délai expire, et la session SSH établie continue de fonctionner.

table inet filter {
    set knocked4 {
        type ipv4_addr
        flags timeout
    }
    chain input {
        type filter hook input priority 0; policy drop;
        ct state established,related accept
        iif "lo" accept
        tcp dport 22 ip saddr @knocked4 accept
    }
}
/etc/nftables.conf (extrait)

La section knockd qui remplit l’ensemble :

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s }
/etc/knockd.conf

Séparer les accès permanents

Si vous autorisez aussi certaines adresses de façon permanente, conservez-les dans un ensemble distinct sans expiration. L’ajout d’une adresse déjà présente dans un ensemble avec expiration ne réinitialise pas son délai ; mélanger les deux types d’entrée dans un même ensemble peut donc vous empêcher d’accéder au serveur lorsque le délai expire.

Ou utilisez fwknop

SPA fwknop est plus robuste qu’une séquence : un paquet chiffré et authentifié, qui ne peut pas être rejoué. Consultez le guide fwknop.

De votre iPhone à SSH

  1. 1Maintenez le heurtoir en laiton appuyé. Secret Knock vérifie que le port 22 répond et affiche combien de temps il reste ouvert.
  2. 2Ouvrir SSH ouvre votre app SSH avec un lien ssh:// vers le serveur.
  3. 3L’option « Garder la porte ouverte tant que son écran est allumé » relance la frappe peu avant la fin du délai, lorsque la porte est affichée à l’écran.

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

Questions

Est-ce un remplacement des clés SSH ?

Non. Le port knocking masque le service ; conservez des clés SSH robustes et désactivez également les connexions par mot de passe.

Guides pour votre configuration