A port knocking ismertetése
A port knocking rejtve tart egy szolgáltatást addig, amíg valaki be nem bizonyítja, hogy ismer egy titkot. Ez az útmutató ismerteti a működését, a két gyakori megvalósítást — knockd és fwknop —, valamint azt, miért hiúsulnak meg a kopogások a gyakorlatban.
Így működik a port knocking
A tűzfal eldob minden kapcsolatot a védett porttal, így egy szkenner semmit sem lát. Egy kis démon figyeli a tűzfalat elérő forgalmat. Amikor egy forráscím előállítja az elvárt mintát, a démon hozzáad egy tűzfalszabályt, amely engedélyezi azt a címet, általában rövid időre.
A minta a kopogás. A knockd esetén ez meghatározott portokra irányuló, meghatározott sorrendű és időkorláton belüli kapcsolódási kísérletek sorozata. A fwknop esetén egyetlen titkosított csomag.
knockd: kopogási sorozatok
A knockd egy interfészen figyel, és a kapcsolódási kísérleteket az /etc/knockd.conf fájlban lévő sorozatokhoz illeszti. Egy sorozat TCP- és UDP-portokat is tartalmazhat. Egyezéskor a knockd parancsot futtat — jellemzően egy iptables vagy nftables szabályt a kopogó címhez (%IP%).
Ez a példa megnyitja az SSH-t a kopogó cím számára, majd 10 másodperc után ismét bezárja. A meglévő SSH-munkamenetek tovább működnek, ha a tűzfalad engedélyezi a létrejött kapcsolatokat.
[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 Válassz saját portokat; soha ne használd újra közzétett példák portjait. A tcpflags = syn beállítás hatására a knockd csak a SYN jelzővel ellátott csomagokat számolja — a kapcsolódási kísérlet első csomagját.
fwknop: Single Packet Authorization
A fwknop a sorozatot egyetlen, titkosított (AES) és HMAC-kel hitelesített UDP-csomaggal helyettesíti. A szerver, a fwknopd, passzívan elfogja, ellenőrzi, hogy nem visszajátszott csomag-e, majd megnyitja a kért portot a csomagban szereplő cím számára.
Hozz létre kulcsokat a fwknop --key-gen paranccsal, és helyezd őket a szerver access.conf fájljába. A Secret Knock a kliensoldali beállításokat a .fwknoprc fájlból importálja.
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 Mivel az engedélyezett cím a titkosított csomagban utazik, a SPA olyan cím számára is megnyithat egy portot, amely nem azonos a csomagot küldőével — ez akkor hasznos, ha egy mobiladat-kapcsolaton lévő telefonról kopogsz egy máshol lévő laptop számára.
Miért hiúsulnak meg a kopogások
- IPv4 vagy IPv6: a kopogás az egyik címcsaládon ment ki, az SSH pedig a másikon kapcsolódik. A tűzfal olyan cím számára nyitotta meg az ajtót, amelyet nem használsz.
- Eltérő nyilvános cím: mobiladaton, szolgáltatói NAT vagy VPN mögött a szerver más IP-címet lát, mint amire számítasz. Ellenőrizd a címet, ahonnan kopogsz.
- Újraküldött SYN-ek: ha egy TCP-kopogás nem kap választ, a kliens operációs rendszere újra elküldi ugyanazt a SYN-t. Tesztjeinkben a knockd 0.8 ilyen ismételt SYN esetén alaphelyzetbe állította a sorozatot, ezért a kliensnek minden kopogást egyszer kell elküldenie, és gyorsan le kell állítania a kísérletet.
- Időzítés: a seq_timeout időn kívül vagy rossz sorrendben érkező kopogások újraindítják a sorozatot.
- Köztes hálózati eszközök: egyes hálózatok blokkolják vagy átírják a szokatlan portokra irányuló forgalmat, ezért egy otthon működő kopogás szállodai vagy irodai hálózaton sikertelen lehet.
Biztonságos?
A knockd sorozat titkosítatlanul kerül elküldésre; bárki visszajátszhatja, aki figyelni tudja a forgalmadat. Szkennerekkel szemben szolgáltatás elrejtésére, SSH-kulcsok elé használd — ne helyettük. A fwknop SPA titkosítással, HMAC-kel és visszajátszás elleni védelemmel zárja ezt a rést, és jobb választás, ha a forgalmadat megfigyelhetik.
Kopogás iPhone-ról, Macről és Apple Watchról
A Secret Knock knockd sorozatokat és fwknop SPA csomagokat küld iPhone-ról, iPadről és Macről, ellenőrzi, hogy válaszol-e a port, majd megnyitja az SSH-appodat. Az Apple Watch a párosított iPhone-on keresztül kopog, mert a watchOS nem engedi az appoknak nyers TCP- vagy UDP-csomagok küldését; az iPhone-tól távol HTTP-n keresztül küldhet SPA-t az ezt engedélyező szervereknek.
Útmutatók a beállításához
- knockd iPhone-on, iPaden és Macen →
- fwknop SPA iPhone-on, Macen és Apple Watchon →
- MikroTik portkopogtatás →
- DrayTek Vigor portkopogtatás →
- SSH elrejtése portkopogtatással →
- Portkopogtatás Apple Watchon →
- Miért nem nyílik ki egy portkopogás után? →
- knockd.conf-példák →
- fwknop-kiszolgáló beállítása →
- Port knocking, VPN vagy fail2ban? →
Tartsd zárva az ajtót. Vidd magaddal a kopogást.
A Secret Knock hamarosan érkezik az App Store-ba iPhone-ra, iPadre, Macre és Apple Watchra.
Secret Knock →