V dnešní době neexistuje jednoznačná definice. Wikipedia říka, že účelem firewallu je regulovat některé toky z provozu mezi počítačovými sítěmi různých úrovní důvěry. Firewall je základní nástroj, který implementuje bezpečností politiku (sítě, stroje). Další vrstvou ochrany můžou nabídnout IDS/IPS systémy a v neposlední řadě lze využít tzv. honeypotů, které poměrně účinně snižují míru falešných poplachů.
Firewall je do linky zapojen sériově a obvykle vymezuje v síti zóny s různou úrovní důvěry. Úrovní může být myšlena zóna s vysokou mírou důvěry, nedůvěryhodná zóna nebo demilitarizovaná zóna (DMZ).
Firewally lze dělit podle různých kritérií.
Uzpůsobení
Způsob fungování
Funguje na bázi pravidel postihujících jen základní údaje, které lze vyčíst z hlavičky paketů. Nejčastěji se využivá zdrojové adresy, zdrojového portu, cílové adresy, cílového portu, protokolu. Možné cíle jsou: přijetí, odmítnutí, zahození nebo další zpracování. Poměrně rychlý a výkonný typ firewallu, ovšem v dnešní době málokdy (sám o sobě) dostačující. Původně ipchains v jádře, od verze 2.4 nahrazen netfilter.
Výhody:
Aplikační proxy (brána) poskytuje ochranu na aplikační vrstvě. Klient pošle proxy požadavek a ta sprostředkovává spojení za klienta (man-in-the-middle). Na venek se tváří jako klient samotný => maskuje zdrojovou ip/port původního klienta (paralela s NAT). Provádí celkovou inspekci paketů (četně obsahu).
Výhody:
Rozšíření paketových filtrů. Něco mezi paketovým filterem a aplikační proxy. Hlídá stavy relací (NEW, RELATED, ESTABliSHED, INVALID) a umožňuje definovat pokročilá pravidla filtrace.
SW: iptables, ipfw
Detekční systém průniků (nebo pokusů o průnik) do sítě nebo na uzel. První zmínka v roce 1980 v USA (vojenský výzkum). V síti se jedná o pasivní prvek ochrany a bývá realizován jako HW. Na hostitelském systému bývá realizován jako SW. Síťový IDS si neporadí s šifrovaným provozem, ale je dobře škálovatelný.
Jedná se o systém prevence průniků. Oproti IDS je zapojen sériově a aktivně se podílí na obraně sítě/uzlu. Těžko se pozná rozdíl mezi pokročilým fw a IPS.
Moderní koncept siťových pastí na útočníky. Většinou se jedná o stroj, který je vyčleněn mimo běžně používané rozsahy a tudíž k tomuto stroji legitimní uživatel nepřistupuje. Několik druhů členění: virtuální, nízko/vysoko-interaktivní, webové, klientské, atd.
Překlad adres využívaný ke změně hlaviček paketů. Přepisují se zdrojové (SNAT - Source NAT), nebo cílové (DNAT - Destination NAT) adresy. Technika, která se začala využívat v důsledku zmenšující se množiny volných IPv4 adres (v IPv6 již zcela zbytečné). Využívá se i u pasivního FTP, aplikační proxy, rozložení zátěže, atp.
*BSD systémy disponují následujícími implementacemi firewallů:
V roce 1994 portoval Alan Cox do jádra 1.1 firewall (ipfw) z BSD. Od jádra 2.0 je k dispozici nástroj ipfwadmin pro správu pravidel. Od verze 2.2 je k dispozici nástroj ipchains, který přidává nové možnosti ipfw (řetězce pravidel). V jádře 2.4 byl firewall přepsán a přejmenován na netfilter. K nastavení pravidel netfilteru se používá uživatelský program iptables.
V jádře nutno zakompilovat (distribuční jádra standardně již mají):
Networking --> Networking options --> [*] Network packet filtering (replaces ipchains) --> IP: Netfilter Configuration --> <M> Connection tracking (required for masq/NAT) <M> IP tables support (required for filtering/masq/NAT)
Network | v ------------- | mangle | | PREROUTING | ------------- | v ------------- | nat | | PREROUTING | ------------- | v --------------------------------- | | v | ------------- | | filter | | | INPUT | | ------------- | | | v | local process | | | v v ------------- ------------ | mangle | | filter | | OUTPUT | | FORWARD | ------------- ------------ | | v | ------------- | | nat | | | OUTPUT | | ------------- | | | v | ------------- | | filter | | | OUTPUT | | ------------- | | | --------------------------------- | v ------------- | nat | | POSTROUTING | ------------- | v Network
Konfigurační nástroj netfilteru.
iptables [tabulka] [akce] [řetěz] [dadatečná omezení] [cíl] [dodatečné informace k cíly]
Pravidla v řetězcích se skládají jednak z kritérii, podle kterých se rozhodne, zda se má pravidlo na daný paket aplikovat a jednak z cíle, který určí, co se má s paketem udělat, pokud vyhovuje kritériím.
Cílem mohou být uživatelem definované řetězce, nebo jedna z následujících hodnot (výčet není kompletní):
Pokud jako cíl použijeme uživatelem definovaný řetězec a paket nebude vyhovovat žádnému pravidlu v tomto řetězci, bude vyhodnocování pokračovat následujícím pravidlem v řetězci původním.
iptables -A INPUT -s 127.0.0.1/32 -i lo+ -j ACCEPT
iptables -A INPUT -s ! 10.0.0.0/16 -i eth0 -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -N syn_flood iptables -A INPUT -p tcp --syn -j syn_flood iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN iptables -A syn_flood -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 5 -j ACCEPT
iptables -t nat -A POSTROUTING -j SNAT --to-source 10.0.0.80
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -s 147.251.0.0/16 -i eth0 -p tcp -m tcp --dport 2222 -j REDIRECT --to-ports 22 iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT