Poprzednia NastΩpna Spis Tre╢ci

3. Firewall.

3.1 Oprogramowanie i czytanie.

Powniene╢ przeczytaµ Firewall-HOWTO.

Dowiesz siΩ stamt▒d sk▒d wzi▒µ ipfwadm je╢li jeszcze go nie masz. S▒ jeszcze inne narzΩdzia, kt≤re mo┐esz ╢ci▒gn▒c, ale ja nie zrobi│em nic dalej bez ipfwadm. Jest on do╢µ przyjazny i niskopoziomowy ! Widzisz dok│adnie co siΩ dzieje.

3.2 Sprawdzenie wstΩpne.

Wkompilowa│e╢ IP-forwarding i -masquerading w j▒dro, wiΩc mo┐esz sprawdziµ czy firewall jest w swoim domy╢lnym (akceptuj▒cym) stanie poleceniami:

       ipfwadm -I -l
       ipfwadm -O -l
       ipfwadm -F -l

I tak odpowiednio wy╢wietlane s▒ zasady dotycz▒ce wchodz▒cych, wychodz▒cych i przekazywnaych (masquerading) pakiet≤w. -l oznacza "list".

Mo┐liwe, ┐e wkompilowa│e╢ tak┐e zliczanie (accounting):

       ipfwadm -A -l

Powiniene╢ zobaczyµ, ┐e nie ma zdefiniowanych ┐adnych zasad i ┐e domy╢lnym stanem jest akceptacja wszystkich pakiet≤w. Mo┐esz wr≤ciµ do tego stanu w ka┐dej chwili pisz▒c:

       ipfwadm -I -f
       ipfwadm -O -f
       ipfwadm -F -f

-f oznacza "flush". Mo┐liwe, ┐e musisz tego u┐yµ.

3.3 Zasady domy╢lne.

ChcΩ po prostu odci▒c resztΩ ╢wiata od swojej sieci wewnΩtrznej i nic wiΩcej, tak wiΩc ostatni▒ (domy╢ln▒) zasad▒ bΩdzie ignorowanie wszelkich pakiet≤w pochodz▒cych z wnΩtrza sieci i zaadresownych na zewn▒trz. Umie╢ci│em wszystkie te zasady (w takiej kolejno╢ci) w /etc/rc.d/rc.firewall i wykonujΩ ten skrypt z rc.local podczas startu.

  ipfwadm -I -a reject -S 192.168.2.0/255.255.255.128 -D 0.0.0.0/0.0.0.0

-S oznacza ╝r≤d│owy (source) adres/maskΩ. -D to adres/maska przeznaczenia (destination).

Ten format dla ipfwadm-a jest trochΩ d│ugi. Program ten jest inteligentny je╢li chodzi o nazwy sieciowe i niekt≤re popularne skr≤ty. Zajrzyj do podrΩcznika systemowego.

Przypuszczalnie bardziej wygodnie jest okre╢laµ niekt≤re lub wszystkie zasady dla wychodz▒cej po│owy firewall-a u┐ywaj▒c opcji -O zamiast -I, ale ja okre╢lΩ je dla czΩ╢ci wchodz▒cej.

3.4 Dziury na adres.

Przed zasadami domy╢lnymi muszΩ umie╢ciµ kilka zasad, kt≤re s│u┐▒ jako wyj▒tek od og≤lnego zabronienia dostΩpu do serwis≤w zewnΩtrznych dla klient≤w wewnΩtrznych.

ChcΩ traktowaµ adres firewall-a w sieci wewnΩtrznej specjalnie. ZabroniΩ logowania siΩ na tΩ maszynΩ o ile kto╢ nie ma specjalnego pozwolenia, ale jak ju┐ siΩ tam zaloguj▒, to powinni mieµ mo┐liwo╢µ kontaktu ze ╢wiatem.

  ipfwadm -I -i accept -S 192.168.2.100/255.255.255.255 \
		       -D 0.0.0.0/0.0.0.0

ChcΩ tak┐e, aby klienci wewn▒trz sieci mogli siΩ komunikowaµ z firewall-em. Mo┐e mog▒ go zmusiµ, aby wypu╢ci│ ich na zewn▒trz !

  ipfwadm -I -i accept -S 192.168.2.0/255.255.255.128 \
		       -D 192.168.2.100/255.255.255.255

