       Tu"zfal letrehozasa betarcsazos kapcsolatokhoz FreeBSD-vel

  Marc Silver

   <marcs@draenor.org>

   $FreeBSD:
   release/9.1.0/hu_HU.ISO8859-2/articles/dialup-firewall/article.sgml
   38826 2012-05-17 19:12:14Z hrs $

   A FreeBSD a FreeBSD Foundation bejegyzett vedjegye.

   A gyartok es terjeszto"k altal hasznalt megnevezesek ko:zu:l sok
   vedjegy jogot ko:vetel. Ahol ilyen megnevezes tu"nik fel ebben a
   dokumentumban, es a FreeBSD Projektnek tudomasa volt a
   vedjegyro"l, a megnevezest a "(TM)" vagy a "(R)" szimbolum
   ko:veti.

   Ebben a cikkben bemutatjuk, hogyan lehet beallitani tu"zfalat a
   PPP-tipusu kapcsolatokhoz a FreeBSD valamint az IPFW segitsegevel,
   ku:lo:no:s tekintettel az olyan esetekre, ahol dinamikusan
   kiosztott IP-cimmel hasznaljuk a rendszert. Ez a leiras azonban
   nem tartalmazza maganak a PPP-kapcsolatnak a beallitasat. A
   PPP-kapcsolatok letrehozasahoz kerju:k tekintse at a ppp(8) man
   oldalt.

   Forditotta: Pali Gabor, utolso elleno"rzes: 2010.11.28.

     --------------------------------------------------------------

1. Bevezetes

   A leirasban felvazoljuk azokat a lepeseket, amelyek szu:ksegesek
   az Internet szolgaltatonk altal dinamikusan kiosztott IP cimmel
   rendelkezo" rendszeru:nk tu"zfalanak kiepitesehez. Habar ezen cikk
   szerzo"je minden megtett, hogy ez a leiras minel hasznosabb es
   pontosabb legyen, o:ro:mmel varja az esetleges megjegyzeseket es
   javaslatokat a <marcs@draenor.org> cimen.

     --------------------------------------------------------------

2. Beallitasok a rendszermagban

   Az IPFW hasznalatahoz bele kell forditani nemi tamogatast a
   rendszer magjaba. Ha to:bbet szeretne tudni a rendszermag
   ujraforditasarol, kerju:k, olvassa el a a rendszermag
   beallitasarol szolo fejezetet a Keziko:nyvben. Az IPFW
   tamogatasahoz az alabbi sorokat kell meg hozzairni a rendszermag
   konfiguracios allomanyahoz:

   options IPFIREWALL

           Elerheto"ve teszi a rendszermag tu"zfalert felelo"s
           rutinjait.

             Megjegyzes: A cikk a FreeBSD 5.X-es verziojanak
             hasznalatat feltetelezi. Azoknak a felhasznaloknak, akik
             meg a FreeBSD 4.X-es verziojat hasznaljak, a
             rendszermagjukat a IPFW2 tamogatassal kell
             ujraforditaniuk. A FreeBSD 4.X felhasznaloknak tovabba
             javasolt elolvasniuk ezzel kapcsolatosan a ipfw(8) man
             oldalt, kiemelten odafigyelve a IPFW2 HASZNALATA A
             FreeBSD-STABLE-ben fejezetre.

   options IPFIREWALL_VERBOSE

           Naplozott csomagok ku:ldese a rendszernaploba.

   options IPFIREWALL_VERBOSE_LIMIT=500

           Korlatozza az egyezo" tartalmu sorok naplozasanak
           mennyiseget. Ezzel leheto"ve valik, hogy a rendszernaplo
           elarasztasanak kockazata nelku:l naplozzuk a tu"zfal
           minden egyes tevekenyseget, peldaul egy "denial of
           service" (DoS) tipusu tamadas eseten. Itt az 500 egy
           viszonylag jo kiindulasi ertek lehet, de nyugodtan
           valtoztathajuk igenyeink szerint.

     Figyelem: Amikor a rendszermag ujraforditasa befejezo"do:tt, ne
     inditsuk ujra egybo"l a rendszeru:nket. Ha igy cselekszu:nk,
     ko:nnyeden kizarhatjuk magunkat belo"le! Csak azutan szabad
     ujrainditanunk es ezzel mu"ko:desbe hozni a tu"zfalat, miutan a
     hozza tartozo szabalyok a megfelelo" helyre keru:ltek es minden
     hozzajuk kapcsolodo konfiguracios allomanyt megfelelo"en
     beallitottunk.

     --------------------------------------------------------------

