Vyšlo v příloze týdeníku Computerworld, v srpnu/září 2003
Vytištěno z adresy: http://www.earchiv.cz/b03/b0800001.php3

Jak fungují firewally?

Když se dnes řekne firewall, většina lidí si představí něco extrémně sofistikovaného, s čím mají co do činění pouze lidé odborně velmi erudovaní, a to na obou stranách barikády - jak mezi těmi, kteří se snaží někam neoprávněně proniknout, tak i na straně těch, kteří se jim v tom snaží zabránit. Pravda, pokud to se zabezpečením svých sítí a informačních systémů myslíte vážně, a to byste určitě měli, pak je dobré jít za odborníky (na "ochranné" straně barikády). Pokud vám ale jde jen o pochopení toho, co firewally vlastně jsou a na jakých základních principech fungují, pak vězte že to zase není nic až tak složitého.

Úplně nejzákladnější princip, ze kterého vychází snad všechny dnešní firewally, je znám už ze středověku, z doby kdy si lidé stavěli různé hrady a pevnosti. Již tehdy nechtěli, aby jim tam lezl úplně kdokoli, a tak přijali některá základní bezpečnostní opatření: obehnali svůj hrad vodním příkopem, tak aby se do něj nikdo nemohl dostat jinudy, než hlavní bránou. Do ní pak umístili hlídače, kterého žádný příchozí nemohl obejít. Tento hlídač jej zkontroloval a rozhodl, zda může do hradu vstoupit či nikoli.

Dnešní firewally fungují obdobně: také mají část (analogickou vodnímu příkopu), která brání různému "obcházení" a směruje veškerý provoz do místa, kde tento může být kontrolován (do hlavní brány hradu). Zde pak je druhá hlavní část, která má naopak "povolovací" charakter - rozhoduje o tom, jaký druh provozu bude akceptován a propuštěn do chráněné sítě, a jaký provoz naopak bude odmítnut. Tato druhá část je tedy analogií hlídače stojícího u brány.

V čem se dnešní firewally asi nejvíce liší mezi sebou navzájem, je logika, podle které funguje "povolovací část". V analogii se středověkým hradem jde o to, jak uvažuje, co zkoumá a podle čeho se rozhoduje hlídač, stojící v bráně a kontrolující každého příchozího. Zkusme si rozebrat základní možnosti.

Rozhodování na síťové a transportní vrstvě

Nejjednodušší, ale dnes již nejméně spolehlivou, je strategie hlídače v bráně, který se každého vyptá odkud přichází a kam jde - a podle odpovědi se rozhoduje. V prostředí počítačových sítí jde o rozhodování na úrovni síťové vrstvy (v ISO/OSI modelu třetí odspodu), neboli podle tzv. síťových adres. Při této strategii firewall zkoumá ze které sítě a od kterého uzlu přichází každý jednotlivý paket, a do které sítě a ke kterému uzlu směřuje. Celkem jednoduše pak může blokovat přístup od konkrétních uzlů či z celých sítí, nebo naopak přístup ke konkrétním uzlům v chráněné oblasti, či celým chráněným sítím.

Problém této strategie je ale v tom, že je poměrně snadné falšovat údaje o původu paketu (o síti a uzlu, ze kterého přichází). Stejně tak tato metoda nemusí postačovat pro rozpoznání některých potenciálních útoků. Ani hlídač v bráně nemusí rozpoznat, pouze ze znalosti poutníkovy cesty, zda dotyčný přichází s dobrými či zlými úmysly.

Větší možnosti skýtá strategie, při které se hlídač na bráně zajímá o to, co je poutník zač: zda je například obchodníkem, potulným umělcem, vojákem apod. V dnešním reálném světě jde o hlubší zkoumání paketů, až do úrovně transportní vrstvy (bezprostředně nad vrstvou síťovou), kde se pracuje s tzv. porty. Z nich pak lze usuzovat na to, jakého typu je příslušný datový provoz - zda jde například o elektronickou poštu, o komunikaci mezi browserem a WWW serverem, o přenos souborů protokolem FTP apod. Možnosti detekce eventuelních útoků jsou větší, ale stále nemusí postačovat pro rozpoznání sofistikovanějších útoků.

Stavová inspekce (statefull inspection)

Pro správné pochopení dalších možných strategií již opustíme analogii se středověkým hradem, a místo ní použijeme analogii jinou, podstatně modernější - analogii se vstupními dveřmi do bytu.

Představte si, že vám někdo zaklepe na dveře. Jak to budete hodnotit? Asi z toho nebudete vyděšeni - musí jít o někoho slušného, když zdvořile klepe na dveře. Ale co když vám někdo začne vaše dveře soustavně oklepávat, několikrát za minutu a na různých místech? Pak asi právem pojmete podezření, že někdo zkoumá konstrukci vašich dveří, a nejspíše má za lubem nějakou nekalost. Příznakem podezřelosti zde není ani tak jednotlivý "úkon", jako spíše jejich souběh.

