Copyright © 1997 RNDr. Libor Dostalek
 
 

Filtrace

Filtrací rozumíme kontrolu procházejících paketů na základě obsahu jejich záhlaví a následné rozhodnutí, zda-li může být paket poslán dále nebo ne. Filtraci lze přirovnat k cenzuře prováděné v některých případech s poštovními zásilkami. Filtrace se může provádět na různých úrovních: Filtrace linkového protokolu v podstatě nepatří do problematiky Internetu, přesto bych chtěl uvést několik poznámek. Mnohé firmy dnes totiž budují nákladné firewally a často zapomínají, že zdaleka největší procento úspěšných ataků není od nějakých tajuplných uživatelů Internetu, ale od vlastních zaměstnanců. A právě v případě LAN je velice snadné se podívat na obsah přenášených rámců a přečíst si jaká mají kolegové hesla (používají-li telnet, ftp, rlogin atp.).

V případě, že se ve firmě používají právě programy telnet, ftp nebo snad rlogin a všichni uživatelé sedí na Ethernetu vzájemně neodděleni ani bridgem, mnozí tvrdí, že snad ani nemá cenu používat hesla.

Právě filtrace na linkové vrstvě může jednotlivé uživatele od sebe oddělit tak, že si vzájemně nevidí do svých rámců. Řešením je právě použití přepínaného Ethernetu, tj. každý uživatel má vlastní segment, který je oddělen bridgem od ostatních.

V případě větších sítí, které používají páteř z FDDI (Ethernet ani FastEthernet není pro páteř příliš vhodný), je důležité dbát na to, aby na páteři byly jen servery nikoliv uživatelské stanice (např. PC). Operační systémy serverů mohou pomocí přístupových práv omezovat "odposlouchávání provozu sítě" běžným uživatelem.

 Filtrace na linkové vrstvě se provádí na aktivních prvcích LAN nazývaných switch. Switch předává rámce z interfejsu na interfejs podle údajů ve své tabulce. Vhodným naplněním těchto tabulek je možné i nastavit, aby někteří rizikoví uživatelé neměli na určité segmenty přístup.


Filtrace aplikačních protokolů se provádí na proxy, které bude věnována samostatná kapitola. 

Když se v Internetu řekne slovo filtrace, pak se rozumí filtrace na úrovni protokolů IP, TCP a UDP.

 Filtrace je metoda ochrany sítě připojené k Internetu proti útokům cizích uživatelů. Filtrace se provádí na routeru. Software realizující filtr bývá součástí systému dodávaného s routerem.

 Filtrace se realizuje filtrem, který se vkládá mezi síť, kterou chceme chránit, a Internet. Filtr je zpravidla jednou z funkcí přístupového routeru. Mate-li zakoupen rozumný přístupový router (např. CISCO), pak vás filtrace nebude stát žádné další investice. Stačí ji pouze nastavit. Pro úplnost je třeba dodat, že v praxi se můžete setkat i s filtry realizovanými na počítačích s více síťovými interfejsy a operačním systémem typu UNIX.

 Cílem filtrace je vytvořit polopropustný filtr, který umožňuje vlastním zaměstnancům přístup do Internetu, ale zamezuje přístup cizím uživatelům do naší sítě. Proto se často takovýto filtr přirovnává k diodě (pro elektrikáře) nebo k semipermeabilní membráně (pro biology).

 Ochranu filtrem samotným nebo v kombinaci s proxy používá v Internetu 80 až 90% firem, které nějakou ochranu provádí. Komplexnější ochrana firewallem je používána asi u 10% firem. Součástí firewallu je mj. i filtrace a proxy.

V případě, že vaše firma si zvolí ochranu filtrací, případně ochranu filtrací doplněnou o proxy, pak je ve většině případů dobré použít přístupový router s dvěma interfejsy pro LAN a alespoň jedním interfejsem pro sériovou linku.Výhody takovéhoto řešení využijete i v případě, když přejdete k firewallu. V dalších kapitolách uvedeme ilustrační příklady.

 Na obrázku šipky nevyjadřují přenos dat, ale pouze směr přístupu. Přenos dat je vždy obousměrný. Klient posílá do Internetu datové pakety s požadavky a zpět z Internetu chce získávat data.

