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 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 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
- knockd na iPhone, iPade a Macu →
- fwknop SPA na iPhone, Macu a Apple Watch →
- Port knocking pre MikroTik →
- Zaklopanie na porty DrayTek Vigor →
- Skryte SSH pomocou port knockingu →
- Port knocking na Apple Watch →
- Prečo zaklopanie neotvorí port →
- Príklady knockd.conf →
- nastavenie servera fwknop →
- Port knocking, VPN alebo fail2ban? →
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 →