Vrátíme-li se zpátky k firewallům, jde o to že některé druhy útoků nelze odhalit pouhým detailním posouzením každého jednotlivého "případu" (datového paketu, požadavku atd.), stylem "na zelené louce" - tedy izolovaně, bez jakékoli souvislosti s ostatními posuzovanými "případy". Mnohé útoky lze dnes rozpoznat až tehdy, když si firewally začínají všímat také vzájemných souvislostí a vztahů, a dokáží si dát "dvě a dvě dohromady". Například když si dokáží uvědomit, že najednou přichází výrazně vyšší množství individuálních požadavků než je obvyklé, což vyvolává náhlé zahlcení toho, kdo má tyto požadavky vyřizovat. Důsledkem může být až úplná nedostupnost konkrétní služby. To je princip dnes tolik oblíbených útoků typu DoS (Denial of Service), které navíc mohou být i různě distribuované (když požadavky způsobující zahlcení přichází z různých zdrojů, jednajících ve vzájemné součinnosti).

Jistý problém je ale v tom, že dnešní přenosové mechanismy, zejména pak oblíbený protokol IP na síťové vrstvě, pracují bezestavově - neboli tak, že každý individuální požadavek vyřizují samostatně, aniž by "stav" získaný zpracováním jednoho "případu" (IP paketu) dokázaly uchovat a využít při zpracování následujícího "případu" (IP paketu). Kvůli tomu si pak také nedokáží "uvědomit" případné souvislosti.