3. Az /etc/rc.conf modositasa a tu"zfal beto:ltesehez

   Az /etc/rc/rc.conf konfiguracios allomanyt kell nemileg atirnunk a
   tu"zfal beto:ltesehez, valamint a hozza tartozo szabalyokat
   tartalmazo allomany helyenek megadasahoz. Adjuk tehat hozza az
   alabbi sorokat a /etc/rc/rc.conf-hoz:

 firewall_enable="YES"
 firewall_script="/etc/firewall/fwrules"

   Ha to:bbet szeretne tudni ezeknek a soroknak a jelentesero"l,
   akkor nezze at a /etc/defaults/rc.conf allomanyt es olvassa el a
   rc.conf(5) man oldalt.

     --------------------------------------------------------------

4. A PPP-ben levo" cimforditas bekapcsolasa

   Amennyiben a helyi halozatunkban fellelheto" tovabbi kliensek
   szamara is szeretnenk elerheto"ve tenni az Internetet az
   atjaronkon at, szu:ksegu:nk lesz a PPP-ben talalhato halozati
   cimforditas (Network Address Translation, NAT) beinditasara. Ezt
   az /etc/rc.conf-ben a ko:vetkezo" sorok hozzaadasaval tehetju:k
   meg:

 ppp_enable="YES"
 ppp_mode="auto"
 ppp_nat="YES"
 ppp_profile="internet_beallitasok"

     Megjegyzes: Ne felejtsu:k el kicserelni az internet_beallitasok
     erteket a sajat betarcsazos beallitasait tartalmazo allomany
     nevere! Ennek nevenek meg kell egyeznie a beallitasaink
     /etc/ppp/ppp.conf allomanyban szereplo" nevevel.

     --------------------------------------------------------------

