Hlavní navigace

Port Knocking

26. 2. 2004
Doba čtení: 3 minuty

Sdílet

Tentokrát zabrousíme do oblasti praktické bezpečnosti síťové komunikace. Port knocking řada mých kolegů přijala doslova s nadšením. A není se co divit - představuje tak jednoduchou, elegantní a užitečnou myšlenku, že o ní nejde nenapsat. Umožňuje zajistit si vzdálený přístup k počítači, aniž byste jej otevírali nazdařbůh celému světu.

Valná většina bezpečnostních problémů a rizik je způsobena chybami v programech. Základní bezpečnostní poučka proto říká, že by jich mělo běžet co nejméně. Na počítači připojeném k Internetu nespouštějte servery pro služby, které nepotřebujete.

Ovšem co se službami, které člověk potřebuje? Řekněme, že chcete mít vzdálený přístup ke svému stroji, tedy hodláte se připojovat prostřednictvím SSH. Ovšem před časem byla nebezpečná chyba objevena právě v implementaci SSH (pokud si dobře vzpomínám, stálo nás to tehdy jeden server).

Abyste nenechali svůj stroj napospas kdekomu, používá se firewall. Jeho prostřednictvím můžete omezit přístup k SSH démonovi jen z vybraných adres. Ostatní pak na něj nemohou zkoušet své špinavé triky. Jenže určení vlastní adresy nemusí být vždy snadné. Možná se připojujete přes modem a terminálový server vám adresu přiděluje náhodně. Nebo cestujete, připojujete se v různých částech sítě, a vaše adresa se proto často mění. Právě pro tyto případy je určeno ťukání na porty čili port knocking.

Základní myšlenka je velmi prostá. Firewallem zavřete všechny porty svého počítače, ale část z nich bude sledována ťukacím démonem - říkejme mu vrátný. Jestliže zaťukáte (pokusíte se navázat spojení) ze stejné adresy na několik portů v daném pořadí, vrátný pozná, že přichází domácí pán, a upraví pravidla firewallu tak, aby mu umožnil použít požadovanou službu.

V našem případě by to znamenalo, že vrátný povolí spojení z vaší momentální adresy na port 22, kde čeká SSH démon. Záleží jen na konfiguraci, zda toto otevření bude dočasné, nebo zda musíte vyťukat jinou sekvenci, aby vrátný port zase zavřel. Zaťukat můžete odkudkoli a port se otevře pro adresu, na které se právě nacházíte.

Port knocking nenahrazuje existující bezpečnostní mechanismy, ale doplňuje je. Umožňuje zablokovat služby vašeho počítače vůči celému světu, ale na žádost je cíleně otevřít. Z pohledu potenciálního vetřelce je navíc velmi těžko odhalitelný, protože na ťukání nijak viditelně nereaguje. Veškeré děje se odehrávají uvnitř a ťukající klient o nich není informován. Prostě zaťukáte a pak se pokusíte navázat SSH spojení. Dopadlo-li ťukání dobře, bude vám to umožněno. Vetřelec tedy nemá žádnou zpětnou vazbu, která by mu naznačovala, že se očekává ťukání, že se ťukací sekvence vyvíjí dobře nebo špatně. Veškeré porty se tváří jako černá díra a nijak nereagují.

I v případě, že by se mu podařilo vrátného ošálit, zaťukat správně a dosáhnout otevření SSH portu, zdaleka nemá vyhráno. Teď se totiž ocitá tváří v tvář SSH démonovi a musí se prokázat jemu (nebo jej ošidit). Čili teprve teď se nachází v situaci, v jaké by byl, kdyby bylo připojení ke službě SSH povoleno bez omezení. Přesněji řečeno je na tom o něco hůře, protože vrátný port pro SSH za chvíli pravděpodobně zav­ře.

Asi vás napadlo, že ťukání je choulostivé na odposlech. Někdo odposlouchá vaši ťukací sekvenci a bude ji pak schopen zopakovat. Jako reakci na tuhle slabinu autoři vytvořili mechanismus šifrovaného ťukání. Vychází z myšlenky, že i když firewall zařízne pokus o spojení a nepropustí do systému žádná data, přesto lze tímto způsobem předat data dovnitř - tvoří je číslo portu, na který se kdosi pokusil připojit.

Pokud byste tedy vrátnému chtěli sdělit slovo „Ahoj“, zaťukáte postupně na porty 65, 104, 111 a 106, což jsou ASCII kódy jednotlivých písmen slova. Vrátný si je přečte v protokolu o činnosti firewallu, který soustavně sleduje.

Šifrované ťukání vypadá tak, že vezmete IP adresu, kterou chcete povolit, číslo portu, požadovanou dobu otevření a případné další parametry, vše zašifrujete vhodným algoritmem a heslem a dostanete tak posloupnost bajtů. Ty určují čísla portů, na které máte zaťukat. Vrátný si hodnoty přečte, dešifruje a otevře port podle vašeho požadavku.

Proto vrátný vždy poslouchá na skupině 256 sousedících portů, abyste jedním ťuknutím mohli vyjádřit jeden bajt informace. Těchto 256 portů může být umístěno kdekoli - například na portech 719 až 974 (vrátný i ťukací klient musí mít v konfiguraci číslo prvního z nich). Je záhodno umístit vrátného na nějaké neobvyklé porty - opět tím o chlup ztížíte situaci potenciálním vetřelcům.

BRAND24

Port knocking představuje jednoduchou a originální myšlenku a takové přístupy bývají v Internetu úspěšné. Podrobné informace o něm i prototypy serveru a klienta získáte na adrese www.portknockin­g.org. Takže zbývá jen nainstalovat a zazpívat si

„Hey hey hey hey
Knock knock knockin' on heaven's port“

(tenhle žertík jsem bohužel nevymyslel já).

Vyzkoušíte port knocking?

Byl pro vás článek přínosný?

Autor článku

Autor dělá nepořádek v příslovích, protože sítě nejen dělá, ale i učí a dokonce také řídí. Působí na Ústavu nových technologií a aplikované informatiky na Technické univerzitě v Liberci. Píše knihy.
Upozorníme vás na články, které by vám neměly uniknout (maximálně 2x týdně).