Firewall - paketov� filtr

David �afr�nek, xsafran1@fi.muni.cz


Obsah


K �emu je firewall aneb pro� stav�t hradbu?

B�n� routery sm�ruj� pakety na ur�en� m�sta pasivn� bez jak�koliv kontroly, tj. jsou sm�rov�ny i "�kodliv�" pakety. Chceme-li kontrolovat pakety p��ch�zej�c� do na�� s�t�, m��eme mezi na�i s�� a okoln� sv�t postavit firewall, kter� zabr�n� proniknut� zlomysln�ch �to�n�k� ke stroj�m v na�� s�ti. Tato hradba v�ak stoj� p�irozen� v cest� i paket�m cestuj�c�m ven z na�� s�t�.
V u���m smyslu lze firewall pova�ovat za chytr� router, kter� se d�v� dovnit� p��choz�ch paket� a d�le se rozhoduje, co se bude s paketem d�t. Paket m��e b�t doru�en na c�lovou adresu, zahozen nebo dokonce firewall m��e p�epsat hlavi�ku paketu nap�. za ��elem p�ekladu adres (Network Adress Translation). Firewall m��e tak� �e�it autentizaci u�ivatel� nebo stroj�.

Celkem lze mo�nosti firewallu shrnout n�sledovn�:



Typy firewall�

Aplika�n� filtr

Sed� na aplika�n� vrstv�. St�e�� tedy jednotliv� aplikace. Ve�ker� komunikace prob�h� prost�ednictv�m proxy server� (klient chce kontaktovat server venku => m�sto toho kontaktuje proxy server na firewallu, kter� se chov� v��i klientu transparentn� a p�itom komunikuje se skute�n�m serverem dle dan�ch pravidel ur�uj�c�ch opr�vn�nost po�adavk� (i na �rovni u�ivatel�)).

Paketov� filtr

Sed� na s��ov� vrstv�. Chov� se jako ��ste�n� propustn� router. Zkoum� hlavi�ky proch�zej�c�ch paket� a podle sady pravidel se rozhoduje, zda paket propust� �i nikoliv. V z�sad� definuje odkud kam a kterou slu�bou je povolen p��stup. Nem� sice takov� mo�nosti jako aplika�n� firewall, nepot�ebujeme v�ak pro ka�dou slu�bu proxy server. Autentizaci nelze d�lat na �rovni u�ivatel�.

Network adress translation (NAT)

Sed� na aplika�n� i s��ov� vrstv�. �e�� transparent proxy, IP masquarading, v�ce server� ve vnit�n� s�ti (IP forwarding) a nap�. rozd�len� z�t�e (load-balancing). Pro n�kter� slu�by mus� operovat i na aplika�n� vrstv� (nap�. ftp, pokud nechceme jen pasivn� ftp).

Bridging firewall

Sed� na spojov� vrstv�.


Software pro firewally

Aplika�n� filtry

Paketov� filtry

Nejdostupn�j�� je podpora packetov�ho filtru zabudovan� do j�dra Linuxu (od verze 1.1).



Paketov� filtr v Linuxu s j�drem 2.4

Paketov� filtr (netfilter) je zabudov�n v j�d�e, ovl�d� se pomoc� modulu iptables. P�ed kompilac� j�dra je nutn� zadat parametr CONFIG_NETFILTER v konfiguraci j�dra. D�le je nutn� zkompilovat ovl�dac� program iptables z jeho aktu�ln�ch zdroj�.
iptables umo��uje vkl�dat a odstra�ovat pravidla z tabulky paketov�ho filtru v j�d�e. Nastaven� nep�e�ije reboot, proto je nutn� tabulku filtru plnit ve startovac�ch skriptech. Implicitn� jsou k dispozici t�i seznamy pravidel (�et�zy) ve filtrovac� tabulce - INPUT, OUTPUT a FORWARD.

                             -----
Vstupn� pakety              /     \         V�stupn� pakety
  ------->[Sm�rov�n�]----->|FORWARD|------------->
          [Rozhodnut�]      \_____/        ^
               |                           |
               v                          ____
              ___                        /    \
             /   \                      |OUTPUT|
            |INPUT|		         \____/
             \___/                         ^
               |                           |
                -----> m�stn� proces ------

Pokud je paket na sv� cest� konfrontov�n s pravidlem, kter� ��d� jeho zahozen� (DROP), potom paket skon�� svoji pou� v dan�m chainu. V opa�n�m p��pad� je paket propu�t�n (ACCEPT) a pokra�uje svoji cestu v��e uveden�m diagramem.
  1. Rozhodnut� routeru, zda paket p�ich�zej�c� p�es vstupn� rozhran� je ur�en pro lok�ln� stanici.
  2. V kladn�m p��pad� je podroben testu s pravidly v INPUT �et�zu.
  3. V z�porn�m p��pad� je podroben FORWARD �et�zu pravidel, pokud je p�esm�rov�n� na tomto stroji povoleno a existuje c�lov� stroj, jinak je paket zam�tnut.
  4. Ka�d� paket vych�zej�c� z procesu na tomto stroji je podroben OUTPUT �et�zu pravidel.