5. A tu"zfal szabalyai

   Most fogjuk megadni a rendszeru:nk tu"zfalanak szabalyait. Az itt
   ismertetesre keru:lo" szabalyok egy olyan altalanos sablont
   kivannak bemutatni, amely a legto:bb betarcsazos felhasznalo
   szamara megfelelnek. Habar ketsegtelen, hogy nem fogja mindenki
   igenyeit to:keletesen kielegiteni, azonban segit megmutatni az
   IPFW mu"ko:desenek alapelveit es ko:nnyeden tovabb is
   fejlesztheto".

   Elso"kent kezdju:k a "zart tu"zfal" alapjaival. A zart tu"zfal
   lenyegeben azon a feltevesen alapszik, hogy alapveto"en mindent
   kizarunk a rendszerbo"l. Ezt ko:veto"en a rendszergazda egyesevel
   megadhatja azokat szabalyokat, amelyeket engedelyezni kivan
   valamit. A szabalyok ko:zu:l elo:szo"r mindig azokat adjuk meg,
   amikkel engedelyezu:nk, majd azokat, amikkel tiltunk. Az
   alapfeltetelezes szerint tehat a szabalyokkal megadunk mindent,
   amit engedelyezu:nk a tu"zfalon, es minden mas pedig automatikusan
   tiltasra keru:l.

   Ezt ko:veto"en hozzunk letre egy ko:nyvtarat, ahol majd tarolni a
   fogjuk a tu"zfalunk beallitasait. Ebben a peldaban a
   /etc/firewall/ ko:nyvtarat fogjuk hasznalni erre a celra. Lepju:nk
   be ebbe a ko:nyvtarba es hozzunk letre egy fwrules nevu"
   allomanyt, ahogy azt az rc.conf-ban is megadtuk. Termeszetesen ez
   az elnevezes sem ko:to:tt, nyugodtan megvaltoztathatjuk barmire. A
   leiras pusztan csak egy peldat ad erre.

   Most pedig nezzu:nk egy megjegyzesekkel tu"zdelt szabalyokat
   tartalmazo allomanyt:

 # Definialunk egy parancsot a tu"zfalat o:sszeallito program eleresere
 # (ld. /etc/rc.firewall). Remelheto"leg igy ko:nnyebb is lesz olvasni.
 fwcmd="/sbin/ipfw"

 # Megadjuk a ku:lso" halozati csatolot. Ha felhasznaloi ppp-t hasznalunk,
 # akkor ez valoszinu"leg a tun0 lesz.
 oif="tun0"

 # Megadjuk a belso" halozati csatolot. Ez to:bbnyire (a helyi halozaton
 # is elerheto") halozati kartyank lesz. Mindenkeppen elleno"rizzu:k, hogy
 # jol adtuk-e meg!
 iif="fxp0"

 # To:ro:ltessu:nk a rendszerben jelenleg ervenyben levo" o:ssze szabalyt,
 # meg mielo"tt beto:ltenenk a sajatjainkat.
 $fwcmd -f flush

 # Elleno"rizzu:k az o:sszes csomag allapotat.
 $fwcmdl add check-state

 # Tiltsuk le az elrejtest a ku:lso" csatolon.
 $fwcmd add deny ip from any to any in via $oif not verrevpath

 # Engedelyezzu:nk minden altalunk kezdemenyezett kapcsolatot es
 # tartsuk is meg az allapotukat. Ellenben tiltsunk minden olyat,
 # amihez nincs semmilyen dinamikus szabaly.
 $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

 # Engedelyezzu:nk minden kapcsolatot a helyi halozaton.
 $fwcmd add allow ip from any to any via $iif

 # Engedelyezzu:k a helyi (gepen belu: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

 # Engedelyezzu:k az Internetro"l hozzank latogatoknak, hogy elerhessek
 # a 22-es ill. a 80-as portokat. Igy ez a pelda kifejezetten az SSH
 # (sshd) es HTTP (webszerver) tipusu kapcsolatokat engedelyezi.
 $fwcmd add allow tcp from any to me dst-port 22,80 in via $oif setup keep-state

 # Engedelyezzu:k az ICMP csomagokat: vegyu:k ki a 8-as tipust, ha nem
 # szeretnenk a gepu:nket pingek altal elerheto"ve tenni.
 $fwcmd add allow icmp from any to any via $oif icmptypes 0,3,8,11,12

 # Tiltsunk es naplozzunk minden mast.
 $fwcmd add deny log ip from any to any

   Most mar van egy teljesen mu"ko:do"kepes tu"zfalunk, amely csak es
   kizarolag a 22-es, 80-es portokon enged kapcsolatot letesiteni, es
   minden egyeb probalkozast naploz. Igy mar nyugodtan
   ujraindithatjuk a rendszeru:nket, es ezt ko:veto"en a tu"zfalunk
   magatol elindul es a hozza tartozo szabalyrendszer beto:lto"dik.
   Ha barmilyen hibat talalna benne vagy problemaba u:tko:zne a
   hasznalata soran, esetleg valamilyen epito" jellegu" javaslata
   van, kerem, keressen meg e-mailben!

     --------------------------------------------------------------