Ochrana sítě pouze filtrem je nedostatečná zejména ve dvou případech:

Pro tyto případy sítí se vždy zvažuje použití filtrace v kombinaci s proxy nebo raději přímo firewallu. Sítě s extrémně důležitými daty se k Internetu nepřipojují vůbec, protože jediné zcela bezpečné připojení k Internetu je žádné připojení. To však není případ komerčních organizací, ale máme na mysli např. řízení strategických zbraní.

Princip filtru

Router je zařízení, které předává IP-datagramy z jednoho síťového interfejsu do jiného svého síťového interfejsu. Správně vychovaný router všechny předávané pakety, předává aniž by se podíval dovnitř do paketu na jeho obsah.

 Princip filtru spočívá v tom, že na rozdíl od správně vychovaného routeru se podívá dovnitř do IP-datagramu na jeho IP-záhlaví a případně i do záhlaví TCP (resp. UDP) paketu a rozhodne se, zda takový paket do příslušného interfejsu předá nebo zda jej zahodí.

Filtr se rozhoduje na základě obsahu záhlaví IP-datagramu a záhlaví TCP/UDP-paketu. Jistou zvláštností je filtrace protokolu ICMP, o které se také zmíním.

Filtrace na úrovni IP-datagramu

Každý IP-datagram obsahuje IP-záhlaví. Z hlediska filtrace je v IP-záhlaví využitelná IP-adresa odesilatele a IP-adresa příjemce.

Poznámka: IP-záhlaví může volitelně obsahovat položky source routing. Pomocí těchto položek může odesilatel předepsat IP-adresy routerů, přes které má být IP-datagram Internetem dopravován. Je tedy možné tuto položku použít k odklánění IP-datagramů z jejich standardní cesty. Mnohdy jsou IP-datagramy s položkou source routing považovány za podezřelé a mnohé routery umí takovéto pakety také odfiltrovávat. Jedná se spíše však o okrajovou záležitost.

 Co lze od filtrace na úrovni IP-protokolu očekávat?
Filtrem lze omezit komunikaci tak, aby spolu mohly přes router komunikovat jen počítače o zadaných IP-adresách. Kromě jednotlivých IP-adres je ve filtrech možné zadávat i adresy sítí, subsítí či supersítí.

Pro další úvahy si vybudujeme hypotetickou podnikovou síť Intranet a připojíme jí pomocí routeru k Internetu. Náš hypotetický podnik má přiděleny IP-adresy 128.1.2.0/24, tj. IP-adresy 128.1.2.0 až 128.1.2.255 neboli síť 128.1.2.0 s maskou 255.255.255.0

Náš podnik chce komunikovat skrze Internet se svým partnerem, který má přiděleny IP-adresy 128.1.1.0/24.

Nejprve se podíváme na případ, kdy pomocí filtru omezíme komunikaci pouze mezi naši síť a síť našeho partnera. Na routeru budeme tedy aktivovat filtr:
 
 
Pravidlo Adresa odesilatele Adresa Příjemce Povolit/Zakázat
A1 128.1.1.0/24 128.1.2.0/24 Povolit
A2 128.1.2.0/24 128.1.1.0/24 Povolit
default 0.0.0.0/0 (vše) 0.0.0.0/0 (vše) Zakázat

Při tvorbě filtru jsou teoreticky možné dvě varianty. Buď se vše implicitně povolí a dopisují se pravidla specifikující, které počítače kam nesmí. Nebo naopak se implicitně vše zakáže a pouze vybraným se něco povoluje. Z bezpečnostních důvodů se většinou dává přednost druhé variantě (považuje se obecně za bezpečnější). Proto i filtr v našem případě obsahuje pravidla default1 a default2, které implicitně vše zakazují.

 Bezpečnostní riziko při propojení dvou sítí přes Internet s filtrací na úrovni IP-adres spočívá v tom, že někdo v Internetu, kdo se nachází mezi oběmi sítěmi se nelegálně může prohlásit za IP-adresu, která patří protější síti. Tak může předstírat, že je naším protějškem a filtr to nemůže zjistit (tzv. man in the middle attack).

