Firewally
Aleš Novák, ales.novak@mail.muni.cz
Obsah
Firewall
Firewall je sitove zarizeni pro rizeni a zabezpeceni sitoveho provozu mezi dvema sitemi s ruznymi urovnemi zabezpeceni, definuje pravidla pro komunikaci mezi sitemi. Drive tato pravidla zahrnovala jen identifikaci cile a zdroje dat, nyni jiz nedostatecne.
Typy firewallu
Firewally se deli na nekolik zakladnich typu podle kategorie, do ktere patri :
Paketove filtry
Nejjednodussi forma, pravidla uvadeji jen zdrojovou a cilovou adresu a port. Vyhodou je vysoka rychlost, nevyhodou nizka uroven kontroly.
Predstavitele : Access Control List pro IOS.
Aplikacni brany
Brana slouzici jako proxy server pro vsechny sitove pozadavky, uplne oddeluje dve ruzne site. Vyhodou je vysoke zabezpeceni, nevyhodou vysoka narocnost na HW.
Predstavitele : The Firewall Toolkit, Gauntlet.
Stavove paketove filtry
Filtr zna stav spojeni a muze proto akceptovat pakety pro spojeni, ktere uz jednou bylo poronavano s pravidly. Proto muze akceptovat pakety, aniz by je znovu podrobil zkoumani nad pravidly. Diky tomu dosahuje vyssi vykonosti, mensi HW narocnosti a je jednodussi na konfiguraci.
Stavove paketove filtry s kontrolou protokolu a IDS
Implementuji technologii Deep Inspection, filtry tohoto typu jsou schopny kontrolovat pakety az na uroven korektnosti prochazejicich dat znamych protokolu a aplikaci. Jsou tak schopny napriklad zakazat http spojeni u ktereho se nejedna o www pozadavek, ale tunelovani jineho protokolu. Tyto metody vyuzivaji napriklad P2P site.
IDS - Intrusion detection systems - pomoci databaze signatur a heuristicke analyzy odhaluji vzorce utoku i ve zdanlive nesouvisejicich pokusech o pripojeni.
Netfilter
Netfilter je framework v linuxovem jadre 2.4, 2.6. Slouzi pro zachycovani a manipulaci se sitovymi pakety. Slouzi jako firewall, stavovy paketovy filter, NAT. Netfilter kromě toho nabízí základní infrastrukturu pro komunikaci userspace vs. kernel, kterou lze použít k předáváni parametrů do modulů a zpětnému získávání stavových informací. Jeho schopnosti vyuziva a jeho konfiguraci provadi prikaz iptables. Snadne prijeti mimo jine zarucila i zpetna kompatibilita se starymi nastroji - ipchains a ipfwadm na pocatku nasazeni u kernelu 2.4.
Struktura netfilteru
Iptables - uvod
Popis
Je toprogram, ktery se spousti v uzivatelskem prostoru a slouzi k nastavovani mnozin pravidel pro IPv4 prenosy, v baliku iptables je obsazeno take ip6tables pro filtrovani IPv6. Iptables zavisi na frameworku netfilter, ktery je v linuxovem kernelu 2.4, 2.6. Patri do kategorie stavovych paketovych filtru. Aby nebylo nutne zkoumat kazdy paket zvlast, uklada si sve rozhodnuti pro kazde spojeni do casti nazyvane conntrack a rozhoduje se u dalsich paketu spojeni prave podle udaju v teto casti a nepodrobuje pakety dalsimu zkoumani nad pravidly.
S tim je spojeny problem zaloznich firewallu pri reseni vyssi dostupnosti firewallu. Pri kazdem prepnuti do zalozni server je nutne, aby tento disponoval aktualnimi udaji z casti conntrack. Tyto problemy resi napriklad volne dostupne projekty Keepalived (algoritmy pro prepinani serveru a virtualni adresy v siti) a Conntrackd (synchronizace conntrack).
Alternativy
- IP Filter, ipfirewall - take Solaris, BSD, IRIX ..
- Tripwire - komercni nastroj pro BSD, rozsiruje ochranu na uroven souboroveho systemu, umi hlidat zmeny soubour
- Ipchains - pro verze jadra 2.2, nahradily starsi ipfwadm
Ucel
- filtrovani paketu - omezeni pristupu
- sdileni adres - sdileni, presmerovani
- sledovani provozu - logovani
- ostatni - zmeny v paketech, QoS, routovani
Iptables - princip funkce
Tabulka - katalog, obsahujici retezce (sady)
3 typy tabulek :
- filter - zakladni logovani, filtrovani, pocitani
- nat - preklad adres, pro prvni paket spojeni
- mangle - speciality (napr. QoS)
Zalezi na poradi, na paket se pouzije prvni pro nej platne pravidlo
Zakladni retezce v tabulkach
- filtr : INPUT, OUTPUT, FORWARD (co jde pres F, neprochazi ani I, ani O)
- nat : PREROUTING, POSTROUTING, OUTPUT
- mangle : filtr U nat, pro upravy hlavicek, TTL, znackovani
Iptables - zpusob konfigurace
Pouziti iptables :
- Prace s pravidly
--append -A Prida pravidlo na konec seznamu
--delete -D Smaze pravidlo
--insert -I Vlozi pravidlo na urcitou pozici
--replace -R Prepise pravidlo na urcite pozici
--list -L Vypise pravidla
--flush -F Odstrani vsechny pravidla
--zero -Z Vynuluje pocitadla
--new -N Vytvori novou sadu pravidel
--delete-chain -X Smaze urcitou sadu pravidel
--policy -P Zmeni vychozi politiku
--rename-chain -E Zmeni jmeno sady pravidel
- Zakladni nastaveni
--proto -p cislo nebo jmeno protocolu (viz. /etc/protocols)
--source -s zdrojova adresa (maska)
--destination -d cilova adresa (maska)
--in-interface -i vstupni sitove zarizeni
--out-interface -o vystupni sitove zarizeni
--jump -j cil paketu - co filtrovani s paketem udela
--goto -g chain preskoc na jinou sadu
--match -m match rozsirene porovnani
--table -t tabulka, s kterou se bude manipulovat
- Akce
ACCEPT paket se pusti dal
DROP zahodi se
GOTO (misto -j GOTO se pouziva -g) - skoc na jiny retezec pravidel
REJECT zahodi se, ale posle se zpet ICMP unreachable
LOG info z hlavicky se zapise do logu a pokracuje se dal
DNAT zmeni se cilova adresa/port
SNAT zmeni se zdrojova adresa/port
REDIRECT speciĂĄlnĂ DNAT, posle na lokalni stroj
MASQUERADE speciĂĄlnĂ SNAT, prepise adresu na vlastni
MARK priradi paketu cislo, pro dalsi zpracovani
Iptables - match extensions
Match extensions
- iprange : dst-range, src-range - rozmezi adres
- mac : mac-source
- icmp : icmp-type
- time (patch-o-matic): time-start, time-stop, days(Mon, Tue ..)
- state
Rozsireni pro porovnani state
Porovnava vyhovujici podle stavu pripojeni
Stavy :
- INVALID - paket neni indentifikovan, je vadny nebo neni znama zadna konexe
- ESTABILISHED - paket je asociovan se spoojenim, u ktereho byly preneseny pakety v obou smerech
- NEW - nove spojeni, pakej je asociovan se spojenim, ale nebyly preneseny pakety v obou smerech
- RELATED - paket, ktery zahajuje nove spojeni, je uz asociovan s jinym (napr. FTP prenos)
Iptables - priklady pouziti
Nastaveni politiky - vychozi akce pro vstupni paket DROP
iptables -P INPUT DROP
Zahodi vsechny pakety z ip 192.168.2.1 :
iptables -A INPUT -s 192.168.2.1 -j DROP
Pridat do sady INPUT pravidlo s cilem ACCEPT pro protocol tcp, rozsah cilovych portu a cilovych adres :
iptables -A INPUT -p tcp --dport 50:55 -m iprange --dst-range 192.168.0.1-192.168.0.10 -j ACCEPT
Stoj s ip adresou $IP_1 jako tunel na portu 2222 na ssh na stroji s ip $IP_2 :
# povolim forwardovani paketu
echo "1" > /proc/sys/net/ipv4/ip_forward
# paketum prichazejicim na port 2222 nastavim cilovou adresu na $IP_1
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to $IP_2:22
# pri odeslani paketu nastavim adresu na zdrojovou adresu $IP_1
iptables -t nat -A POSTROUTING -p tcp --dport 22 -d $IP_2 -j SNAT --to-source $IP_1
Literatura