Stavový firewall
Firewall
Firewall je síťové zařízení, které slouží k řízení a zabezpečování síťového provozu mezi sítěmi s různou úrovní důvěryhodnosti a zabezpečení. Zjednodušeně se dá říct, že slouží jako kontrolní bod, který definuje pravidla pro komunikaci mezi sítěmi, které od sebe odděluje. Tato pravidla historicky vždy zahrnovala identifikaci zdroje a cíle dat (zdrojovou a cílovou IP adresu) a zdrojový a cílový port, což je však pro dnešní firewally už poměrně nedostatečné – modernější firewally se opírají přinejmenším o informace o stavu spojení, znalost kontrolovaných protokolů a případně prvky IDS. Firewally se během svého vývoje řadily zhruba do následujících kategorií:
- Paketové filtry
- Aplikační brány
- Stavové paketové filtry
- Stavové paketové filtry s kontrolou známých protokolů a popř. kombinované s IDS
Paketové filtry
Nejjednodušší a nejstarší forma firewallování, která spočívá v tom, že pravidla přesně uvádějí, z jaké adresy a portu na jakou adresu a port může být doručen procházející paket, tj. kontrola se provádí na třetí a čtvrté vrstvě modelu síťové komunikace OSI.
Výhodou tohoto řešení je vysoká rychlost zpracování, proto se ještě i dnes používají na místech, kde není potřebná přesnost nebo důkladnější analýza procházejících dat, ale spíš jde o vysokorychlostní přenosy velkých množství dat.
Nevýhodou je nízká úroveň kontroly procházejících spojení, která zejména u složitějších protokolů (např. FTP, video/audio streaming, RPC apod.) nejen nedostačuje ke kontrole vlastního spojení, ale pro umožnění takového spojení vyžaduje otevřít i porty a směry spojení, které mohou být využity jinými protokoly, než bezpečnostní správce zamýšlel povolit.
Mezi typické představitele paketových filtrů patří např. tzv. ACL (Access Control Lists) ve starších verzích operačního systému IOS na routerech spol. Cisco Systems, popř. JunOSspol. Juniper Networks, starší varianty firewallu v linuxovém jádře (ipchains).
Stavový firewall
Stavový firewall (též stavový paketový filtr, anglicky stateful firewall) je 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. Stavový firewall pracuje na transportní vrstvě referenčního modelu ISO/OSI. 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).
Obdobou stavového firewallu je nestavový firewall, který se rozhoduje pouze na základě informací obsažených v konkrétním paketu (pracuje na nižší síťové vrstvě ISO/OSI modelu) a aplikační firewall, který pracuje naopak na vyšší síťové vrstvě.
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 modulip_conntrack_ftp
dokáže z navazovaného spojení „odposlechnout“ kombinaci portů. Dále pak zajistí, že stavový firewall tyto pakety označí RELATED – tedy povolené.