Esempi di knockd.conf
knockd legge /etc/knockd.conf: una sezione [options] e una sezione per ogni porta. Ogni sezione contiene una sequenza, un limite di tempo e il comando da eseguire per l’indirizzo che bussa, %IP%. Scegli le tue porte: non riutilizzare mai quelle degli esempi.
Apri SSH per alcuni secondi
La configurazione più comune: una bussata apre SSH e knockd lo richiude dopo cmd_timeout. Le sessioni già aperte continuano a funzionare se il firewall accetta le connessioni stabilite.
[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 Sequenze separate per aprire e chiudere
Senza timer, la porta rimane aperta finché non bussi la sequenza di chiusura. È comodo, ma facile da dimenticare: preferisci la versione con timeout.
[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 Sequenze monouso
Invece di una sequenza fissa, knockd può leggere un file di sequenze e accettarne ognuna una sola volta, così una bussata registrata non può essere riprodotta. Secret Knock conserva lo stesso elenco e passa alla sequenza successiva dopo una bussata che ha aperto la porta.
[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 Con nftables
Sui sistemi con nftables, lascia che knockd aggiunga l’indirizzo a un set con timeout; la guida per nascondere SSH mostra la tabella nftables corrispondente.
[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 } Dopo la modifica
- 1Su Debian e Ubuntu, imposta l’interfaccia su cui knockd ascolta in /etc/default/knockd (KNOCKD_OPTS="-i eth0") e riavvia knockd.
- 2Osserva il funzionamento con journalctl -u knockd -f mentre bussi.
- 3In Secret Knock, + › Importa da file trasforma ogni sezione con una sequenza in una porta; inserisci manualmente gli elenchi di sequenze monouso.
Tutti gli esempi su GitHub → Ogni configurazione di questa pagina, pronta da copiare: github.com/mobilcomm/secretknock-examples (di pubblico dominio).
Domande
Devo usare passaggi TCP o UDP?
Entrambi funzionano. Mescolarli rende una sequenza più difficile da indovinare tramite una scansione delle porte. I passaggi UDP possono includere un payload in Secret Knock se la configurazione lo verifica.
Guide per la tua configurazione
- Il port knocking spiegato →
- knockd su iPhone, iPad e Mac →
- SPA fwknop su iPhone, Mac e Apple Watch →
- Port knocking MikroTik →
- Port knocking DrayTek Vigor →
- Nascondi SSH dietro il port knocking →
- Port knocking su Apple Watch →
- Perché una bussata non apre →
- configurazione del server fwknop →
- Port knocking, VPN o fail2ban? →