Prejsť na obsah
Secret Knock

Vysvetlenie techniky port knocking

Port knocking udržiava službu neviditeľnú, kým niekto nedokáže, že pozná tajomstvo. Tento sprievodca vysvetľuje jeho fungovanie, dve bežné implementácie — knockd a fwknop — a dôvody, prečo zaklopania v praxi zlyhávajú.

Ako funguje port knocking

Firewall zahadzuje každé pripojenie k chránenému portu, takže skener nič nevidí. Malý démon sleduje prevádzku, ktorá zasiahne firewall. Keď jedna zdrojová adresa vytvorí očakávaný vzor, démon pridá pravidlo firewallu, ktoré túto adresu povolí, zvyčajne na krátky čas.

Vzorom je zaklopanie. Pri knockd ide o sekvenciu pokusov o pripojenie na konkrétne porty v konkrétnom poradí a v časovom limite. Pri fwknop ide o jeden šifrovaný paket.

knockd: sekvencie zaklopania

knockd počúva na rozhraní a porovnáva pokusy o pripojenie so sekvenciami v /etc/knockd.conf. Sekvencia môže kombinovať porty TCP a UDP. Keď sa zhoduje, knockd spustí príkaz — zvyčajne pravidlo iptables alebo nftables pre adresu, z ktorej prišlo zaklopanie (%IP%).

Tento príklad otvorí SSH pre adresu, z ktorej prišlo zaklopanie, a po 10 sekundách ho opäť zatvorí. Existujúce relácie SSH zostanú funkčné, ak firewall povoľuje nadviazané pripojenia.

[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 sekúnd

Vyberte si vlastné porty; nikdy nepoužívajte znova porty zo zverejnených príkladov. tcpflags = syn spôsobí, že knockd počíta iba pakety s príznakom SYN — prvý paket pokusu o pripojenie.

fwknop: Single Packet Authorization

fwknop nahrádza sekvenciu jedným paketom UDP, ktorý je šifrovaný (AES) a overený (HMAC). Server, fwknopd, ho pasívne zachytí, overí, skontroluje, či nejde o opakovanie, a otvorí požadovaný port pre adresu uvedenú v pakete.

Vygenerujte kľúče pomocou fwknop --key-gen a vložte ich do access.conf servera. Secret Knock importuje klientsku časť z vášho .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 — povoliť SSH s kľúčom SPA

Keďže povolená adresa je vo vnútri šifrovaného paketu, SPA môže otvoriť port pre inú adresu než tú, ktorá paket odosiela — užitočné, keď zaklopávate z telefónu cez mobilné dáta pre notebook na inom mieste.

Prečo zaklopania zlyhávajú

  • IPv4 vs IPv6: zaklopanie odišlo cez jednu rodinu adries a SSH sa pripája cez druhú. Firewall otvoril dvere pre adresu, ktorú nepoužívate.
  • Iná verejná adresa: pri mobilných dátach, za NAT operátora alebo VPN server vidí inú IP, než očakávate. Skontrolujte adresu, z ktorej zaklopávate.
  • Opakovane odoslané SYN: ak na zaklopanie TCP nepríde odpoveď, operačný systém klienta znova odošle rovnaké SYN. V našich testoch knockd 0.8 pri takom opakovanom SYN resetoval sekvenciu, takže klient musí každé zaklopanie odoslať raz a pokus rýchlo ukončiť.
  • Časovanie: zaklopania, ktoré prídu mimo seq_timeout alebo v nesprávnom poradí, spustia sekvenciu odznova.
  • Sieťové prostredníky: niektoré siete blokujú alebo prepisujú prevádzku na nezvyčajných portoch, takže zaklopanie, ktoré funguje doma, môže zlyhať v hotelovej alebo firemnej sieti.

Je to bezpečné?

Sekvencia knockd sa odosiela nešifrovane; ktokoľvek, kto môže sledovať vašu prevádzku, ju môže zopakovať. Používajte ju na ukrytie služby pred skenermi, pred kľúčmi SSH — nie namiesto nich. fwknop SPA túto medzeru rieši šifrovaním, HMAC a ochranou proti opakovaniu a je lepšou voľbou, keď môže byť vaša prevádzka sledovaná.

Zaklopávanie z iPhonu, Macu a Apple Watch

Secret Knock odosiela sekvencie knockd a pakety fwknop SPA z iPhonu, iPadu a Macu, kontroluje odpoveď portu a otvára vašu aplikáciu SSH. Apple Watch zaklopávajú cez spárovaný iPhone, pretože watchOS aplikáciám neumožňuje odosielať surové pakety TCP ani UDP; mimo dosahu iPhonu môžu odosielať SPA cez HTTP na servery, ktoré to podporujú.

Návody pre vašu konfiguráciu

Nechajte dvere zatvorené. Noste zaklopanie so sebou.

Secret Knock už čoskoro príde do App Store pre iPhone, iPad, Mac a Apple Watch.

Secret Knock →