Most fogjuk megadni a rendszerünk tűzfalának szabályait. Az itt ismertetésre kerülő szabályok egy olyan általános sablont kívánnak bemutatni, amely a legtöbb betárcsázós felhasználó számára megfelelnek. Habár kétségtelen, hogy nem fogja mindenki igényeit tökéletesen kielégíteni, azonban segít megmutatni az IPFW működésének alapelveit és könnyedén tovább is fejleszthető.
Elsőként kezdjük a "zárt tűzfal" alapjaival. A zárt tűzfal lényegében azon a feltevésen alapszik, hogy alapvetően mindent kizárunk a rendszerből. Ezt követően a rendszergazda egyesével megadhatja azokat szabályokat, amelyeket engedélyezni kíván valamit. A szabályok közül elöszőr mindig azokat adjuk meg, amikkel engedélyezünk, majd azokat, amikkel tiltunk. Az alapfeltételezés szerint tehát a szabályokkal megadunk mindent, amit engedélyezünk a tűzfalon, és minden más pedig automatikusan tiltásra kerül.
Ezt követően hozzunk létre egy könyvtárat, ahol majd tárolni a fogjuk a tűzfalunk beállításait. Ebben a példában a /etc/firewall/ könyvtárat fogjuk használni erre a célra. Lépjünk be ebbe a könyvtárba és hozzunk létre egy fwrules nevű állományt, ahogy azt az rc.conf-ban is megadtuk. Természetesen ez az elnevezés sem kötött, nyugodtan megváltoztathatjuk bármire. A leírás pusztán csak egy példát ad erre.
Most pedig nézzünk egy megjegyzésekkel tűzdelt szabályokat tartalmazó állományt:
# Definiálunk egy parancsot a tűzfalat összeállító program elérésére # (ld. /etc/rc.firewall). Remélhetőleg így könnyebb is lesz olvasni. fwcmd="/sbin/ipfw" # Megadjuk a külső hálózati csatolót. Ha felhasználói ppp-t használunk, # akkor ez valószínűleg a tun0 lesz. oif="tun0" # Megadjuk a belső hálózati csatolót. Ez többnyire (a helyi hálózaton # is elerhető) hálózati kártyánk lesz. Mindenképpen ellenőrizzük, hogy # jól adtuk-e meg! iif="fxp0" # Töröltessünk a rendszerben jelenleg érvényben levő össze szabályt, # még mielőtt betöltenénk a sajátjainkat. $fwcmd -f flush # Ellenőrizzük az összes csomag állapotát. $fwcmdl add check-state # Tiltsuk le az elrejtést a külső csatolón. $fwcmd add deny ip from any to any in via $oif not verrevpath # Engedélyezzünk minden általunk kezdeményezett kapcsolatot és # tartsuk is meg az állapotukat. Ellenben tiltsunk minden olyat, # amihez nincs semmilyen dinamikus szabály. $fwcmd add allow ip from me to any out via $oif keep-state $fwcmd add deny tcp from any to any established in via $oif # Engedélyezzünk minden kapcsolatot a helyi hálózaton. $fwcmd add allow ip from any to any via $iif # Engedélyezzük a helyi (gépen belüli) forgalmat. $fwcmd add allow all from any to any via lo0 $fwcmd add deny all from any to 127.0.0.0/8 $fwcmd add deny ip from 127.0.0.0/8 to any # Engedélyezzük az Internetről hozzánk látogatóknak, hogy elérhessék # a 22-es ill. a 80-as portokat. Így ez a példa kifejezetten az SSH # (sshd) es HTTP (webszerver) típusú kapcsolatokat engedélyezi. $fwcmd add allow tcp from any to me dst-port 22,80 in via $oif setup keep-state # Engedélyezzük az ICMP csomagokat: vegyük ki a 8-as típust, ha nem # szeretnénk a gépünket pingek által elérhetővé tenni. $fwcmd add allow icmp from any to any via $oif icmptypes 0,3,8,11,12 # Tiltsunk és naplózzunk minden mást. $fwcmd add deny log ip from any to any
Most már van egy teljesen működőképes tűzfalunk, amely csak és kizárólag a 22-es, 80-es portokon enged kapcsolatot létesíteni, és minden egyéb próbálkozást naplóz. Így már nyugodtan újraindíthatjuk a rendszerünket, és ezt követően a tűzfalunk magától elindul és a hozzá tartozó szabályrendszer betöltődik. Ha bármilyen hibát találna benne vagy problémába ütközne a használata során, esetleg valamilyen építő jellegű javaslata van, kérem, keressen meg e-mailben!
Ha kérdése van a FreeBSD-vel kapcsolatban, a következő
címre írhat (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése,
kérjük erre a címre írjon: <gabor@FreeBSD.org>.