Exemples de knockd.conf
knockd lit /etc/knockd.conf : une section [options] et une section par porte. Chaque section comporte une séquence, un délai et la commande à exécuter pour l’adresse qui frappe, %IP%. Choisissez vos propres ports : ne réutilisez jamais ceux des exemples.
Ouvrir SSH pendant quelques secondes
La configuration la plus courante : une frappe ouvre SSH, puis knockd le referme après cmd_timeout. Les sessions déjà ouvertes continuent de fonctionner si le pare-feu accepte les connexions établies.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Séquences distinctes pour ouvrir et fermer
Sans minuteur, le port reste ouvert jusqu’à ce que vous frappiez la séquence de fermeture. C’est pratique, mais facile à oublier : privilégiez la version temporisée.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9133:udp,8822:tcp,7311:tcp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Séquences à usage unique
Au lieu d’une séquence fixe, knockd peut lire un fichier de séquences et n’accepter chacune qu’une seule fois, afin qu’une frappe enregistrée ne puisse pas être rejouée. Secret Knock conserve la même liste et passe à la séquence suivante après une frappe ayant ouvert la porte.
[openSSH]
one_time_sequences = /etc/knockd/ssh_sequences
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
# /etc/knockd/ssh_sequences — one sequence per line, each used once
2222:udp,3333:tcp,4444:udp
5555:tcp,6666:udp,7777:tcp
8888:udp,9999:tcp,1111:tcp Avec nftables
Sur les systèmes utilisant nftables, laissez knockd ajouter l’adresse à un ensemble avec un délai d’expiration ; le guide pour masquer SSH présente la table nftables correspondante.
[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 } Après modification
- 1Sous Debian et Ubuntu, définissez l’interface sur laquelle knockd écoute dans /etc/default/knockd (KNOCKD_OPTS="-i eth0"), puis redémarrez knockd.
- 2Observez son fonctionnement avec journalctl -u knockd -f pendant que vous frappez.
- 3Dans Secret Knock, + › Importer depuis un fichier transforme chaque section contenant une séquence en porte ; saisissez manuellement les listes de séquences à usage unique.
Tous les exemples sur GitHub → Toutes les configurations de cette page, prêtes à copier : github.com/mobilcomm/secretknock-examples (domaine public).
Questions
Dois-je utiliser des étapes TCP ou UDP ?
Les deux fonctionnent. Les mélanger rend une séquence plus difficile à deviner à partir d’une analyse des ports. Les étapes UDP peuvent transporter une charge utile dans Secret Knock si votre configuration la vérifie.
Guides pour votre configuration
- Le port knocking expliqué →
- knockd sur iPhone, iPad et Mac →
- SPA fwknop sur iPhone, Mac et Apple Watch →
- Port knocking MikroTik →
- Port knocking DrayTek Vigor →
- Masquer SSH derrière le port knocking →
- Port knocking sur Apple Watch →
- Pourquoi une frappe n’ouvre pas le port →
- configuration du serveur fwknop →
- Port knocking, VPN ou fail2ban ? →