Ka�d� �et�z (chain) je seznam pravidel, z nich� ka�d� ��k�, co se m� s odpov�daj�c�m paketem ud�lat (podm�nka p��slu�nosti se interpretuje na hlavi�ce paketu). Pokud paket aktu�ln�mu pravidlu neodpov�d�, je konfrontov�n s pravidlem n�sleduj�c�m. Pokud ��dn� z pravidel neodpov�d� paketu, aplikuje se na n�j tzv. chain policy. V bezpe�n�m syst�mu by m�l b�t takov�to paket zahozen.

Ka�d� pravidlo je mno�ina podm�nek, je� mus� paket spl�ovat a d�le specifikuje co se m� v tomto p��pad� s paketem d�lat.

Operace nad �et�zy:

  1. Vytvo�en� nov�ho �et�zu (-N).
  2. Odstran�n� pr�zdn�ho �et�zu (-X).
  3. Zm�na chain policy pro INPUT, OUTPUT nebo FORWARD �et�z (-P).
  4. Zobrazen� pravidel v dan�m �et�zu (-L).
  5. Odstran�n� pravidel z �et�zu (-F).

Operace nad pravidly v �et�zu:

  1. P�id�n� nov�ho pravidla na konec �et�zu (-A).
  2. Vlo�en� nov�ho pravidla do �et�zu na ur�itou pozici (-I).
  3. P�eps�n� pravidla na ur�it� pozici v �et�zu (-R).
  4. Odstran�n� pravidla z ur�it� pozice v �et�zu (-D).
  5. Odstran�n� prvn�ho pravidla spl�uj�c�ho dan� podm�nky (-D).

iptables m��e b�t instalov�n jako modul (iptable_filter.o), p�i startu iptables by m�l b�t automaticky zaveden. iptables lze tak� zakompilovat p��mo do j�dra.

Po prvn�m spu�t�n� iptables po nabootov�n� stroje jsou implicitn� �et�zy INPUT, OUTPUT a FORWARD pr�zdn� s chain policy nastavenou na ACCEPT.

# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.2 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 0.2/0.2/0.2 ms

# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
#
Vol�n�m iptables v p�edchoz�m p��kladu jsme p�idali pravidlo na konec �et�zu pro ICMP (parametr -p) pakety p�ich�zej�c� z lok�ln�ho stroje (zdrojov� adresa je adresa loopback rozhran�). Parametrem -j specifikujeme jejich zam�tnut�. Celkov� efekt t�to konfigurace je tedy zam�tnut� v�ech ICMP paket� p�ich�zej�c�ch z loopback rozhran�.

Pro odstran�n� pravidla z �et�zu m�me (jak bylo uvedeno v��e) dv� mo�nosti:

# iptables -D INPUT 1
#
T�m se odstran� pravidlo ��slo 1 v INPUT �et�zu.
# iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP
#
T�m se vyma�e prvn� v�skyt pravidla odpov�daj�c�ho dan�m parametr�m.

Specifikace zdrojov�ch a c�lov�ch adres