Proto v případě, že jsou dvě sítě propojeny pomocí Internetu, takovým způsobem, aby tvořili z hlediska přístupu jeden celek, zabezpečuje se toto spojení ještě dalšími prostředky. Příkladem řešení je tunel mezi těmito dvěma sítěmi. Oba konce tunelu (tzv. portály) si navzájem pomocí kryptografických metod prokazují svou totožnost a přenášená data dále např. šifrují nebo dokonce elektronicky podepisují. Routery některých výrobců ve svém operačním systému již obsahují některé tyto prostředky. Šifrování dat je ochrana např. i proti správci routeru, přes který náš provoz jde a který si může nechat jednotlivé přenášené datagramy např. uložit do souboru.


Na chvilku zapomeňme na spojení s našim partnerem a napišme si filtr umožňující konkrétní IP-adrese 128.1.2.1 neomezený přístup do Internetu. Jedná se tedy o další častý požadavek kladený na správce routeru.
 
 
Pravidlor Adresa odesilatele Adresa Příjemce Povolit/Zakázat
B1 128.1.2.1 0.0.0.0/0 (vše) Povolit
B2 0.0.0.0/0 (vše) 128.1.2.1 Povolit
default 0.0.0.0/0 (vše) 0.0.0.0/0 (vše) Zakázat

Dalším atakem je address-spoofing attack. Při tomto ataku útočník odesílá IP-datagramy s adresou odesilatele patřící do intervalu vnitřní sítě. Následující obrázek znázorňuje, jak se dostat skrze filtr z předchozí tabulky na počítač o IP-adrese 128.1.2.2 tím, že útočník použije jako svou IP-adresu adresu 128.1.2.1

 IP-adresu útočníci volí tak, aby našli skulinku ve vašem filtru. Routery (nefiltrující) se nezabývají adresou odesilatele, takže IP-datagram s chybnou adresou odesilatele snadno putuje Internetem. Řeknete si, že to přece nemá smysl odesílat IP-datagramy s nesmyslnou adresou odesilatele. Namítnete, že útočník nemůže dostat odpověď, když uvedl špatnou IP-adresu. To mu nevadí, je vcelku snadné si odpověď nechat poslat mailem na jiný počítač (program sendmail přijme a dále pošle většinou vše co dostane).

 Další co vás asi napadne je, no dobře, takhle lze poslat UDP-datagramy. Např. podvrhnout v DNS přiřazení jména počítače na jinou IP-adresu či změnit čas pomocí protokolu NTP - prostě jen to, co se dá udělat pomocí protokolu UDP. Ale TCP přece vyžaduje odpověď už při navazování spojení. Jenže když útočník ví co má odpovídat, tak může odpovídat na slepo aniž by byl vyzván. Útočník má pouze strach z toho, že mu atakovaný počítač odpovídá a odpovědi se někde ztrácí - např. na routeru. Router pak atakovanému počítači pošle ICMP protokolem zprávu o tom, že zahodil IP-datagram. Dostane-li atakovaný počítač tuto zprávu dříve než odezvu od útočníka, pak spojení uzavírá a útočník má smůlu.

 Router neví na kterém síťovém interfejsu má Intranet a na kterém Internet. Z hlediska filtrace je užitečné označit, který interfejs přísluší vnitřní sítí a který Internetu. O IP-datagramech předávaných z Internetu do vnitřní sítě říkáme, že jsou směrem dovnitř. O datagramech směřujících z vnitřní sítě do Internetu říkáme, že jdou ven. Ve filtrech pak specifikujeme navíc i směr předávání IP-dataramů (dovnitř nebo ven).

 Ví-li router, který interfejs má směrem do vnitřní sítě a který směrem ven, pak může i zjišťovat nepřišel-li mu z Internetu (na vnějiší interfejs) IP-datagram s adresou odesilatele z vnitřní sítě. To signalizuje zpravidla jeden ze dvou případů:

