Prijeđi na sadržaj
Secret Knock

Objašnjenje port knockinga

Port knocking drži uslugu nevidljivom dok netko ne dokaže da zna tajnu. Ovaj vodič objašnjava kako funkcionira, dvije uobičajene implementacije — knockd i fwknop — te zašto kucanja u praksi ne uspijevaju.

Kako port knocking funkcionira

Vatrozid odbacuje svako povezivanje sa zaštićenim portom, pa skener ne vidi ništa. Mali demon prati promet koji dolazi do vatrozida. Kad jedna izvorna adresa stvori očekivani obrazac, demon dodaje pravilo vatrozida koje toj adresi dopušta pristup, obično nakratko.

Obrazac je kucanje. Uz knockd to je niz pokušaja povezivanja s određenim portovima, određenim redoslijedom i unutar vremenskog ograničenja. Uz fwknop to je jedan šifrirani paket.

knockd: sekvence kucanja

knockd osluškuje sučelje i uspoređuje pokušaje povezivanja sa sekvencama u /etc/knockd.conf. Sekvenca može kombinirati TCP i UDP portove. Kad se podudari, knockd pokreće naredbu — obično pravilo iptables ili nftables za adresu s koje se kuca (%IP%).

Ovaj primjer otvara SSH za adresu s koje se kuca i ponovno ga zatvara nakon 10 sekundi. Postojeće SSH sesije nastavljaju raditi ako vaš vatrozid prihvaća uspostavljena povezivanja.

[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 — otvori SSH na 10 sekundi

Odaberite vlastite portove; nikada ne upotrebljavajte portove iz objavljenih primjera. tcpflags = syn čini da knockd broji samo pakete sa zastavicom SYN — prvi paket pokušaja povezivanja.

fwknop: Single Packet Authorization

fwknop zamjenjuje sekvencu jednim UDP paketom koji je šifriran (AES) i provjeren (HMAC). Poslužitelj, fwknopd, pasivno ga hvata, provjerava, potvrđuje da nije ponovno poslan i otvara zatraženi port za adresu unutar paketa.

Generirajte ključeve naredbom fwknop --key-gen i stavite ih u access.conf na poslužitelju. Secret Knock uvozi klijentsku stranu iz vaše datoteke .fwknoprc.

SOURCE              ANY
OPEN_PORTS          tcp/22
KEY_BASE64          <output of fwknop --key-gen>
HMAC_KEY_BASE64     <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT   30
/etc/fwknop/access.conf — dopusti SSH uz SPA ključ

Budući da dopuštena adresa putuje unutar šifriranog paketa, SPA može otvoriti port za adresu različitu od one koja šalje paket — korisno kad kucate s telefona na mobilnoj mreži za prijenosno računalo na drugome mjestu.

Zašto kucanja ne uspijevaju

  • IPv4 nasuprot IPv6: kucanje je poslano putem jedne adresne obitelji, a SSH se povezuje putem druge. Vatrozid je otvorio vrata za adresu koju ne upotrebljavate.
  • Druga javna adresa: na mobilnoj mreži, iza NAT-a operatera ili VPN-a poslužitelj vidi drugi IP nego što očekujete. Provjerite adresu s koje kucate.
  • Ponovno poslani SYN-ovi: ako TCP kucanje ne dobije odgovor, operativni sustav klijenta ponovno šalje isti SYN. U našim je testovima knockd 0.8 resetirao sekvencu pri takvom ponovljenom SYN-u, stoga klijent mora poslati svako kucanje jednom i brzo zaustaviti pokušaj.
  • Vrijeme: kucanja koja stignu izvan seq_timeout ili pogrešnim redoslijedom ponovno pokreću sekvencu.
  • Posrednički uređaji: neke mreže blokiraju ili mijenjaju promet prema neuobičajenim portovima, pa kucanje koje radi kod kuće može ne uspjeti na mreži hotela ili ureda.

Je li sigurno?

knockd sekvenca šalje se nešifrirana; svatko tko može pratiti vaš promet može je ponovno poslati. Upotrijebite je za skrivanje usluge od skenera, ispred SSH ključeva — ne umjesto njih. fwknop SPA uklanja taj nedostatak šifriranjem, HMAC-om i zaštitom od ponavljanja te je bolji izbor kad se vaš promet može nadzirati.

Kucanje s uređaja iPhone, Mac i Apple Watch

Secret Knock šalje knockd sekvence i fwknop SPA pakete s uređaja iPhone, iPad i Mac, provjerava odgovara li port i otvara vašu SSH aplikaciju. Apple Watch kuca putem uparenog uređaja iPhone jer watchOS ne dopušta aplikacijama slanje neobrađenih TCP ili UDP paketa; kad nije blizu uređaja iPhone, može poslati SPA putem HTTP-a poslužiteljima koji to omogućuju.

Vodiči za vaše postavljanje

Držite vrata zatvorenima. Nosite kucanje sa sobom.

Secret Knock uskoro stiže u App Store za iPhone, iPad, Mac i Apple Watch.

Secret Knock →