Stavový firewall

Z Wikipedie, otevřené encyklopedie
Firewally pracující na různých vrstvách OSI modelu

Stavový firewall (též stavový paketový filtr, anglicky stateful firewall) je v informatice označení pro takový firewall, který podporuje SPI (anglicky Stateful packet inspection), což znamená, že je schopen sledovat a udržovat všechny navázané TCP/UDP relace (pracuje na transportní vrstvě referenčního modelu ISO/OSI). Stavový firewall je schopen rozlišovat různé stavy paketů v rámci jednotlivých relací (spojení) a jeho úkolem je propustit pouze takové, které patří do již povolené relace (jiné jsou zamítnuty).

Historie[editovat | editovat zdroj]

Pravděpodobně největší zásluha za vytvoření stavového firewallu je přisuzována Nir Zukovi a jeho týmu Check Point v polovině 90. let 20. století.[1][2]

Předchůdce stavového firewallu – nestavový firewall pracuje vždy s každým paketem (datagramem) samostatně. U takového firewallu neexistuje žádný způsob, jak zjistit, zda je daný paket součástí již existujícího spojení, pokouší se navázat nové připojení nebo se jedná o podvodný paket. Moderní firewally jsou tzv. state-aware a nabízejí správcům sítí přesnější kontrolu síťového provozu.

Příklad[editovat | editovat zdroj]

Klasický příklad, kdy může provoz sítě selhat s nestavovým firewallem, je FTP (File Transfer Protocol). Tento protokol dle návrhu může pracovat ve dvou režimech. V aktivním režimu klient odešle (na port 21) serveru číslo portu (větší než 1024) a server se na něj ze svého portu (20) připojí. V pasivním režimu to funguje přesně opačně – server pošle klientovi port (větší než 1024) a on se na něj připojí (z portu většího než 1024). Preferovanější režim je zpravidla pasivní, díky vyšší bezpečnosti. Problém spočívá v tom, že pracovní port se mění s každým připojením, takže není možné napsat bezpečné a jednoznačné statické filtrovací pravidlo, které by dokázalo FTP spojení rozpoznat. Stavové firewally tento problém řeší tím, že si udržují tabulku navázaných spojení a inteligentně asociují nové požadavky na připojení s existujícími v tabulce. Například v Linuxu modul ip_conntrack_ftp dokáže z navazovaného spojení „odposlechnout“ kombinaci portů. Dále pak zajistí, že stavový firewall tyto pakety označí RELATED – tedy povolené.

Popis[editovat | editovat zdroj]

Stavový firewall poskytuje vyšší efektivitu kontroly jednotlivých paketů, protože pro existující spojení kontroluje jen stavovou tabulku, místo toho, aby kontroloval u každého paketu sadu nadefinovaných složitých pravidel. Stavový firewall nijak nesouvisí s hloubkovou kontrolou paketů. Je schopný udržovat důležité parametry všech spojení v paměti od začátku až do konce. Tyto parametry mohou být:

  • src/dst ip adresy, porty
  • protokol, flagy, sekvence, potvrzovací znaky (ack. numbers)
  • kód a typ ICMP

Nejnáročnější kontrola se provádí v době nastavení spojení. Poté jsou všechny pakety (pro danou relaci) zpracovávány rychleji, protože je snadné určit, zda patří do stávající relace nebo ne. Po ukončení spojení se z tabulky daná relace vymaže. Datagram (paket, segment) může být zařazen do některých z následujících kategorií:

  • NEW – tento datagram otevírá novou komunikaci
  • ESTABLISHED, RELATED – datagram patří do již navázaného spojení.
  • INVALID – datagram nepatří do žádného spojení nebo je neidentifikovatelný.

TCP komunikace[editovat | editovat zdroj]

Je-li použit jako komunikační protokol TCP, využívá se trojcestný hand-shake. Klient zahájí nové připojení odesláním příznaku SYN=1 v hlavičce paketu. Každý paket, který má nastavený SYN=1 je považován firewallem jako zahajovací paket nového spojení. Pokud je služba požadována klientem na serveru k dispozici, server odpoví odesláním paketu s nastaveným příznakem SYN=1 a ACK=1. Klient pak odpoví paketem, ve kterém je nastaven jen bit ACK=1 a spojení je tímto označeno za ESTABLISHED. Takovým firewallem projdou všechny odchozí pakety, ale příchozí pakety projdou jen takové, které jsou součástí ESTABLISHED spojení. Toto zabezpečení zabrání hackerům zahájit nežádoucí spojení. Aby se zabránilo neustálého zaplňování tabulky, je integrován systém, který po určité době, kdy spojení „mlčí“, toto spojení z tabulky smaže. Proto mnoho aplikací posílá po dobu „mlčení“ zprávy tzv. „keepalive“, aby se firewall nerozhodl spojení ukončit. Za zmínku stojí uvést, že nejčastějším útokem na internetu typu Denial of service je SYN-flood. Tedy útok, kdy útočník odesílá mnoho paketů s příznakem SYN cílovému počítači, ale dále již neodpovídá. To má za následek přeplnění stavové tabulky a mj. zpomalení serveru, ale třeba i zhroucení systému a počítač pak musí být lokálně restartován.


UDP komunikace[editovat | editovat zdroj]

Mnoho stavových firewallů je schopno sledovat stav i v nespojových protokolech, jako je UDP. Těmto relacím udělí firewall stav ESTABLISHED hned jak projde první paket. Stav relace ze stavové tabulky vymaže zpravidla po vypršení time-out.

Filtry aplikační úrovně[editovat | editovat zdroj]

Nicméně, filtrování samotných paketů není považováno za dostatečnou ochranu. Aby bylo možné účinně blokovat peer-to-peer sítě, je potřeba mít firewall, který umí filtrovat na aplikační úrovni. Tento systém je považován za nadstavbu stávajícího SPI (Stateful packet inspection). Prozkoumávání na aplikační úrovni je samozřejmě nesmírně náročné na inteligenci firewallu i na jeho výpočetní výkon. U mnoha firewallů se s rozhodováním na aplikační úrovni lze setkat jen v omezené míře a v provedení aplikačních bran (aplikační proxy). Aplikační firewally se od stavových liší v několika směrech. Například filtr na aplikační úrovni může rozeznat HTTP protokol používaný pro přístup na webovou stránku a HTTP protokol používaný pro sdílení souborů, zatímco firewall, skenující jen sled paketů by nakládal s oběma HTTP stejně.

Nevýhody[editovat | editovat zdroj]

Nekompatibilita[editovat | editovat zdroj]

Nejnovější operační systémy od Microsoftu Windows 7 a Windows Vista, používají TCP window scaling – neboli škálování TCP segmentu, což některým firewallům, které používají SPI (Stateful packet inspection), vadí. Pre-released (beta) verze Windows Vista údajně měla více problémů, včetně neúspěšného připojení na web přes firewall používající SPI.

Zranitelnost[editovat | editovat zdroj]

Existuje riziko, že zranitelnosti jednotlivých protokolů by mohly umožnit útočníkovi získat kontrolu nad firewallem. Nejen proto by se měl software firewallu pravidelně aktualizovat.

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Stateful firewall na anglické Wikipedii.

  1. Who Invented the Firewall? [online]. TechWeb, 2008-01-15. Dostupné online. 
  2. Check Point Software Technologies Ltd. Awarded Patent For Stateful Inspection Technology [online]. Check Point, 1997-03-17 url=http://www.checkpoint.com/press/1997/patent2.html. 

Související články[editovat | editovat zdroj]