Firewall je v našem případě nějaká pomyslná brána, přes kterou chodí síťový provoz. Může to být například samostatný počítač, který od sebe odděluje celé sítě (např. zabezpečení nějaké vnitřní sítě - intranetu od veřejné, nedůvěryhodné sítě - internetu), nebo jen něco v jádru ip stacku, což umožňuje lepší kontrolu nad pakety, které z/do počítače proudí.
Paketové filtry jsou nejjednodušší a nejzákladnější forma firewallu. Rozhodují se pouze
na základě hlaviček paketů (zdrojová/cílová adresa/port) - síťová vrstva ISO/OSI.
Výhody a nevýhody:
+ Jsou transparentní, není třeba jakkoli upravovat aplikace
+ Z principu jsou velmi jednoduché, takže i rychlé a nenáročné
+ Obvykle přímo součástí jádra systému
- Umožňují sledovat pouze jednotlivé pakety, neumožňují hlídat návaznosti mezi nimi
- Neumožňují žádnou autentizaci
- Velmi nešikovné logovaní (težko se rozhoduje co logovat, při větším provozu to snadno přeroste přes hlavu)
Stavové firewally jsou rozšířením paketových filtrů. Udržují navíc informace o spojeních,
takže umožňují hlídat souvislosti mezi jednotlivými pakety.
Výhody a nevýhody:
+ Díky hlídání souvislostí můžeme nastavit lepší bezpečnostní politiky, například zahazování paketů z nedůvěryhodné sítě, které nepatří k žádnému z již navázaných spojení
- Jsou náročnější než paketové filtry, protože musí udržovat informace o spojeních a kontrolovat souvislosti
Aplikační proxy je ochrana na aplikační vrstvě. Je to tedy nějaký program, se kterým
komunikují klienti a posílají požadavky na servery přes něj. Příkladem aplikační proxy
je http proxy a ftp proxy. Tyto proxy zpravidla nepotřebují podporu jádra systému.
Výhody a nevýhody:
+ Umožňuje autentizaci uživatelů
+ Umožňuje velmi dobře i hlídat obsah přenášených paketů (např. i antivirová kontrola)
+ Má mnohem lepší možnosti logování, než předchozí možnosti (i s informacemi o obsahu)
+ Umožňuje cachování dat
- Není transparentní, její používání se musí nastavit v klientské aplikaci
- Je náročnější na výkon i na paměť
- Není univerzální jako paketové filtry. Pro každou aplikaci musí být zvláštní proxy
Analyzátory paketů fungují podobně jako aplikační proxy (pracují na aplikační vrstvě),
ale jsou pasivní a transparentní. Umožňují pasivní analýzu paketů a případné reakce
na podněty. Jedním z příkladů je balík Snort.
Výhody a nevýhody:
+ Narozdíl od aplikační proxy jsou transparentní
+ Jde o pasivní kontrolu přenášených dat s možností definovat reakce na potenciální útok
(např. zablokování přijímání paketů z podezřelé IP adresy)
- Náročnost na systémové prostředky, není univerzální
Network Address Translation (NAT) slouží k změnám údajů v hlavičkách paketů.
To umožňuje přesměrovávat pakety na jiné počítače, nebo "skrýt" víc počítačů pod jednu
veřejně přístupnou IP adresu.
NAT můžeme rozdělit na 2 typy:
Linuxové jádro obsahuje paketové filtry od verze 1.1. Bylo zde použito ipfw ze systému BSD. Od verze 2.0 přibyl uživatelský nástroj ipfwadm pro konfiguraci tabulek v kernelu. Ve verzi 2.2 (2.1.102) přibyly navíc ipchains (přepsané ipfw), které umožňovaly navíc práci s jinými protokoly, než TCP,UDP a ICMP, a podobně. S jádrem 2.4 přišla opět změna v podobě iptables, které se používají až doteď v řadě 2.6. Je to úplně nový kód, který se navích chová jako stavový firewall (udržuje informace o navázaných spojeních apod.)
iptables/netfilter je standardní součást aktuálních řad linuxového kernelu.
Funguje tak, že pakety, které jádro zpracovává prochází různými řetězy (chains) pravidel
a podle toho se rozhoduje o jejich osudu.
Řetězů mohou být 3 typy, podle jejich zařazení: filter, nat a mangle
_____ Incoming->PREROUTING / \ POSTROUTING->Outgoing -->[Routing ]--->|FORWARD|-------> [Decision] \_____/ ^ | | v ____ ___ / \ / \ |OUTPUT| |INPUT| \____/ \___/ ^ | | ----> Local Process ----Přijatý paket
Musíme mít na paměti 2 nejdůležitější věci:
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP2) Povolíme základní ICMP pakety (icmp echo, traceroute)
iptables -A INPUT -p ICMP -i eth0 --icmp-type 0 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 3 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 8 -j ACCEPT iptables -A INPUT -p ICMP -i eth0 --icmp-type 11 -j ACCEPT3) Povolíme příjem paketů bez omezení z vnitřních sítí
iptables -A INPUT -p ALL -i lo -j ACCEPT iptables -A INPUT -p ALL -i eth1 -j ACCEPT4) Definujeme překlad adres, který umožní přístup vnitřních počítačů do vnější sítě
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 1.2.3.4 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp+ -j MASQUERADEPokud máme statickou adresu, měli bychom používat možnost se SNAT
iptables -t nat -A PREROUTING -p tcp -d 1.2.3.4 --dport 80 -i eth0 -j DNAT --to 192.168.1.2:80Případně přesměrovávat pakety z vnitřní sítě do internetu na nějakou lokální transparentní proxy
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 80806) Definujeme si vlastní řetěz pro explicitní povolení příjmu paketů z nedůvěryhodné sítě, pokud náleží existujícímu spojení
iptables -N my_est iptables -A my_est -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A my_est -j DROPOdkaz na tento řetěz vložíme do řetězů INPUT a FORWARD (měl by být na konci)
iptables -A INPUT -j my_est iptables -A FORWARD -j my_estPravidel by v tabulkách nemělo být příliš moc, aby se jádro při přijetí každého paketu zbytečně nezatěžovalo zpracováním filtrů.
Pod systémy BSD jsou tyto druhy firewallů:
Na linuxovém firwallu s NAT můžeme využít také Connection Tracking. Ten umožňuje hlídat navázaná spojení a na jejich základě měnit obsah paketů a nat tabulek tak, aby fungovaly i protokoly, které otevírají porty dynamicky a mohou navazovat spojení směrem ke klientovi (například FTP v aktivním režimu). K tomu slouží moduly ip_nat_* a ip_conntrack_*. Po jejich zavedení kernel hlídá provoz na určitých portech a kontroluje obsah paketů. Pokud např. ve FTP protokolu posle jedna ze stran udaje o IP adrese a portu na kterou se bude navazovat spojení, tak kernel paket změní, odešle dál a pro takové spojení pak povolí přesměrování paketu do vnitřní sítě.
UPnP je jedna z dalších možností, jak si aplikace může zařídit možnost příchozích spojení
přes implicitně zavřený firewall. Beží na výchozí bráně pro klienty a klienti jí mohou
posílat požadavky o přesměrování některého z portů na jejich IP adresy.
Tento protokol podporuje například program MSN Messenger, ve kterém díky UPnP může
fungovat například přenos hlasu zpoza firewallu.
Velikou nevýhodou však je, že tento způsob je značným bezpečnostním rizikem pro síť,
kde se používá. Proto je lepší pro takové věci hledat jiné rozumnější řešení.
Linux 2.4 Packet Filtering HOWTO
UPnP
manuálové stránky
http://www.netfilter.org/