6. Kerdesek

   6.1. "limit 500 reached on entry 2800". Ilyen es ehhez hasonlo
   hibau:zeneteket kapok, miutan a szamitogepem abbahagyja a
   szabalyhoz tartozo eldobott csomagok naplozasat. Mu"ko:dik meg
   ilyenkor ea tu"zfalam?

   6.2. Valami nem stimmel. Ko:vettem a leirasban szereplo"
   utasitasokat pontrol pontra, de kizartam magamat.

   6.1. "limit 500 reached on entry 2800". Ilyen es ehhez hasonlo
   hibau:zeneteket kapok, miutan a szamitogepem abbahagyja a
   szabalyhoz tartozo eldobott csomagok naplozasat. Mu"ko:dik meg
   ilyenkor ea tu"zfalam?

   Ez csupan annyit jelent, hogy az adott szabalyt elerte a hozza
   tartozo maximalis naplobejegyzest. A szabaly maga meg mindig
   aktiv, viszont addig nem fog tudni naplozni, amig nem to:ro:lju:k
   valahogy a bejegyzesszamlalojat. Peldaul igy lehet to:ro:lni az
   emlitett szamlalot:

 # ipfw resetlog

   Vagy ugy is elkeru:lhetju:k ezt a hibau:zenetet, ha no:velju:k a
   szabalyhoz tartozo naplobejegyzesek szamat a rendszermag
   konfiguracios allomanyaban, az IPFIREWALL_VERBOSE_LIMIT beallitas
   megvaltoztatasaval, a fentebb leirt modon. A rendszermag
   ujraforditasa eacute;s a rendszer ujrainditasa nelku:l is
   megvaltoztathato ez a korlat, a net.inet.ip.fw.verbose_limit
   sysctl(8) hasznalataval.

   6.2. Valami nem stimmel. Ko:vettem a leirasban szereplo"
   utasitasokat pontrol pontra, de kizartam magamat.

   A leiras feltetelezi, hogy felhasznaloi ppp-t hasznalunk, es ezert
   a megadott szabalyok a tun0 (amely megfelel a ppp(8) (azaz
   felhasznaloi ppp, user-ppp) altal letrehozott elso" kapcsolatnak)
   felu:leten keresztu:l mu"ko:dnek. A tovabbi kapcsolatok rendre a
   tun1, tun2 stb. neveket hasznaljak.

   Tovabba erdemes megjegyezni, hogy a pppd(8) ehelyett a ppp0
   felu:letet hasznalja, igy tehat ha a PPP-kapcsolatot a pppd(8)-al
   inditottuk el, akkor a tun0 neveket mindenhol ppp0 nevekre kell
   cserelni. Ime egy pelda arra, hogyan irjuk at gyorsan a
   szabalyainkat ilyen alakura (az eredeti szabalyokat pedig
   fwrules_tun0 neven elmentju:k):

 % cd /etc/firewall
             /etc/firewall% su
             Password:
             /etc/firewall# mv fwrules fwrules_tun0
             /etc/firewall# cat fwrules_tun0 | sed s/tun0/ppp0/g > fwrules

   Legko:nnyebben ugy tudjuk kideriteni, hogy van ppp(8)-t vagy eppen
   pppd(8)-t hasznalunk, hogy atnezzu:k az ifconfig(8) kimenetet,
   amikor mar van aktiv kapcsolatunk. Peldaul, ha a kapcsolatot a
   pppd(8)-vel hoztuk letre, akkor valami ilyesmit kellene latnunk
   (csak a lenyeget mutatjuk):

 % ifconfig
             (kimarad...)
             ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524
                     inet xxx.xxx.xxx.xxx --> xxx.xxx.xxx.xxx netmask 0xff000000
             (kimarad...)

   Masreszt viszont a ppp(8)-vel (vagyis felhasznaloi ppp-vel)
   letesitett kapcsolatok eseten nagyjabol ezt:

 % ifconfig
             (kimarad...)
             ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500
             (kimarad...)
             tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524
                     (IPv6 kimarad...)
                     inet xxx.xxx.xxx.xxx --> xxx.xxx.xxx.xxx netmask 0xffffff00
                     Opened by PID xxxxx
             (kimarad...)

     --------------------------------------------------------------

  Ha kerdese van a FreeBSD-vel kapcsolatban, a ko:vetkezo" cimre irhat
              (angolul): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kerdese, kerju:k erre a cimre
                      irjon: <gabor@FreeBSD.org>.
