Gå til innhold
Secret Knock

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

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

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

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

Etter redigering

  1. 1På Debian og Ubuntu angir du nettverksgrensesnittet knockd skal lytte på, i /etc/default/knockd (KNOCKD_OPTS="-i eth0"), og starter knockd på nytt.
  2. 2Følg med mens det fungerer med journalctl -u knockd -f mens du banker på.
  3. 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.

Veiledninger for oppsettet ditt