Firewally, které mají odhalit "soustředěné" útoky typu DoS, musí fungovat jinak. Tzv. stavově, neboli tak že výsledek posouzení jednoho "případu" si pamatují (ve formě "stavu") a berou jej v úvahu při posuzování následujícího případu. V angličtině se tomu říká "statefull inspection" (doslova: stavová inspekce, stavová prohlídka). Jde o řešení, se kterým poprvé přišla firma CheckPoint, a nechala si jej dokonce patentovat (jako U.S. Patent # 5,606,668).

Aplikační inteligence

Ani stavová inspekce, ani rozhodování na úrovni síťové či transportní vrstvy, nemusí odhalit úplně všechna potenciální ohrožení. Důvodem je skutečnost, že "skutečné úmysly" mohou být často patrné až s podrobnou znalostí konkrétní aplikace, což ale není možné zajistit nikde jinde než na aplikační vrstvě (nejvyšší v celé síťové hierarchii).

Pomožme si opět analogií: když u vašich dveří zazvoní někdo, kdo se vydává za poštovního doručovatele, či pracovníka elektrorozvodných závodů, plynárny, vodárny apod., a dožaduje se vstupu do vašeho bytu, podle čeho byste se měli rozhodovat zda jej pustíte dovnitř? Asi ne podle toho zda k vám do pátého patra vyšel pěšky nebo vyjel výtahem (což by mohla být analogie rozhodování na úrovni síťové vrstvy), nebo pouze podle toho, zda je "od pošty", "od plynu", "od vody" či "od elektřiny" (což je analogie rozhodování na transportní vrstvě, podle druhu služby). Rozhodovat byste se měli podle toho, jak příslušné služby fungují a jaká mají pravidla - např. zda lidé "od plynu" vůbec chodí na kontroly plynových spotřebičů až do bytu, pokud ano jak často, zda se musí prokázat nějakou průkazkou od svého zaměstnavatele, zda je musíte či nemusíte pustit do bytu atd. Teprve se znalostí takovýchto pravidel a dalších souvislostí pak můžete učinit dostatečně fundované rozhodnutí.

Podobně je tomu i s firewally - také ty se mohou nejodpovědněji (nejspolehlivěji) rozhodnout, pokud "vidí" až na aplikační vrstvu a detailně rozumí tomu, co se zde odehrává, podle jakých pravidel atd. Bez této schopnosti jsou firewally bezbranné vůči celé řadě "moderních" a čím dál tím častějších útoků, jakými jsou například útoky červů (např. Slammer, Code Red či Nimda), útoky pomocí skriptů (cross-site scripting), vůči emailovému bombardování (mail bombing) atd.

Schopnost dívat se až na úroveň aplikační vrstvy je samozřejmě nesmírně náročná na inteligenci firewallu, i na jeho výpočetní kapacitu a správu. U mnoha dnešních firewallů se s rozhodováním na aplikační vrstvě lze setkat, ale vesměs jen v omezené míře a v provedení tzv. aplikačních proxy bran. Ty bývají úzce specializované (jen na některou konkrétní službu, například na WWW či na elektronickou poštu), a míra jejich "nahlížení" do dění na aplikační vrstvě bývá omezena jen na některé dílčí aspekty.

Velmi propracované mechanismy rozhodování na úrovni aplikační vrstvy, se současným záběrem na všechny nejpoužívanější aplikační protokoly, nedávno představila firma CheckPoint. Jde o schopnost s příznačným názvem "Application inteligence", kterou vybavila svůj vlajkový produkt FireWall-1, nyní s přídomkem "Next Generation". Nová "Application Intelligence" dává firewallu schopnost provádět řadu kontrol na úrovni aplikační vrstvy, včetně kontroly důsledného dodržování aplikačních standardů. Mnohé útoky totiž lze detekovat právě podle toho, že standardy nedodržují, případně podle různých anomálií a odchylek. Stejně tak je "Application Intelligence" schopna detekovat a eliminovat eventuelní "nebezpečný kód", vkládaný do aplikačních dat, či bránit nebezpečným aktivitám, které by aplikace mohly chtít provádět.

Proti útoku je nejlepší chytrá obrana

Dnešní firewally jsou dosti složitá zařízení, která nestačí jednorázově nainstalovat a nechat běžet. Jsou to čím dál tím více úplné "živoucí organismy", které je nutné udržovat v patřičné kondici - mají-li úspěšně bojovat proti různým ohrožením, která se také průběžně zdokonalují. Na významu proto čím dál tím více získávají otázky managementu samotných firewallů i všech dalších součástí bezpečnostních řešení. Příslušný nástroj by měl umožňovat rychlou, snadnou a efektivní správu celého bezpečnostního řešení z jednoho místa, měl by poskytovat dostatek relevantních informací o aktuální situaci, a měl by také umožňovat rychlou a efektivní reakci na eventuelní události a změny v chráněném systému i v jeho okolí. Součástí by měla být i podpora výrobce, zahrnující aktualizace programových prostředků reagujících na zcela nové formy ohrožení.

K čemu jsou sítě VPN?

Vraťme se ještě jednou k analogii se středověkým hradem a představme si někoho, kdo už úspěšně prošel přes hlídače na vstupní bráně. Jakmile se již nachází uvnitř, může přímo a bez dalších kontrol komunikovat se všemi ostatními, kteří již jsou také uvnitř hradu, využívat všechny zdejší zdroje atd.

Je ale "fyzická přítomnost" uvnitř hradu opravdu tak nutná a relevantní? Co kdyby z hradu vedla tajná podzemní chodba někam jinam, do nějaké jiné lokality vhodně oddělené od okolního světa? Nedala by se pak "chráněná zóna" tvořená vnitřkem hradu protáhnout až do oné vzdálené lokality? Samozřejmě za podmínky že do tajné chodby se nikdo zvenčí nedostane?

Co takhle představa několika hradů, jejichž hlídači rozhodují podle stejných pravidel a kritérií? Pokud by byly tyto hrady propojeny dostatečně bezpečnými chodbami, které nepustí dovnitř nikoho nepovolaného, mohl by celek tvořit jednu soustavu, sice distribuovanou do více lokalit ale homogenní co do svého zabezpečení před vnějším světem. Uvnitř takovéto soustavy pak bude možné komunikovat již bez dalších omezení a kontrol, odděleně od vnějšího světa.

Přesně toto je princip tzv. virtuálních privátních sítí (sítí VPN). Mohou například propojovat pobočky firmy a vytvářet věrnou iluzi skutečně privátní sítě (tajných podzemních chodeb, do kterých se nikdo zvenčí nedostane). Řešeny mohou být na úrovni síťové vrstvy (typicky na úrovni protokolu IP), a přenášet jakýkoli druh provozu nad protokolem IP. Nebo mohou fungovat na aplikační úrovni a být uzpůsobeny jen jednomu druhu provozu - například jen vzdálenému přístupu k aplikacím, provozovaným na centrálním firemním serveru. Různorodá může být i jejich topologie a možnost komunikace v rámci VPN - například jen stylem "do hvězdy", kde každý vzdálený prvek komunikuje pouze s centrem. Různorodé může být i celkové určení - například pro zajištění bezpečného vzdáleného přístupu oprávněných uživatelů k centrálním aplikacím stačí zmiňovaná komunikace "do hvězdy". Naproti tomu pro přímé propojení poboček, nikoli pouze přes centrum, by komunikace "jen do hvězdy" již nestačila, a musí být nahrazena komunikací ve stylu "každý s každým".

Lišit se může i "zakončení" sítí VPN na jednotlivých vzdálených bodech. Typické řešení je takové, že zde musí být provozován vhodný VPN klient, zajišťující vše potřebné (zejména místního hlídače, v analogii se středověkým hradem). Dnes však již existují i řešení bez samostatných VPN klientů (tzv. clientless VPN), díky tomu že jejich roli přebírají se svými schopnostmi standardní aplikace.