Exempel på knockd.conf
knockd läser /etc/knockd.conf: en [options]-sektion och en sektion per dörr. Varje sektion har en sekvens, en tidsgräns och kommandot som ska köras för den knackande adressen, %IP%. Välj egna portar — återanvänd aldrig portarna från exemplen.
Öppna SSH i några sekunder
Den vanligaste inställningen: en knackning öppnar SSH och knockd stänger det igen efter cmd_timeout. Sessioner som du redan har öppnat fortsätter att fungera om brandväggen tillåter etablerade anslutningar.
[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 Separata sekvenser för att öppna och stänga
Utan en timer förblir porten öppen tills du knackar den avslutande sekvensen. Praktiskt, men lätt att glömma — välj helst den tidsstyrda versionen.
[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 Engångssekvenser
I stället för en fast sekvens kan knockd läsa en fil med sekvenser och bara acceptera var och en en gång, så att en inspelad knackning inte kan spelas upp igen. Secret Knock behåller samma lista och går vidare till nästa sekvens efter en knackning som öppnade dörren.
[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 Med nftables
På system med nftables kan du låta knockd lägga till adressen i en uppsättning med en tidsgräns; guiden för att dölja SSH visar den matchande nftables-tabellen.
[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 } Efter redigering
- 1På Debian och Ubuntu ställer du in gränssnittet som knockd lyssnar på i /etc/default/knockd (KNOCKD_OPTS="-i eth0") och startar om knockd.
- 2Se det fungera med journalctl -u knockd -f medan du knackar.
- 3I Secret Knock gör + › Importera från fil varje sektion med en sekvens till en dörr; ange listor med engångssekvenser manuellt.
Alla exempel på GitHub → Alla konfigurationer på den här sidan, redo att kopiera: github.com/mobilcomm/secretknock-examples (public domain).
Frågor
Ska jag använda TCP- eller UDP-steg?
Båda fungerar. Att blanda båda gör en sekvens svårare att gissa utifrån en portskanning. UDP-steg kan bära en nyttolast i Secret Knock om din konfiguration kontrollerar den.
Guider för din konfiguration
- Port knocking förklarat →
- knockd på iPhone, iPad och Mac →
- fwknop SPA på iPhone, Mac och Apple Watch →
- MikroTik-portknackning →
- DrayTek Vigor-portknackning →
- Dölj SSH bakom portknackning →
- Port knocking på Apple Watch →
- Varför en portknackning inte öppnar →
- Konfigurera fwknop-server →
- Port knocking, VPN eller fail2ban? →