Prijeđi na sadržaj
Secret Knock

Primjeri za knockd.conf

knockd čita /etc/knockd.conf: odjeljak [options] i jedan odjeljak za svaka vrata. Svaki odjeljak sadrži sekvencu, vremensko ograničenje i naredbu koja se pokreće za adresu s koje se kuca, %IP%. Odaberite vlastite portove — nikad nemojte ponovno upotrebljavati one iz primjera.

Otvorite SSH na nekoliko sekundi

Najčešća postavka: jedno kucanje otvara SSH, a knockd ga ponovno zatvara nakon cmd_timeout. Već otvorene sesije nastavljaju raditi ako vatrozid prihvaća uspostavljene veze.

[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

Zasebne sekvence za otvaranje i zatvaranje

Bez mjerača vremena port ostaje otvoren dok ne pokucate sekvencu za zatvaranje. Praktično je, ali lako je zaboraviti — radije koristite verziju s vremenskim ograničenjem.

[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

Jednokratne sekvence

Umjesto jedne fiksne sekvence, knockd može čitati datoteku sekvenci i prihvatiti svaku samo jednom, tako da se snimljeno kucanje ne može ponovno upotrijebiti. Secret Knock zadržava isti popis i prelazi na sljedeću sekvencu nakon kucanja koje je otvorilo vrata.

[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 datoteka sekvenci

S nftables

Na sustavima s nftables, dopustite alatu knockd da doda adresu u skup s vremenskim ograničenjem; vodič za skrivanje SSH-a prikazuje odgovarajuću nftables tablicu.

[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

Nakon uređivanja

  1. 1Na Debianu i Ubuntuu postavite sučelje na kojem knockd osluškuje u /etc/default/knockd (KNOCKD_OPTS="-i eth0") i ponovno pokrenite knockd.
  2. 2Pratite rad pomoću journalctl -u knockd -f dok kucate.
  3. 3U Secret Knocku, + › Uvezi iz datoteke pretvara svaki odjeljak sa sekvencom u vrata; popise jednokratnih sekvenci unesite ručno.

Svi primjeri na GitHubu → Svaka konfiguracija na ovoj stranici, spremna za kopiranje: github.com/mobilcomm/secretknock-examples (javno vlasništvo).

Pitanja

Trebam li koristiti TCP ili UDP korake?

Oboje funkcionira. Kombiniranjem obaju protokola sekvencu je teže pogoditi skeniranjem portova. UDP koraci mogu sadržavati korisne podatke u aplikaciji Secret Knock ako ih vaša postavka provjerava.

Vodiči za vaše postavljanje