Příklady knockd.conf
knockd čte /etc/knockd.conf: část [options] a jednu část pro každé dveře. Každá část obsahuje sekvenci, časový limit a příkaz, který se spustí pro adresu, ze které přichází zaklepání, %IP%. Zvolte si vlastní porty — nikdy nepoužívejte znovu ty z příkladů.
Otevření SSH na několik sekund
Nejběžnější nastavení: jedno zaklepání otevře SSH a knockd je po uplynutí cmd_timeout opět zavře. Relace, které jste již otevřeli, budou nadále fungovat, pokud firewall přijímá navázaná připojení.
[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 Samostatné sekvence pro otevření a zavření
Bez časovače zůstane port otevřený, dokud nezaklepete zavírací sekvenci. Je to pohodlné, ale snadno se na to zapomene — upřednostněte verzi s časovým limitem.
[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 Jednorázové sekvence
Místo jedné pevné sekvence může knockd číst soubor sekvencí a každou přijmout pouze jednou, takže zaznamenané zaklepání nelze přehrát znovu. Secret Knock zachovává stejný seznam a po zaklepání, které otevřelo dveře, přejde na další sekvenci.
[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 S nftables
V systémech s nftables nechte knockd přidat adresu do sady s časovým limitem; průvodce skrytím SSH ukazuje odpovídající tabulku nftables.
[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 } Po úpravách
- 1V Debianu a Ubuntu nastavte rozhraní, na kterém knockd naslouchá, v /etc/default/knockd (KNOCKD_OPTS="-i eth0") a restartujte knockd.
- 2Při zaklepání sledujte průběh pomocí journalctl -u knockd -f.
- 3V Secret Knock položka + › Importovat ze souboru převede každou část se sekvencí na dveře; seznamy jednorázových sekvencí zadejte ručně.
Všechny příklady na GitHubu → Každá konfigurace na této stránce připravená ke zkopírování: github.com/mobilcomm/secretknock-examples (public domain).
Otázky
Mám používat kroky TCP, nebo UDP?
Fungují obě možnosti. Kombinace obou ztěžuje odhadnutí sekvence při skenování portů. Kroky UDP mohou v Secret Knock nést datovou část, pokud ji vaše nastavení kontroluje.
Průvodci pro vaše nastavení
- Vysvětlení port knockingu →
- knockd na iPhonu, iPadu a Macu →
- fwknop SPA na iPhonu, Macu a Apple Watch →
- Klepání na porty MikroTik →
- Port knocking pro DrayTek Vigor →
- Skryjte SSH za klepáním na porty →
- Port knocking na Apple Watch →
- Proč zaklepání na port neotevře dveře →
- nastavení serveru fwknop →
- Port knocking, VPN nebo fail2ban? →