W tym momencie sprawd╝ czy mo┐esz siΩ dostaµ do klient≤w wewn▒trz sieci z zewn▒trz poprzez telnet i nie mo┐esz siΩ wydostaµ. Oznacza to, ┐e mo┐esz siΩ kontaktowaµ, ale klienci nie mog▒ ci odpowiedzieµ. Powiniene╢ m≤c siΩ dostaµ wszystkimi drogami je╢li uzywasz firewall-a jako maszyny przej╢ciowej. Spr≤buj tak┐e rlogin i ping z uruchomionym tcpdump na jednej z kart. Powiniene╢ umieµ odpowiednio wykorzystaµ to co robisz.

3.5 Dziury na protok≤│.

W nastΩpnym kroku polu╝ni│em trochΩ zasady protok≤│ po protokole. ChcΩ, na przyk│ad, wpuszczaµ ping-i, ┐eby dostaµ odpowied╝.

  ipfwadm -I -i accept -P icmp -S 192.168.2.0/255.255.255.128 \
			       -D 0.0.0.0/0.0.0.0

-P icmp to magiczne zaklΩcie dla konkretnego protoko│u.

Dop≤ki trzymam ftp-proxy pozwalam tak┐e na odwo│ania ftp na zewn▒trz przez konkretne porty. Te docelowe porty na odleg│ej maszynie to: 20, 21, 115

  ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
			       -D 0.0.0.0/0.0.0.0 20 21 115

Bez dzia│aj▒cego serwera nazw nie m≤g│bym mieµ dzia│aj▒cego sendmail-a. Zamiast ustawiµ serwer nazw na firewall-u, pozwoli│em mu przepuszczaµ zapytania skierowane do najbli┐szego serwera nazw i umie╢ci│em jego adres w plikach /etc/resolv.conf u klient≤w - nameserver 123.456.789.31 - w osobnej linijce.

  ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
			       -D 123.456.789.31/255.255.255.255 54

To, kt≤rego portu u┐ywa dany serwis mo┐esz dowiedzieµ siΩ z programu tcpdump. Po prostu uruchom dany serwis przez ftp, albo telnet na danym kliencie i szukaj go na portach wej╢ciowych albo wyj╢ciowych na danym kliencie:

  tcpdump -i eth1 -e host client04

Plik /etc/services jest drugim wa┐nym ╝r≤d│em.

Aby pozwoliµ na dostΩp poprzez telnet do firewall-a z zewn▒trz, musisz pozwoliµ klientom na wo│anie na konkretnym porcie. Rozumiem dlaczego jest to potrzebne dla ftp - z powodu serwera, kt≤ry ustawia strumie± danych na ko±cu - ale nie jestem pewien dlaczego telnet tak┐e tego potrzebuje.

  ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 ftp telnet \
			       -D 0.0.0.0/0.0.0.0

S▒ problemy z pewnymi demonami, kt≤re sprawdzaj▒ nazwΩ firewall-a, ┐eby zdecydowaµ jaki jest ich adres sieciowy. rpc.yppasswdd to jeden, z kt≤rym mia│em problemy. Nalega│ na rozsy│anie informacji, ┐e jest on poza firewall-em (na drugiej karcie). To znaczy, ┐e klient wewn▒trz nie mo┐e siΩ z nim porozumieµ.

Zamiast uruchamiania IP-aliasing-u, albo zmiany kodu demona, odwzorowa│em nazwΩ dla karty wewnΩtrznej u klient≤w w ich plikach /etc/hosts.

3.6 Sprawdzenia.

Teraz chcesz sprawdziµ czy wci▒┐ mo┐esz po│aczyµ siΩ telnet-em, rlogin-em lub ping-owaµ z zewn▒trz. Z wewn▒trz powiniene╢ m≤c ping-owaµ na zewn▒trz. Powiniene╢ m≤c tak┐e po│aczyµ siΩ telnet-em z firewall-em z wewn▒trz a p≤╝niej m≤c robiµ wszystko.

To tyle. W tym momencie mo┐esz siΩ pouczyµ o rpc/Yellow Pages i interakcji z plikiem hase│. Sieµ chroniona firewall-em powinna dzia│aµ tak, aby nie pozwalaµ nieuprzywilejowanym u┐ytkownikom na logowanie siΩ na firewall-u i przez to na wychodzenie na zewn▒trz.. A to ju┐ historia na inne HOWTO.


Poprzednia NastΩpna Spis Tre╢ci