Eksempler på knockd.conf
knockd leser /etc/knockd.conf: en [options]-seksjon og én seksjon per dør. Hver seksjon har en sekvens, en tidsgrense og kommandoen som skal kjøres for adressen som banker på, %IP%. Velg egne porter – bruk aldri portene fra eksemplene på nytt.
Åpne SSH i noen sekunder
Det vanligste oppsettet: Én banking åpner SSH, og knockd lukker det igjen etter cmd_timeout. Økter du allerede har åpnet, fortsetter å fungere hvis brannmuren tillater etablerte tilkoblinger.
[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 Separate sekvenser for å åpne og lukke
Uten en tidtaker forblir porten åpen til du banker på lukkesekvensen. Praktisk, men lett å glemme – foretrekk versjonen med tidsavbrudd.
[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 Engangssekvenser
I stedet for én fast sekvens kan knockd lese en fil med sekvenser og godta hver av dem bare én gang, slik at en registrert banking ikke kan gjentas. Secret Knock beholder den samme listen og går videre til neste sekvens etter en banking som åpnet døren.
[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å systemer med nftables lar du knockd legge til adressen i et sett med tidsavbrudd. Veiledningen for å skjule SSH viser den tilhørende 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 } Etter redigering
- 1På Debian og Ubuntu angir du nettverksgrensesnittet knockd skal lytte på, i /etc/default/knockd (KNOCKD_OPTS="-i eth0"), og starter knockd på nytt.
- 2Følg med mens det fungerer med journalctl -u knockd -f mens du banker på.
- 3I Secret Knock gjør + › Importer fra fil hver seksjon med en sekvens om til en dør. Angi lister med engangssekvenser manuelt.
Alle eksempler på GitHub → Alle konfigurasjonene på denne siden, klare til å kopiere: github.com/mobilcomm/secretknock-examples (public domain).
Spørsmål
Bør jeg bruke TCP- eller UDP-trinn?
Begge fungerer. Å blande begge gjør en sekvens vanskeligere å gjette ut fra en portskanning. UDP-trinn kan inneholde en nyttelast i Secret Knock hvis oppsettet kontrollerer den.