Firewall a NAT

Filtrování packetů

Než se zaměříme na Linuxové firewally musíme ještě rozebrat koncepty. Hlavní koncept je packetový filtr. To je kód, který stojí mimo síťový stack a před vstupem i během zpracování packetu může nezávisle provést testy a o PDU rozhodnout - zda se má zahodit, propustit dále nebo nějak změnit. Slovo packet a nebo ještě lépe PDU používáme proto, aby bylo jasné, že teď nemluvíme o žádné konkrétní vrstvě ISO/OSI modelu, protože filtrovat můžeme podle obsahu v L2, L3 nebo L4 hlavičkách nebo klidně i podle různých hodnot v přenášených datech.

Vedle nejčastějších rozhodnutí o packetu - propustit nebo zahodit, může packetový filtr označit packet značkou - ta se zapíše do doprovodných datových struktur pro packet v paměti kernelu, ale v samotném packetu se nijak neprojevuje. Značku pak lze využít v síťovém stacku. A packetový filtr může dokonce omezeným způsobem manipulovat s obsahem packetu. Výhodou je nezávislost a relativní jednoduchost, která může pomoci zabránit útokům na potenciální chyby v kódu síťového stacku. Nevýhodou je, že packetový filtr málokdy do důsledků rozumí protokolům, které filtruje. (Tím se liší od některých aplikačních firewallů, které fungují víc jako proxy servery, tedy efektivně komunikují nezávisle se klientem a se serverem a předávají mezi nimi data, po tom, co je sémanticky zvalidují).

Packetové filtry jsou v původním slova smyslu chápány jako bezstavové. Tedy že pro každý packet mohou vykonat sadu testů, ale krom obsahu právě zpracovávaného packetu nemají další informace, které by mohly k rozhodnutí pomoci.