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).

Iptables - princip funkce

Tabulka - katalog, obsahujici retezce (sady)

Zalezi na poradi, na paket se pouzije prvni pro nej platne pravidlo

Iptables - zpusob konfigurace

    Pouziti iptables :
  1. 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
          
  2. 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
          
        
  3. 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

Rozsireni pro porovnani state

Porovnava vyhovujici podle stavu pripojeni

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