Gå til indhold
Secret Knock

knockd.conf-eksempler

knockd læser /etc/knockd.conf: en [options]-sektion og én sektion pr. dør. Hver sektion har en sekvens, en tidsgrænse og kommandoen, der skal køres for den bankende adresse, %IP%. Vælg dine egne porte — genbrug aldrig dem fra eksempler.

Åbn SSH i nogle få sekunder

Den mest almindelige opsætning: Ét bank åbner SSH, og knockd lukker den igen efter cmd_timeout. Sessioner, du allerede har åbnet, fortsætter med at fungere, hvis firewallen accepterer etablerede forbindelser.

[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
/etc/knockd.conf

Separate sekvenser til at åbne og lukke

Uden en timer forbliver porten åben, indtil du banker lukkesekvensen. Det er praktisk, men let at glemme — foretræk versionen med tidsbegrænsning.

[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
/etc/knockd.conf

Engangssekvenser

I stedet for én fast sekvens kan knockd læse en fil med sekvenser og kun acceptere hver enkelt én gang, så et optaget bank ikke kan genafspilles. Secret Knock beholder den samme liste og går videre til den næste sekvens efter et bank, der åbnede 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
/etc/knockd.conf og sekvensfilen

Med nftables

På systemer med nftables kan du lade knockd tilføje adressen til et sæt med en timeout; vejledningen til at skjule SSH viser den tilsvarende nftables-tabel.

[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 }
/etc/knockd.conf

Efter redigering

  1. 1På Debian og Ubuntu skal du angive den grænseflade, knockd lytter på, i /etc/default/knockd (KNOCKD_OPTS="-i eth0") og genstarte knockd.
  2. 2Se det virke med journalctl -u knockd -f, mens du banker.
  3. 3I Secret Knock gør + › Importer fra fil hver sektion med en sekvens til en dør; indtast lister med engangssekvenser manuelt.

Alle eksempler på GitHub → Alle konfigurationer på denne side, klar til kopiering: github.com/mobilcomm/secretknock-examples (public domain).

Spørgsmål

Skal jeg bruge TCP- eller UDP-trin?

Begge dele fungerer. En blanding af begge gør en sekvens sværere at gætte ud fra en portscanning. UDP-trin kan indeholde et dataindhold i Secret Knock, hvis din opsætning kontrollerer det.

Vejledninger til din opsætning