Hlavní navigace

Port Knocking

Pavel Satrapa 26. 2. 2004

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.

WT100

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á).

Anketa

Vyzkoušíte port knocking?

Našli jste v článku chybu?
Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

Vitalia.cz: Tesco nabízí desítky tun jídla zdarma

Tesco nabízí desítky tun jídla zdarma

Vitalia.cz: Muž, který miluje příliš. Ženám neimponuje

Muž, který miluje příliš. Ženám neimponuje

DigiZone.cz: RRTV: licence pro Šlágr TV

RRTV: licence pro Šlágr TV

Podnikatel.cz: 5 věcí, které o EET ještě nevíte

5 věcí, které o EET ještě nevíte

Vitalia.cz: Když bílkoviny, tak jíme ty nekvalitní

Když bílkoviny, tak jíme ty nekvalitní

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

Podnikatel.cz: ČSSZ posílá přehled o důchodovém kontě

ČSSZ posílá přehled o důchodovém kontě

Lupa.cz: Patička e-mailu závazná jako vlastnoruční podpis?

Patička e-mailu závazná jako vlastnoruční podpis?

Podnikatel.cz: Vytvořte si web sami. Redakční systém Tumblr

Vytvořte si web sami. Redakční systém Tumblr

DigiZone.cz: Na jaká videa se vlastně díváme

Na jaká videa se vlastně díváme

Lupa.cz: Poučný příběh jednoho rozšíření pro Chrome

Poučný příběh jednoho rozšíření pro Chrome

Vitalia.cz: Test dětských svačinek: Tyhle ne!

Test dětských svačinek: Tyhle ne!

DigiZone.cz: DVB-T2 ověřeno: seznam TV zveřejněn

DVB-T2 ověřeno: seznam TV zveřejněn

Lupa.cz: Bude Google platit médiím za použití článků?

Bude Google platit médiím za použití článků?

Vitalia.cz: Antibakteriální mýdla nepomáhají, spíš škodí

Antibakteriální mýdla nepomáhají, spíš škodí

Podnikatel.cz: Takhle se prodávají mražené potraviny

Takhle se prodávají mražené potraviny

Vitalia.cz: 5 chyb, které děláme při skladování potravin

5 chyb, které děláme při skladování potravin

Vitalia.cz: 7 příčin neplodnosti u žen: pravda a mýty

7 příčin neplodnosti u žen: pravda a mýty

Lupa.cz: Blíží se konec Wi-Fi sítí bez hesla?

Blíží se konec Wi-Fi sítí bez hesla?