Programování

Klepání na přístav: Bezpečnostní nápad, jehož čas nastal

Mnoho, mnoho inovací pochází ze světa Linuxu a Unixu. Jen málo z nich je pro mě zajímavější než klepání portů. Jako globální bezpečnostní plug-in pro ochranu služeb to má hodně pro sebe a několik nevýhod. Z nějakého důvodu však trpí nedostatkem použití a porozumění. Spousta administrátorů o tom možná slyšela, ale jen málokdo ví, jak to implementovat. Využilo to ještě méně.

Klepání na port funguje na konceptu, který uživatelé, kteří se chtějí připojit k síťové službě, musí zahájit předem stanovenou sekvenci připojení portů nebo poslat jedinečný řetězec bajtů, než se vzdálený klient může připojit k případné službě. V nejzákladnější podobě se klientský software vzdáleného uživatele musí nejprve připojit k jednomu nebo více portům, než se připojí k cílovému cílovému portu.

Předpokládejme například, že se vzdálený klient chce připojit k serveru SSH. Správce předem nakonfiguruje požadavky na klepání na porty a vyžaduje, aby se připojení vzdálených klientů nejprve připojilo k portům 3400, 4000 a 9887 před připojením k cílovému cílovému portu, 22. Správce řekne všem legitimním klientům správnou „kombinaci“ pro připojení ; škodlivým hackerům, kteří se chtějí připojit ke službě SSH, bude bez kombinace odepřen přístup. Klepání na porty znemožní i nadšence skenování portů a chytání bannerů.

Protože lze použít libovolnou kombinaci portů a transportních protokolů, je počet možných sekvencí, které by útočník musel uhodnout, vysoký. I když hacker věděl, že se jedná pouze o tři klepání portů, jako je tomu ve velmi jednoduchém příkladu výše, s možností výběru 64 000 možných portů TCP, UDP a ICMP (Internet Control Message Protocol), výsledná sada možných kombinací pro hacker zkuste narazit na miliony. Skenery portů budou frustrovány, protože klepání portů používá k poslechu uzavřené porty (více o tom níže).

Největší výhodou všech je to, že klepání portů je nezávislé na platformě, službách a aplikacích: Každý OS se správným klientským a serverovým softwarem může využít jeho ochrany. Ačkoli klepání portů je hlavně implementace Linux / Unix, existují nástroje Windows, které dokážou totéž. A podobně jako IPSec a další ochranné mechanismy, žádná ze zúčastněných služeb nebo aplikací nemusí být vědoma portů.

Serverový software s klepáním na porty funguje tak, že sleduje protokol brány firewall a hledá připojení k uzavřeným portům, nebo sleduje zásobník IP. První metoda vyžaduje, aby byly všechny pokusy o odepření připojení rychle zapsány do protokolu brány firewall a služba klepání na porty (démon) sleduje a koreluje legitimní kombinace klepání na porty. U ověřených kombinací klepání služba serveru klepání na porty poté řekne firewallu, aby otevřel konečný požadovaný port pouze pro legitimního klienta klepajícího na porty - obvykle sledovaného podle adresy IP.

Pokročilejší implementace klepání portů fungují na zásobníku IP a buď naslouchají a zaznamenávají připojení k uzavřeným portům, nebo používají propracovanější mechanismus. Některé implementace hledají konkrétní sérii bajtů v rámci prvního pokusu o připojení. Tyto bajty lze dokonce „skrýt“ v rámci jednoduchého příkazu ping požadavku na odezvu ICMP. Ještě silnější metody vyjednávání s klepáním na porty zahrnují šifrování nebo asymetrické ověřování.

Klepání portů může také sloužit jako další vrstva zabezpečení k ochraně vysoce rizikových služeb vzdálené správy, jako jsou SSH a RDP (Remote Desktop Protocol). Bohužel, klepání portů používá více než několik trojských koní rootkitů, protože jejich tvůrci hackerů se pokoušejí udržet kontrolu nad svými škodlivými výtvory.

Kritici často poukazují na skutečnost, že odposlouchávání hackerů by mohlo být schopno zachytit a přehrát úspěšnou sekvenci nebo řadu bajtů klepajících na porty. I když to může být pravda se základními implementacemi, útoky, jako jsou tyto, by byly zmáčknuty pomocí sofistikovanějších metod ověřování nebo minimalizovány pomocí sekundárních pevně povolených povolených adres IP, jako jsou obálky TCP.

Pokud se hackerovi podaří shromáždit vaši kombinaci, nejhorším scénářem je, že vetřelec obejde ochranu před klepáním na port a nyní musí čelit vašim běžným bezpečnostním opatřením služby - výzva k přihlášení hesla atd. Pokud vím, použití klepání portů může jen posílit jakoukoli strategii hloubkové obrany a nedělá nic, co by jí ublížilo.

Přál bych si, aby měl Windows ve výchozím nastavení zabudované mechanismy klepání portů. Byl by to příjemný doplněk implementací IPSec a Kerberos testovaných na trhu společností Microsoft. Svět Linux / Unix má na výběr nepřeberné množství implementací klepajících na porty, z nichž žádná nevyžaduje neuvěřitelné odborné znalosti pro konfiguraci nebo použití.

Další informace o klepání portů najdete na www.portknocking.org nebo en.wikipedia.org/wiki/Port_knocking. Podrobnosti o konfiguraci z jednoho příkladu implementace najdete na gentoo-wiki.com/HOWTO_Port_Knocking.

Vynikající sbírku softwaru a utilit pro klepání na porty najdete na www.portknocking.org/view/implementations a další server a klienta pro klepání na porty Windows najdete na www.security.org.sg/code/portknock1 .html.