Exemple knockd.conf
knockd citește /etc/knockd.conf: o secțiune [options] și câte o secțiune pentru fiecare ușă. Fiecare secțiune are o secvență, o limită de timp și comanda de rulat pentru adresa care bate, %IP%. Alegeți propriile porturi — nu reutilizați niciodată porturile din exemple.
Deschideți SSH pentru câteva secunde
Cea mai obișnuită configurare: o bătaie deschide SSH, iar knockd îl închide din nou după cmd_timeout. Sesiunile pe care le-ați deschis deja continuă să funcționeze dacă firewall-ul acceptă conexiunile 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 Secvențe separate pentru deschidere și închidere
Fără un temporizator, portul rămâne deschis până când bateți secvența de închidere. Este convenabil, dar ușor de uitat — preferați varianta cu expirare.
[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 Secvențe de unică folosință
În locul unei singure secvențe fixe, knockd poate citi un fișier cu secvențe și le poate accepta pe fiecare o singură dată, astfel încât o bătaie înregistrată să nu poată fi redată. Secret Knock păstrează aceeași listă și trece la următoarea secvență după o bătaie care a deschis ușa.
[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 Cu nftables
Pe sistemele cu nftables, permiteți-i lui knockd să adauge adresa într-un set cu expirare; ghidul de ascundere a SSH arată tabelul nftables corespunzător.
[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 } După editare
- 1Pe Debian și Ubuntu, setați interfața pe care knockd ascultă în /etc/default/knockd (KNOCKD_OPTS="-i eth0") și reporniți knockd.
- 2Urmăriți funcționarea cu journalctl -u knockd -f în timp ce bateți.
- 3În Secret Knock, + › Importați din fișier transformă fiecare secțiune cu o secvență într-o ușă; introduceți manual listele de secvențe de unică folosință.
Toate exemplele pe GitHub → Fiecare configurație de pe această pagină, gata de copiat: github.com/mobilcomm/secretknock-examples (domeniu public).
Întrebări
Ar trebui să folosesc pași TCP sau UDP?
Ambele funcționează. Combinarea lor face ca o secvență să fie mai greu de ghicit dintr-o scanare de porturi. Pașii UDP pot include o încărcătură utilă în Secret Knock dacă configurarea dvs. o verifică.
Ghiduri pentru configurarea ta
- Port knocking explicat →
- knockd pe iPhone, iPad și Mac →
- fwknop SPA pe iPhone, Mac și Apple Watch →
- Port knocking MikroTik →
- Port knocking DrayTek Vigor →
- Ascundeți SSH în spatele bătăilor în porturi →
- Port knocking pe Apple Watch →
- De ce o bătaie la port nu deschide →
- configurarea serverului fwknop →
- Port knocking, VPN sau fail2ban? →