Salt la conținut
Secret Knock

Exemple knockd.conf

knockd citește /etc/knockd.conf: o secțiune [options] și câte o secțiune pentru fiecare ușă. Fiecare secțiune are o secvență, o limită de timp și comanda de rulat pentru adresa care bate, %IP%. Alegeți propriile porturi — nu reutilizați niciodată porturile din exemple.

Deschideți SSH pentru câteva secunde

Cea mai obișnuită configurare: o bătaie deschide SSH, iar knockd îl închide din nou după cmd_timeout. Sesiunile pe care le-ați deschis deja continuă să funcționeze dacă firewall-ul acceptă conexiunile stabilite.

[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

Secvențe separate pentru deschidere și închidere

Fără un temporizator, portul rămâne deschis până când bateți secvența de închidere. Este convenabil, dar ușor de uitat — preferați varianta cu expirare.

[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

Secvențe de unică folosință

În locul unei singure secvențe fixe, knockd poate citi un fișier cu secvențe și le poate accepta pe fiecare o singură dată, astfel încât o bătaie înregistrată să nu poată fi redată. Secret Knock păstrează aceeași listă și trece la următoarea secvență după o bătaie care a deschis ușa.

[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 și fișierul cu secvențe

Cu nftables

Pe sistemele cu nftables, permiteți-i lui knockd să adauge adresa într-un set cu expirare; ghidul de ascundere a SSH arată tabelul nftables corespunzător.

[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

După editare

  1. 1Pe Debian și Ubuntu, setați interfața pe care knockd ascultă în /etc/default/knockd (KNOCKD_OPTS="-i eth0") și reporniți knockd.
  2. 2Urmăriți funcționarea cu journalctl -u knockd -f în timp ce bateți.
  3. 3În Secret Knock, + › Importați din fișier transformă fiecare secțiune cu o secvență într-o ușă; introduceți manual listele de secvențe de unică folosință.

Toate exemplele pe GitHub → Fiecare configurație de pe această pagină, gata de copiat: github.com/mobilcomm/secretknock-examples (domeniu public).

Întrebări

Ar trebui să folosesc pași TCP sau UDP?

Ambele funcționează. Combinarea lor face ca o secvență să fie mai greu de ghicit dintr-o scanare de porturi. Pașii UDP pot include o încărcătură utilă în Secret Knock dacă configurarea dvs. o verifică.

Ghiduri pentru configurarea ta