Adresy k parametr�m -s (-source) a -d (-destination) lze zad�vat �ty�mi zp�soby:

  1. Internetov� jm�no stroje (z DNS)
  2. IP adresa
  3. IP adresa s�t� stylu '195.48.200.0/24'
  4. IP adresa s�t�/maska s�t� `195.48.200.0/255.255.255.0'
Pokud nen� parametr -s nebo -d specifikov�n, uva�uj� se v�echny IP adresy. Pomoc� znaku '!' lze negovat v�znam. Nap�. -s ! localhost zn. v�e mimo localhost.

Specifikace protokolu

Protokol specifikujeme parametrem -p jmeno protokolu. Tj. nap�. -p ! TCP zn. v�echny protokoly mimo TCP.

Specifikace rozhran�

Vstupn�/v�stupn� rozhran� specifikujeme pomoc� parametr� -i/-o n�sledovan�ch n�zvem rozhran�. Logicky pro INPUT �et�z jsou v�znamn� pouze -i rozhran�, pro OUTPUT �et�z jen -o rozhran� a pro FORWARD �et�z jsou smyslupln� oba dva parametry. Nap�. -i ! ppp+ zn. v�echna rozhran� mimo libovoln� ppp rozhran�.

Specifikace fragment�

Dojde-li k fragmentaci n�jak�ho paketu, potom pouze v prvn�m fragmentu je obsa�ena kompletn� hlavi�ka. Fragmenty maj� pouze IP adresy, nen� zde spec. nap�. protokol. Pomoc� parametru -f omezujeme interpretaci konstruovan�ho pravidla jen na fragmenty, pomoc� '! -f' naopak pouze pro prvn� paket.

# iptables -A OUTPUT -f -d 192.168.1.1 -j DROP
#
T�m jsou zam�tnuty v�echny fragmenty odchoz� na 192.168.1.1.

Roz���en� iptables

iptables je roz�i�iteln� v modul�rn�m smyslu, roz���en� iptables tedy najdeme v adres��i s moduly (nap�. /lib/modules/2.4.0/net). Je-li j�dro zkompilov�no s volbou CONFIG_KMOD, potom je nen� t�eba explicitn� zav�d�t.
Roz���uj�c� volby pro testov�n� paket� jsou specifick� pro ur�it� protokoly. Nap�. pro protokol TCP jsou zde mj. n�sl. volby (nevztahuj� se na fragmenty):

Dal�� volby mohou b�t explicitn� vyvol�ny pou�it�m parametru -m. Zde jsou n�kter� z nich:

Jako v ipchains lze vytv��et vlastn� (u�ivatelsk�) �et�zy. Kdykoliv paket odpov�d� n�jak�mu pravidlu, kter� odkazuje (pomoc� '-j') na takov�to nedefaultn� �et�z, vyhodnocov�n� n�sleduje uvnit� tohoto �et�zu. Po ukon�en� vyhodnocov�n� pokra�uje d�le v p�vodn�m (mate�sk�m) �et�zu.

P��klad:
# iptables -N vlastni
#
INPUT vlastni
Pr1: -p ICMP -j DROPPr1: -s 192.168.1.1
Pr2: -p TCP -j vlastniPr2: -d 192.168.1.1
Pr3: -p UDP -j DROP 

�et�z m��e b�t vypr�zdn�n a zru�en pomoc� -F a -X:

# iptables -F test
# iptables -X test
#

D�le jsou jako moduly k dispozici LOG (logov�n� p�i dosa�en� pravidla vyhovuj�c�m paketem) a REJECT (stejn� jako DROP + nav�c vrac� ICMP zpr�vu "port unreachable". Pou�it� s parametrem -j.

Nastaven� chain policy

Pouze pro implicitn� �et�zy INPUT, OUTPUT a FORWARD. M��e b�t nastavena na ACCEPT nebo DROP pomoc� parametru -P.


NAT pomoc� iptables

NAT (Network Adress Translation) je p�epis source a destination IP adres v hlavi�ce paket� proch�zej�c�ch p�es firewall. V z�sad� jsou dva typy NAT - p�eklad c�lov�ch adres a p�eklad zdrojov�ch adres.

NAT se d�l� p�ed sm�rov�n�m (a tedy p�ed vlastn�m packet filterem) v p��pad� p�ekladu c�lov�ch adres a po sm�rov�n� (a tedy po packet filteru) v p��pad� p�ekladu zdrojov�ch adres. Jsou definov�ny t�i �et�zy - PREROUTING, POSTROUTING a OUTPUT (pro pakety vys�lan� lok�ln�mi procesy).

P�eklad zdrojov�ch adres

## p�eklad source adres u paket� odchoz�ch p�es eth0 na 1.2.3.4
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
Lze uv�d�t i rozsahy adres (--to 1.2.3.4-1.2.3.6) pak se d�l� load-balancing (vyb�r� se v posledn� dob� nejm�n� pou��van� spojen�). Lze uv�d�t i p��mo porty �i rozsahy port� za IP adresou (--to 1.2.3.4:1-1023).

Masquerading

Speci�ln� p��pad, jako nov� zdrojov� adresa se bere adresa rozhran�, p�es kter� paket odch�z� ven.

# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
T�m se pakety odchoz� z na�� s�t� p�es firewall z n�jak�ho stroje uvnit� jev� stroj�m venku jako pr�v� tento stroj, na n�m� b�� firewall. P�i odpov�di doch�z� k inverzn�mu p�ekladu, tj. pakety jsou doru�eny spr�vn�mu stroji unvnit� na�� s�t�.

P�eklad c�lov�ch adres

Pro PREROUTING nebo OUTPUT �et�z.

## web service p�esm�rov�n na port 8080 na stroji 5.6.7.8 uvnit� s�t�
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to 5.6.7.8:8080
P�esm�rov�n�

Speci�ln� p��pad, p�episuje se adresa rozhran�, p�es n� paket p�ich�z�.

# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128


Dov�tek k bezpe�nosti

Doporu�uje se nepodce�ovat bezpe�nostn� pravidla v s�ti za firewallem. V p��pad�, �e by hladov� vet�elec pronikl do na�� s��ky, byla by jeho ko�ist, vzniknut� zanedb�n�m bezpe�nostn�ch opat�en�, zbyte�n� velk�. Tak� je vhodn� db�t na bezpe�nost provozu vlastn�ho stroje, na n�m� b�� firewall. Obecn� se doporu�uje n�sleduj�c�:



Odkazy