Můžeme se nyní vrátit k naší hypotetické firmě. Spojení obou filtrů umožní všem uživatelům obou sítí mezi sebou bez omezení komunikovat a navíc uživatel s IP-adresou 128.1.2.1 má neomezený přístup do Internetu.
 
 
Pravidlo Směr Adresa odesilatele Adresa Příjemce Povolit/Zakázat
A1 dovnitř 128.1.1.0/24 128.1.2.0/24 Povolit
A2 ven 128.1.2.0/24 128.1.1.0/24 Povolit
B1 ven  128.1.2.1 0.0.0.0/0 (vše) Povolit
B2 dovnitř  0.0.0.0/0 (vše) 128.1.2.1 Povolit
default1 dovnitř 0.0.0.0/0 (vše) 0.0.0.0/0 (vše) Zakázat
default2 ven 0.0.0.0/0 (vše) 0.0.0.0/0 (vše) Zakázat

Ve filtrech uvádějte zásadně IP-adresy, nikoliv jména počítačů. Vyhýbejte se uvádění jmen počítačů, protože překlad jména počítače na IP-adresu pomocí DNS není nějak zabezpečen a lze jej snadno podvrhnout (viz address-spoofing attack).

 Označení interfejsů na vnitřní a vnější je účelné jen u routerů, které mají jen dva síťové interfejsy. S takovýmto řešením se setkáváme zejména u routerů realizovaných počítačem s operačním systémem UNIX, kde jako filtr pracuje např. program screend. (Autoři tohoto programu nepoužívají termín filtr, ale termín screening.)

 V případě routerů s více interfejsy se vytvářejí filtry pro každý interfejs zvlášť. Dodavatelé samostatných routerů (např. CISCO) vytváří společný operační systém pro celou řadu svých boxů (jednodušší mají méně interfejsů a složitější více), proto takový systém předpokládá více síťových interfejsů, při konfiguraci takovýchto routerů pak vytváříme filtry pro jednotlivé interfejsy. Pro každý interfejs může být navíc definován vstupní filtr (směr z interfejsu do routeru) a výstupní filtr (z routeru do interfejsu).

 Dříve některé routery měly pro jednotlivé interfejsy jen výstupní nebo vstupní filtry.Pro routery umožňující jen výstupní (resp. jen vstupní) filtry bylo nutné vytvářet poměrně komplikované, dlouhé filtry. Pro některé situace nebylo možné filtr vytvořit vůbec.

 Dnes zpravidla routery podporují pro každý interfejs jak výstupní, tak i vstupní filtr. Toto řešení přináší dvě výhody:

  1. Jednotlivé filtry lze psát relativně krátké. Osahuje-li filtr dlouhou řadu pravidel, pak se tato pravidla musí při zpracování každého IP-datagramu procházet. Větší množství pravidel pak pochopitelně způsobí delší zdržení datagramu na routeru. Přitom extrémně dlouhé filtry mohou vyčerpávat zdroje (procesor a paměť) routeru tak, že způsobí zpoždění i na interfejsech, které nejsou filtrované.
  2. I samotný router používá IP-adresy pro sebe a své interfejsy. Na tyto adresy se správce přihlašuje pomocí protokolu TELNET, aby prováděl správu a konfiguraci routeru. Pomocí vstupního filtru na přístupovém interfejsu z Internetu je možné odříznout přístup na tyto adresy, a tak odříznout ataky proti routeru a jeho konfiguraci.
Pro každý interfejs se pak vytváří až dva filtry, pro náš výklad se však vrátíme k představě routeru se dvěma interfejsy. Pochopíte-li princip filtru na takovémto routeru, pak si snadno napíšete filtr i pro komplikovanější routery.

Filtrace na úrovni TCP-UDP paketu.