Print this chapterPrint this chapter

Firewall a NAT

Firewall a NAT

Na úvod je třeba říci, že v současné době (konec roku 2020) máme v Linuxu několik implementací funkcionality, kterou při troše zjednodušení označíme jako "firewall".

Mimochodem: Linux měl první "firewall" ve verzi 2.0 - ipfw/ipfwadm, což byl packetový filtr převzatý z FreeBSD. Následoval firewall ipchains ve verzi Linuxu 2.2 a po něm teprve přišel projekt Netfilter, který se ovládá pomocí (a spousta lidí jej zná pod názvem) iptables. Ani u iptables se vývoj nezastavil. Momentálně je v Linuxovém světě dvojice "frontendů" pro Netfilter v jádře: Moderní nft a vedle toho iptables. Aby to nebylo jednoduché, iptables jsou dvě různé odrůdy: iptables-nft, což je vlastně jen překladač pravidel z formátu příkazové řádky iptables to formátu nft. A pak jsou na některých systémech stále iptables-legacy, což jsou původní iptables, které interagují rovnou s jádrem (tedy ne přes modernější nft). My se podíváme na iptables i nft a protože u iptables nebudeme zabíhat do detailů, tak nám rozdíly mezi iptabes-nft a iptables-legacy nebudou vadit. Nicméně se hodí vědět, že tato komplikace existuje a že se můžeme ve specifických situacích nachytat na rozdíly. Také si je dobré uvědomit, že firewally nelze přímočaře kombinovat. Respektive v závislosti na verzích a použití kombinace nft a iptables-legacy vznikají různé nežádoucí interakce. My se jimi však nebudeme zabývat, protože obecně kombinovat firewally nemá smysl a je lépe se toho vyvarovat. Jediná úplně bezpečná kombinace je, že nft vidí pravidla vytvořená přes iptables-nft.

Vznikají však i novinky, stojící na úplně jiných technologických základech - projekt XDP (Express Data Path) umožňuje používat k filtrování eBPF a to těsně po opuštění síťové karty a ještě před tím, než packet vstoupí do síťového stacku a je pro něj vůbec alokována paměť. eBPF není zas tak úplná novinka, ve skutečnosti jde o přizpůsobení filtrovacího virtuálního stroje, který je v kernelu už docela dlouho, ale používal se především k filtrování při zachytávání packetů pomocí libpcap - to je backend, který používá nám známý tcpdump.

My se technologiemi, které umožňují obcházet Linuxový síťový stack (XDP, eBPF, DPDK, ...) teď zabývat nebudeme, ale přesto stojí za to upozornit na jejich existenci a zbývá předem podotknout, že výkonová omezení, o kterých budeme psát dále v souvislosti s Netfilterem, nejsou absolutní. K jejich překonání s pomocí pokročilých technologií, které obchází síťový stack, vede však celkem složitá cesta.

Odkazy: