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�:
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�)).
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�.
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).
Sed� na spojov� vrstv�.
Nejdostupn�j�� je podpora packetov�ho filtru zabudovan� do j�dra Linuxu (od verze 1.1).
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 ------
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.
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.
Adresy k parametr�m -s (-source) a -d (-destination) lze zad�vat �ty�mi zp�soby:
Protokol specifikujeme parametrem -p jmeno protokolu. Tj. nap�. -p ! TCP zn. v�echny protokoly mimo TCP.
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�.
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.
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):
# iptables -A FORWARD -m limit -j LOGT�mto se prvn� p�ijme 5 paket� (default limit-burst je 5). Potom se �ek� 20min ne� ub�hne limit, p��padn� pakety jsou odm�tnuty, nedojde-li ��dn�, limit-burst se o jedni�ku nabije. Pokud do 100min nedojde paket, limit-burst je pln� nabit a jsme op�t v po��te�n�m stavu.
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
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 DROP | Pr1: -s 192.168.1.1 |
Pr2: -p TCP -j vlastni | Pr2: -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.
Pouze pro implicitn� �et�zy INPUT, OUTPUT a FORWARD. M��e b�t nastavena na ACCEPT nebo DROP pomoc� parametru -P.
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 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.4Lze 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).
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 MASQUERADET�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�.
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:8080P�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
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�: