Ugrás a tartalomra
Secret Knock

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
/etc/knockd.conf — SSH megnyitása 10 másodpercre

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
/etc/fwknop/access.conf — SSH engedélyezése SPA kulccsal

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

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 →