bd03117751
Approved by: gabor (mentor) Obtained from: The FreeBSD Hungarian Documentation Project
410 lines
19 KiB
Text
410 lines
19 KiB
Text
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
|
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//HU">
|
|
%articles.ent;
|
|
]>
|
|
|
|
<!-- The FreeBSD Hungarian Documentation Project
|
|
Translated by: PALI, Gabor <pgj@FreeBSD.org>
|
|
Original Revision: 1.42 -->
|
|
|
|
<article lang="hu">
|
|
<articleinfo>
|
|
<title>Tûzfal létrehozása
|
|
betárcsázós kapcsolatokhoz &os;-vel</title>
|
|
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Marc</firstname>
|
|
<surname>Silver</surname>
|
|
|
|
<affiliation>
|
|
<address><email>marcs@draenor.org</email></address>
|
|
</affiliation>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<pubdate>$FreeBSD$</pubdate>
|
|
|
|
<legalnotice id="trademarks" role="trademarks">
|
|
&tm-attrib.freebsd;
|
|
&tm-attrib.general;
|
|
</legalnotice>
|
|
|
|
<abstract>
|
|
<para>Ebben a cikkben bemutatjuk, hogyan lehet beállítani
|
|
tûzfalat a PPP-típusú kapcsolatokhoz a &os; valamint
|
|
az IPFW segítségével, különös
|
|
tekintettel az olyan esetekre, ahol dinamikusan kiosztott
|
|
IP-címmel használjuk a rendszert. Ez a
|
|
leírás azonban nem tartalmazza magának a
|
|
PPP-kapcsolatnak a beállítását. A
|
|
PPP-kapcsolatok létrehozásához kérjük
|
|
tekintse át a &man.ppp.8; man oldalt.</para>
|
|
|
|
<para><emphasis>Fordította: &a.hu.pgj;</emphasis></para>
|
|
</abstract>
|
|
</articleinfo>
|
|
|
|
<sect1 id="preface">
|
|
<title>Bevezetés</title>
|
|
|
|
<para>A leírásban felvázoljuk azokat a
|
|
lépéseket, amelyek szükségesek az Internet
|
|
szolgáltatónk által dinamikusan kiosztott
|
|
IP címmel rendelkezõ rendszerünk
|
|
tûzfalának kiépítéséhez.
|
|
Habár ezen cikk szerzõje minden megtett, hogy ez a
|
|
leírás minél hasznosabb és pontosabb
|
|
legyen, örömmel várja az esetleges
|
|
megjegyzéseket és javaslatokat a
|
|
<email>marcs@draenor.org</email> címen.</para>
|
|
</sect1>
|
|
|
|
<sect1 id="kernel">
|
|
<title>Beállítások a rendszermagban</title>
|
|
|
|
<para>Az IPFW használatához bele kell fordítani
|
|
némi támogatást a rendszer magjába. Ha
|
|
többet szeretne tudni a rendszermag
|
|
újrafordításáról,
|
|
kérjük, olvassa el a <ulink
|
|
url="&url.books.handbook;/kernelconfig.html"> a rendszermag
|
|
beállításáról szóló
|
|
fejezetet a Kézikönyvben</ulink>. Az IPFW
|
|
támogatásához az alábbi sorokat kell
|
|
még hozzáírni a rendszermag
|
|
konfigurációs állományához:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><literal>options IPFIREWALL</literal></term>
|
|
|
|
<listitem>
|
|
<para>Elérhetõvé teszi a rendszermag
|
|
tûzfalért felelõs rutinjait.</para>
|
|
|
|
<note><para>A cikk a &os; 5.X-es verziójának
|
|
használatát feltételezi. Azoknak a
|
|
felhasználóknak, akik még a &os; 4.X-es
|
|
verzióját használják, a
|
|
rendszermagjukat a <emphasis>IPFW2</emphasis>
|
|
támogatással kell újrafordítaniuk.
|
|
A &os; 4.X felhasználóknak továbbá
|
|
javasolt elolvasniuk ezzel kapcsolatosan a &man.ipfw.8; man
|
|
oldalt, kiemelten odafigyelve a
|
|
<emphasis>IPFW2 HASZNÁLATA A &os;-STABLE-ben</emphasis>
|
|
fejezetre.</para></note>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>options IPFIREWALL_VERBOSE</literal></term>
|
|
|
|
<listitem>
|
|
<para>Naplózott csomagok küldése a
|
|
rendszernaplóba.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><literal>options
|
|
IPFIREWALL_VERBOSE_LIMIT=<replaceable>500</replaceable></literal></term>
|
|
|
|
<listitem>
|
|
<para>Korlátozza az egyezõ tartalmú sorok
|
|
naplózásának mennyiségét.
|
|
Ezzel lehetõvé válik, hogy a
|
|
rendszernapló elárasztásának
|
|
kockázata nélkül naplózzuk a
|
|
tûzfal minden egyes tevékenységét,
|
|
például egy "denial of service" (DoS)
|
|
típusú támadás esetén.
|
|
Itt az <replaceable>500</replaceable> egy viszonylag jó
|
|
kiindulási érték lehet, de nyugodtan
|
|
változtathajuk igényeink szerint.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<warning><para>Amikor a rendszermag újrafordítása
|
|
befejezõdött, <emphasis>ne indítsuk újra
|
|
egybõl</emphasis> a rendszerünket. Ha így
|
|
cselekszünk, könnyedén kizárhatjuk magunkat
|
|
belõle! Csak azután szabad újraindítanunk
|
|
és ezzel mûködésbe hozni a tûzfalat,
|
|
miután a hozzátartozó szabályok a
|
|
megfelelõ helyre kerültek és minden hozzájuk
|
|
kapcsolódó konfigurációs
|
|
állományt megfelelõen
|
|
beállítottunk.</para></warning>
|
|
</sect1>
|
|
|
|
<sect1 id="rcconf">
|
|
<title>Az <filename>/etc/rc.conf</filename> módosítása
|
|
a tûzfal betöltéséhez</title>
|
|
|
|
<para>Az <filename>/etc/rc/rc.conf</filename> konfigurációs
|
|
állományt kell némileg átírnunk
|
|
a tûzfal betöltéséhez, valamint a
|
|
hozzátartozó szabályokat tartalmazó
|
|
állomány helyének megadásához.
|
|
Adjuk tehát hozzá az alábbi sorokat a
|
|
<filename>/etc/rc/rc.conf</filename>-hoz:</para>
|
|
|
|
<programlisting>firewall_enable="YES"
|
|
firewall_script="/etc/firewall/fwrules"</programlisting>
|
|
|
|
<para>Ha többet szeretne tudni ezeknek a soroknak a
|
|
jelentésérõl, akkor nézze át a
|
|
<filename>/etc/defaults/rc.conf</filename> állományt
|
|
és olvassa el a &man.rc.conf.5; man oldalt.</para>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title>A PPP-ben levõ címfordítás
|
|
bekapcsolása</title>
|
|
|
|
<para>Amennyiben a helyi hálózatunkban fellelhetõ
|
|
további kliensek számára is szeretnénk
|
|
elérhetõvé tenni az Internetet az
|
|
átjárónkon át, szükségünk
|
|
lesz a PPP-ben található hálózati
|
|
címfordítás (Network Address Translation, NAT)
|
|
beindítására. Ezt az
|
|
<filename>/etc/rc.conf</filename>-ben a következõ
|
|
sorok hozzáadásával tehetjük meg:</para>
|
|
|
|
<programlisting>ppp_enable="YES"
|
|
ppp_mode="auto"
|
|
ppp_nat="YES"
|
|
ppp_profile="<replaceable>internet_beallitasok</replaceable>"</programlisting>
|
|
|
|
<note><para>Ne felejtsük el kicserélni az
|
|
<literal>internet_beallitasok</literal>-at saját
|
|
betárcsázós beállításait
|
|
tartalmazó állomány nevére!</para></note>
|
|
</sect1>
|
|
|
|
<sect1 id="rules">
|
|
<title>A tûzfal szabályai</title>
|
|
|
|
<para>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õ.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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
|
|
<filename class="directory">/etc/firewall/</filename>
|
|
könyvtárat fogjuk használni erre a célra.
|
|
Lépjünk be ebbe a könyvtárba és hozzunk
|
|
létre egy <filename>fwrules</filename> nevû
|
|
állományt, ahogy azt az <filename>rc.conf</filename>-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.</para>
|
|
|
|
<para>Most pedig nézzünk egy megjegyzésekkel
|
|
tûzdelt szabályokat tartalmazó
|
|
állományt:</para>
|
|
|
|
<programlisting># 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</programlisting>
|
|
|
|
<para>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!</para>
|
|
</sect1>
|
|
|
|
<sect1>
|
|
<title>Kérdések</title>
|
|
|
|
<qandaset>
|
|
<qandaentry>
|
|
<question>
|
|
<para><errorname>limit 500 reached on entry 2800</errorname>.
|
|
Ilyen és ehhez hasonló hibaüzeneteket kapok,
|
|
miután a számítógépem abbahagyja
|
|
a szabályhoz tartozó eldobott csomagok
|
|
naplózását. Mûködik még
|
|
ilyenkor ea tûzfalam?</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>Ez csupán annyit jelent, hogy az adott szabályt
|
|
elérte a hozzátartozó maximális
|
|
naplóbejegyzést. A szabály maga még
|
|
mindig aktív, viszont addig nem fog tudni naplózni,
|
|
amíg nem töröljük valahogy a
|
|
bejegyzésszámlálóját.
|
|
Például így lehet törölni az
|
|
említett számlálót:
|
|
</para>
|
|
|
|
<screen>&prompt.root; <userinput>ipfw resetlog</userinput></screen>
|
|
|
|
<para>Vagy úgy is elkerülhetjük ezt a
|
|
hibaüzenetet, ha növeljük a szabályhoz
|
|
tartozó naplóbejegyzések számát
|
|
a rendszermag konfigurációs
|
|
állományában, az
|
|
<option>IPFIREWALL_VERBOSE_LIMIT</option>
|
|
beállítás
|
|
megváltoztatásával, a fentebb leírt
|
|
módon. A rendszermag újrafordítása
|
|
eacute;s a rendszer újraindítása
|
|
nélkül is megváltoztatható ez a
|
|
korlát, a net.inet.ip.fw.verbose_limit &man.sysctl.8;
|
|
használatával.</para>
|
|
</answer>
|
|
</qandaentry>
|
|
|
|
<qandaentry>
|
|
<question>
|
|
<para>Valami nem stimmel. Követtem a leírásban
|
|
szereplõ utasításokat pontról pontra, de
|
|
kizártam magamat.</para>
|
|
</question>
|
|
|
|
<answer>
|
|
<para>A leírás feltételezi, hogy
|
|
<emphasis>felhasználói ppp-t</emphasis>
|
|
használunk, és ezért a megadott
|
|
szabályok a <devicename>tun0</devicename> (amely megfelel
|
|
a &man.ppp.8; (azaz <emphasis>felhasználói ppp,
|
|
user-ppp</emphasis>) által létrehozott elsõ
|
|
kapcsolatnak) felületen keresztül mûködnek.
|
|
A további kapcsolatok rendre a
|
|
<devicename>tun1</devicename>, <devicename>tun2</devicename> stb.
|
|
neveket használják.</para>
|
|
|
|
<para>Továbbá érdemes megjegyezni, hogy a
|
|
&man.pppd.8; ehelyett a <devicename>ppp0</devicename>
|
|
felületet használja, így tehát ha a
|
|
PPP-kapcsolatot a &man.pppd.8;-al indítottuk el, akkor a
|
|
<devicename>tun0</devicename> neveket mindenhol
|
|
<devicename>ppp0</devicename> nevekre kell cserélni.
|
|
Íme egy példa arra, hogyan írjuk át
|
|
gyorsan a szabályainkat ilyen alakúra (az
|
|
eredeti szabályokat pedig
|
|
<filename>fwrules_tun0</filename> néven
|
|
elmentjük):</para>
|
|
|
|
<screen>&prompt.user; <userinput>cd /etc/firewall</userinput>
|
|
/etc/firewall&prompt.user; <userinput>su</userinput>
|
|
<prompt>Password:</prompt>
|
|
/etc/firewall&prompt.root; <userinput>mv fwrules fwrules_tun0</userinput>
|
|
/etc/firewall&prompt.root; <userinput>cat fwrules_tun0 | sed s/tun0/ppp0/g > fwrules</userinput></screen>
|
|
|
|
<para>Legkönnyebben úgy tudjuk kideríteni, hogy
|
|
van &man.ppp.8;-t vagy éppen &man.pppd.8;-t
|
|
használunk, hogy átnézzük az
|
|
&man.ifconfig.8; kimenetét, amikor már van
|
|
aktív kapcsolatunk. Például, ha a
|
|
kapcsolatot a &man.pppd.8;-vel hoztuk létre, akkor valami
|
|
ilyesmit kellene látnunk (csak a lényeget
|
|
mutatjuk):</para>
|
|
|
|
<screen>&prompt.user; <userinput>ifconfig</userinput>
|
|
<emphasis>(kimarad...)</emphasis>
|
|
ppp0: flags=<replaceable>8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524</replaceable>
|
|
inet <replaceable>xxx.xxx.xxx.xxx</replaceable> --> <replaceable>xxx.xxx.xxx.xxx</replaceable> netmask <replaceable>0xff000000</replaceable>
|
|
<emphasis>(kimarad...)</emphasis></screen>
|
|
|
|
<para>Másrészt viszont a &man.ppp.8;-vel (vagyis
|
|
<emphasis>felhasználói ppp</emphasis>-vel)
|
|
létesített kapcsolatok esetén
|
|
nagyjából ezt:</para>
|
|
|
|
<screen>&prompt.user; <userinput>ifconfig</userinput>
|
|
<emphasis>(kimarad...)</emphasis>
|
|
ppp0: flags=<replaceable>8010<POINTOPOINT,MULTICAST> mtu 1500</replaceable>
|
|
<emphasis>(kimarad...)</emphasis>
|
|
tun0: flags=<replaceable>8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524</replaceable>
|
|
<emphasis>(IPv6 kimarad...)</emphasis>
|
|
inet <replaceable>xxx.xxx.xxx.xxx</replaceable> --> <replaceable>xxx.xxx.xxx.xxx</replaceable> netmask <replaceable>0xffffff00</replaceable>
|
|
Opened by PID <replaceable>xxxxx</replaceable>
|
|
<emphasis>(kimarad...)</emphasis></screen>
|
|
</answer>
|
|
</qandaentry>
|
|
</qandaset>
|
|
</sect1>
|
|
</article>
|