Ennél a pontnál a rendszermag és a többi szükséges csomag már telepítve van. Minden hálózati IP-címet, átjárót és DNS-címet be kell állítani a MASQ-gépen. Ha nem tudod, hogyan kell a hálózati kártyákat beállítani, lásd az ide vonatkozó HOGYANokat akár a 2.4.x-hez: 2.6 , a 2.2.x-höz: 2.7 , vagy a 2.0.x-hez: 2.8 .
Most már csak az maradt hátra, hogy beállítsd az IP-tűzfal és maszkolás eszközeit ahhoz, hogy továbbítsák és maszkolzák a megfelelő csomagot a megfelelő gép felé.
** Ez a rész csak a LEHETŐ LEGKEVESEBB tűzfalszabályt tartalmazza ahhoz, hogy az IP-maszkolás működőképes legyen.
Miután az IPMASQ átment a tesztelésen (amint azt később leírd majd), nézd meg a 6.4.1 fejezetet a 2.4.x-es rendszermagok erősebb tűzfal-beállításaihoz, a biztonságosabb IPCHAINS szabályokat a 2.2.x rendszermagokhoz itt: 6.4.2 , és az erősebb IPFWADM szabályokat a 2.0.x rendszermagokhoz itt: 6.4.3 . Jegyezd meg, hogy ezek az erősebb szabályrendszerek csak sablonok, nem mások. Az igazán biztonságos tűzfalak kiépítéséhez nézd meg a következő fejezeteket: ( 2.4.x - 2.6 , 2.2.x - 2.7 , 2.0.x - 2.8 .
Ahelyett, hogy kézzel írnád be ezeket, ajánlom az Example könyvtár tallózását vagy ezen rc.firewall fájlok letöltését.
Jegyezd meg, hogy az IPCHAINS immár nem az elsődleges tűzfalbeállító eszköz a 2.4.x és 2.6.x rendszermagokhoz. Az új rendszermagok már az IPTABLES eszközeit használják, bár a 2.4.x még képes egy kompatibilitási modulon keresztül a régi IPCHAINS és IPFWADM szabályok felismerésére. Ebben az üzemmódban azonban NEM TUDJA az IPTABLES modulokat betölteni. Szintén megjegyzendő, hogy egyetlen 2.2.x IPMASQ modul sem kompatibilis a 2.4.x-szel. Ennek az okairól lásd a 7 fejezetet.
OK, ahogy feljebb is említetted, a /etc/rc.d/rc.local parancsfájl betölti a /etc/rc.d/rc.firewall nevű szkriptet minden újraindítás után. Ez a parancsfájl gondoskodik a szükséges IPMASQ-modulok betöltéséről, és magának a szolgáltatásnak a bekapcsolásáról. A fejlettebb telepítéseknél ugyanez a fájl biztonságos tűzfalbeállításokat is tartalmazhat.
Készítsd tehát el az /etc/rc.d/rc.firewall-iptables fájlt a következő ALAPSZINTŰ szabályrendszerrel:
<rc.firewall-iptables START>
#!/bin/sh # # rc.firewall-iptables FWVER=0.76 # # Alapszintű IP-maszkolás teszt a 2.4.x és 2.6.x rendszermagokhoz az # IPTABLES felhasználásával. # # Miután az maszkolást tesztelted, ezt az egyszerű szabály- # rendszert ajánlatos lecserélni egy biztonságosabbra # akár ennek a leírásnak a példájából, akár más beszerezhető # forrásból. # # # echo -e "\n\nLoading simple rc.firewall version $FWVER..\n" # Az 'iptables' program helye. # Ha a disztribució tartalmazza az iptablest, nagy valószínűséggel # ez az /sbin könyvtár. Ha magad fordítottad, akkor az /usr/local/sbin. # Használd a 'whereis iptables' parancsot, ha nem tudod. #IPTABLES=/sbin/iptables IPTABLES=/usr/local/sbin/iptables DEPMOD=/sbin/depmod MODPROBE=/sbin/modprobe # A belső és külső hálózati eszközök beállítása # # Minden IP-maszkolást használó hálózatnak legalább egy külső és egy # belső hálózattal kell rendelkeznie. A külső hálózatban zajlik a NAT, # a belsőben pedig az RFC1918 szerinti privát címkiosztás van. # # Ebben a páldában az "eth0" a külső és az "eth1" a belső. # # Megj.: ha ez nem felel meg a beállításaidnak, akkor változtasd meg # az EXTIF (külső) és az INTIF (belső) eszközre vonatkozó beállítást. # Például, ha modemet használsz: # # EXTIF="ppp0" # EXTIF="eth0" INTIF="eth1" echo " Külső interface: $EXTIF" echo " Belső interface: $INTIF" #====================================================================== # = Innentől nem szükséges bármit is változtatni a MASQ teszteléséhez = echo -en " loading modules: " # Meg kell nézni, hogy minden modulnak megvan-e a megfelelő függősége. # echo " - A rendszermag-modulok ellenőrzése..." $DEPMOD -a # # Az új IPTABLES-kóddal az alapvető MASQ-funkciók vagy modulárisak, vagy # már benne vannak a rendszermagban. Ez a HOGYAN MINDEN iptables funkciót # modulként mutat be. Ha a rendszermag jól lett fordítva, nincs szükség a # modulok kézzel való betöltésére. # # Megj.: a következő sorok csak informális jelleggel bírnak. Nincs ok arra, # hogy kézzel töltsd be őket, hacsak a rendszermag nincs elrontva, vagy # nincs szándékosan letiltva a modul-betöltője. # Az IP MASQ elindításakor a kiszolgálón a következő modulok automatikusan # betöltődnek: # # Megj.: csak a szükséges modulokat töltsd be. Minden jelenlegi MASQ-modult # felsorolunk alább, de megjegyzésbe tetted a betöltődés megakadályozására. # =============================================================== # A fő IPTABLES-modul betöltése - amikor az "iptables" parancsot kiadod, # automatikusan betöltődik. # echo -en "ip_tables, " $MODPROBE ip_tables # A szűrőmodul betöltése - akkor töltődik be, amikor a szűrési szabályokat # aktiválod. # # Betölti az állapotkövetési rendszert. # # A modul önmagában semmit sem csinál, csak a később betöltendő speciális # modulokkal - például "ip_conntrack_ftp" - dolgozik együtt. # # - Automatikusan betöltődik, amikor a MASQ kód elindul # # - Töltsd be kézzel, elkerülendő a rendszermag-időzítési problémáit # echo -en "ip_conntrack, " $MODPROBE ip_conntrack # FTP-állapotellenőrzés betöltése # Alapból engedélyezett, ha nincs rá szükség, rakj a következő sorok elé # jelet. # echo -en "ip_conntrack_ftp, " $MODPROBE ip_conntrack_ftp # IRC-állapotellenőrzes betöltése # Alapból engedélyezett, ha nincs rá szükség, rakj a következő sorok elé # jelet. # echo -en "ip_conntrack_irc, " $MODPROBE ip_conntrack_irc # Betölti az általános NAT-kódot. # echo -en "iptable_nat, " $MODPROBE iptable_nat # Betölti az FTP NAT-szolgáltatást az alap IPTABLES kódba. # Szükséges az aktív (non-PASV) FTP-hez. # Alapból engedélyezett, ha nincs rá szükség, rakj a következő sorok elé # jelet. # echo -en "ip_nat_ftp, " $MODPROBE ip_nat_ftp # Betölti az IRC NAT-szolgáltatást az alap IPTABLES kódba # Az IRC DCC-kérelmek lekezeléséhez szükséges echo -en "ip_nat_irc" $MODPROBE ip_nat_irc # Csak a teljesség kedvéért, itt a fennmaradó modulok és funkcióik listája. # Bizonyosak közülük csak akkor töltődnek be, ha a megfelelő "master"-modul # mar betöltődött. # -------------------------------------------------------------------- # ip_nat_snmp_basic - a modul lehetővé teszi bizonyos SNMP forgalom NAT-olását # # iptable_mangle - Ezzel a csomagokat olyan dolgokhoz tudod módosítani, # mint a TCPMSS stb. # -- # # ipt_mark - Ez a modul további feldolgozásra jelöl meg egy csomagot. # Automatikusan betölti az ipt_MARK modult. # # ipt_tcpmss - Ez a modul engedélyezi a távoli "agyhalott" tűzfalak TCP # MSS-beállításának manipulálását. # Automatikusan betölti a ipt_TCPMSS modult. # # ipt_limit - Ezzel a modullal limitálhatjuk a csomagokat # csomag per mp/perc/óra formátumban. # # ipt_multiport - Ez a modul bizonyos port-tartományok figyelését teszi # lehetővé az egyenkénti port figyelés helyett. # # ipt_state - Ezzel a modullal elkaphatsz bizonyos csomagokat # a különböző IP- és TCP-jelzők állása szerint. # # ipt_unclean - Ezzel a nem megfelelően beállított jelzővel rendelkező # csomagokat kaphatjuk el. # # iptable_filter - Ezzel lehetővé válik a csomagok eldobása (DROP), # visszautasítása (REJECT), vagy naplózása (LOG). # Automatikusan betölti a következőket: # # ipt_LOG - ezzel tudod csomagokat naplózni. # # ipt_REJECT - ez a cél eldobja a csomagot, és egy beállítható # ICMP-csomagot küld vissza a feladónak. # # echo ". A modulok betöltése kész." # KRITIKUS : engedélyezi az IP-továbbítást, amely alapesetben tiltott. # # Redhat-felhasználók: változtasd meg a beállításokat a # /etc/sysconfig/network fájlban: # # FORWARD_IPV4=false # helyett # FORWARD_IPV4=true # legyen. # echo " IP-továbbítás engedélyezése..." echo "1" > /proc/sys/net/ipv4/ip_forward # Dinamikus IP cím használata esetén: # # Ha az IP-címet dinamikusan (SLIP, PPP vagy DHCP segítségével) kapod, # engedélyezd a következő beállítást. Bekapcsolja a dinamikus cím-manipulálást, # amivel a Diald és hasonló programok használata egyszerűbb lesz. # echo " a DynamicAddr engedélyezése..." echo "1" > /proc/sys/net/ipv4/ip_dynaddr # Bekapcsolja az egyszerű IP-továbbítást és IP-maszkolást. # Megj.: az IPTABLES nyelvén az IP-maszkolás a forrás-NAT vagy S-NAT egy formája. # # Megj. #2: a következő egy olyan belső LAN-ra példa, amely a 192.168.0.x címmel, # a 255.255.255.0 alhálózati maszkkal vagy "24 bites" alhálózati maszkkal # rendelkezik, és a külső "eth0" eszközön át kapcsolódik az internetre. # Ez a példa engedi a kifele menő forgalmat, de a belső hálózat felé # irányulót már nem. # # ** Változtasd meg a fenti adatokat a saját beállításaidnak megfelelően. # Minden régebbi beállítás törlése # # Amíg máshogy nem állítjuk, az alapértelmezés az INPUT és OUTPUT lánc számára # az ACCEPT, a FORWARD-nak a DROP ( a REJECT nem megfelelő alapszabály). # # Az ACCEPT nem biztonsági rés? Nos, bizonyos szempontból igen, de ez a tesztfázis. # Ha az IPMASQ jól fog működni, azt javaslom futtasd le a rc.firewall-*-stronger # szabályt, amelynek alapértelmezett állapota DROP, bár ebben is vannak kritikus # szabályok, amelyek a IPMASQ szerverhez történő csatlakozáshoz szükségesek. echo " a meglévő szabályok törlése, és az alapértelmezett házirend beállítása..." $IPTABLES -P INPUT ACCEPT $IPTABLES -F INPUT $IPTABLES -P OUTPUT ACCEPT $IPTABLES -F OUTPUT $IPTABLES -P FORWARD DROP $IPTABLES -F FORWARD $IPTABLES -t nat -F echo " FWD: Allow all connections OUT and only existing and related ones IN" $IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT $IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT $IPTABLES -A FORWARD -j LOG echo " Enabling SNAT (MASQUERADE) functionality on $EXTIF" $IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE echo -e "\nrc.firewall-iptables v$FWVER done.\n" |
Amint végeztél a szerkesztéssel, tedd végrehajthatóvá a fájlt a chmod 700 /etc/rc.d/rc.firewall-iptables paranccsal.
Most, hogy a tűzfalszabályok készen vannak, futtatni kell őket minden újraindításkor. Ezt vagy kézzel minden alkalommal megteszed (ez nagyon durva lenne), vagy hozzáadd a rendszerindító parancsfájlokhoz. Két módszert mutatunk be:
1. Redhat és Redhat-közeli disztribúcióknál:
Két mód van a dolgok automatikus betöltésére: az /etc/rc.d/rc.local fájl vagy egy betöltő-szkript az /etc/rc.d/init.d könyvtárban. Az első könnyebb. Csak ezt kell beírnod az /etc/rc.d/rc.local fájl végére, és kész is:
echo "Az rc.firewall szabályrendszer betöltése... " /etc/rc.d/rc.firewall-iptables |
Ezzel az a baj, hogy a tűzfal nem indul el a rendszerindítási folyamat végéig. A követendő megközelítés az, hogy induljon el közvetlenül a hálózati alrendszer betöltődése után. Ehhez másold a következő fájlt az /etc/rc.d/init.d könyvtárba:
<firewall-iptables START>
#!/bin/sh
#
# chkconfig: 2345 11 89
#
# leírás: betölti az rc.firewall-iptables szabályrendszert.
#
# folyamatnév: firewall-iptables
# pid-fájl: /var/run/firewall.pid
# konfiguráció: /etc/rc.d/rc.firewall-iptables
# próba: true
# ----------------------------------------------------------------------------
# v02/09/02
#
# Part of the copyrighted and trademarked TrinityOS document.
# http://www.ecst.csuchico.edu/~dranch
#
# Written and Maintained by David A. Ranch
# dranch@trinnet.net
#
#
# ----------------------------------------------------------------------------
# Alapfüggvények betöltése
. /etc/rc.d/init.d/functions
# Megnézd, hogy van-e hálózatkezelés.
[ "XXXX${NETWORKING}" = "XXXXno" ] && exit 0
[ -x /sbin/ifconfig ] || exit 0
# A különböző iptables- és más héjprogramok helye
#
# Ha a disztribúciód tartalmazza az iptables-t, valószínűleg az az /sbin könyvtárban van.
# Ha kézzel állítottad be, akkor az alapértelmezett helye az /usr/local/sbin
#
# Használd a "whereis iptables" parancsot a hely kiderítéséhez, és ennek megfelelően
# állítsd be a következő sort
#
IPTABLES=/usr/local/sbin/iptables
# Lássuk, hogy hívták meg:
case "$1" in
start)
/etc/rc.d/rc.firewall-iptables
;;
stop)
echo -e "\nA tűzfal kiürítése és az alapértelmezett szabály DROP-ra állítása\n"
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT DROP
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -F -t nat
# Minden felhasználói lánc törlése
$IPTABLES -X
#
# Minden IPTABLES számláló törlése
$IPTABLES -Z
;;
restart)
$0 stop
$0 start
;;
status)
$IPTABLES -L
;;
mlist)
cat /proc/net/ip_conntrack
;;
*)
echo "Használat: firewall-iptables {start|stop|status|mlist}"
exit 1
esac
exit 0 |
Ha a parancsfájl a helyén van, akkor tedd futtathatóvá, majd gondoskod arról, hogy újraindításkor betöltődjön. Először tedd futtathatóvá a következő módon:
#Redhat-style # chmod 700 /etc/rc.d/init.d/firewall-iptables |
#Redhat style # chkconfig --level=345 firewall-iptables on |
#Redhat style # chkconfig --list firewall-iptables #A kimenetnek ehhez hasonlónak kell lennie: # firewall-iptables 0:off 1:off 2:off 3:on 4:on 5:on 6:off |
2. Slackware:
Két módszer van a Slackware-nél: az /etc/rc.d/rc.local vagy az /etc/rc.d/rc.inet2 fájl szerkesztése. Az első módszer a könnyebb. Add hozzá a következő sort:
echo "Az rc.firewall szabályrendszer betöltése.." /etc/rc.d/rc.firewall-iptables |
Megjegyzések arról, hogyan akarják a felhasználók megváltoztatni a fenti szabályrendszert:
Egy gépre vonatkozóan is meg tudod adni az maszkolást a fenti módszertől eltérően, ahol az az egész alhálózatra vonatkozik. Ha például csak 192.168.0.2 és a 192.168.0.8 gépeknek akarsz internet hozzáférést biztosítani, és egyetlen másiknak sem:
#!/bin/sh # # Kiragadott IPTABLES beállítás egyedi IP-maszkoláshoz és továbbításhoz # v0.61 # # Megj.: a következő példában IP-maszkolást csakis a 192.168.0.2 és 192.168.0.8 # gépeknek (255.255.255.0-as vagy "24 bites" alhálózati maszk, eth0 eszközzel # való internet-csatlakozással) biztosítjuk. # echo " - Az alapértelmezett FORWARD szabály DROP lesz." $IPTABLES -P FORWARD DROP echo " - A SNAT (IPMASQ) funkció engedélyezése $EXTIF eszközön." $IPTABLES -t nat -A POSTROUTING -o $EXTIF -s 192.168.0.2/32 -j MASQUERADE $IPTABLES -t nat -A POSTROUTING -o $EXTIF -s 192.168.0.8/32 -j MASQUERADE echo " - A FORWARD szabály beállítása 'DROP'-ra minden bejövő / unrelated forgalomra." $IPTABLES -A INPUT -i $EXTIF -m state --state NEW,INVALID -j DROP $IPTABLES -A FORWARD -i $EXTIF -m state --state NEW,INVALID -j DROP |
Gyakori hibák:
A kezdő IPMASQ-felhasználók általános hibája az, hogy az első parancsot csak a következő egyszerű formában használják:
IPTABLES: --------- iptables -t nat -A POSTROUTING -j MASQUERADE |
SOHA NE állítsd be az alapértelmezett szabályt (policy) MASQUERADING-re. Különben valaki módosítani tudja az útválasztási táblázatát úgy, hogy keresztül menjen az átjárónkon, és felhasználja azt a saját maga maszkolására!
Ezeket a sorokat is add hozzá a /etc/rc.d/rc.firewall fájlhoz, valamelyik másik rc fájlhoz vagy töltsd be kézzel, amikor szükséged van az maszkolásra.
Lásd a 6.4.1 fejezetet részletesebb infókért erősebb IPTABLES-szabályok felállítására. További részletekért az IPTABLES használatát illetően lásd a http://www.netfilter.org/ címet.
Jegyezd meg, hogy az IPFWADM már nem az alapértelmezett tűzfalbeállító eszköz az IP-maszkolás szabályaihoz a 2.1.x és 2.2.x rendszermagoknál. Ezek az új rendszermagok az IPCHAINS eszközkészletet használják. Ennek a váltásnak az okairól bővebb információt itt találsz: 7 fejezet.
Készítsd el az /etc/rc.d/rc.firewall-ipchains fájlt a következő alapszintű szabályrendszerrel:
<rc.firewall-ipchains START>
#!/bin/sh # # rc.firewall-ipchains FWVER="1.23" # # Alapszintű IP-maszkolás teszt a 2.1.x és 2.2.x rendszermagokhoz az # IPCHAINS felhasználásával. # # Miután az maszkolást tesztelted, ezt az egyszerű szabály- # rendszert ajánlatos lecserélni egy biztonságosabbra # akár ennek a leírásnak a példájából, akár más beszerezhető # forrásból. # # # echo -e "\n\nEgyszerű rc.firewall betöltése. Verziószám: $FWVER...\n" # Az ipchains és a rendszermag-modul programok helye # # # Ha a disztribució tartalmazza az ipchains-t, nagy valószínűséggel # ez az /sbin könyvtár. Ha magad fordítottad, akkor az /usr/local/sbin. # Használd a 'whereis ipchains' parancsot, ha nem tudod. # Változtasd meg ennek megfelelően a következő sorokat # # IPCHAINS=/sbin/ipchains IPCHAINS=/usr/local/sbin/ipchains DEPMOD=/sbin/depmod MODPROBE=/sbin/modprobe # A belső és külső hálózati eszközök beállítása # # Minden IP-maszkolást használó hálózatnak legalább egy külső és egy # belső hálózattal kell rendelkeznie. A külső hálózatban zajlik a NAT, # a belsőben pedig az RFC1918 szerinti privát címkiosztás van. # # Ebben a példában az "eth0" a külső és az "eth1" a belső. # # Megj.: ha ez nem felel meg a beállításaidnak, akkor változtasd meg # az EXTIF (külső) és az INTIF (belső) eszközre vonatkozó beállítást. # Például, ha modemet használsz: # # EXTIF="ppp0" # EXTIF="eth0" INTIF="eth1" echo " Külső interfész: $EXTIF" echo " Belső interfész: $INTIF" # A belső hálózat címe # # Ez a példafájl a 192.168.0.0 hálózatot használja a /24 vagy 255.255.255.0 # alhálózati maszkkal. # * Változtasd meg a saját beállításaidnak megfelelően! * # INTLAN="192.168.0.0/24" echo -e " Belső interfész: $INTLAN\n" # A szükséges IPMASQ-modulok betöltése # Megj.: csak azokat a modulokat töltsd be, amelyekre szükséged van. Minden # jelenleg használt modult felsorolunk, de kikommenteztünk a betöltődés meg- # akadályozása miatt. # echo " A szükséges IPMASQ-rendszermag-modulok betöltése..." # A függőségek meghatározása miatt szükséges. # $DEPMOD -a echo -en " Betöltött modulok: " # A megfelelő, PORT-módszert használó FTP-maszkoláshoz szükséges. # echo -en "FTP, " $MODPROBE ip_masq_ftp # Az UDP-n alapuló RealAudio maszkolását teszi lehetővé. E nélkül is működik, csak # TCP-módban. Ez a hangminőség romlását eredményezi. # #echo -en "RealAudio, " $MODPROBE ip_masq_raudio # Az IRC DCC fájlátviteli módját teszi lehetővé. # #echo -en "Irc, " #$MODPROBE ip_masq_irc # A Quake és a Quakeworld játékokhoz szükséges. Többjátékos üzemmódhoz való # a MASQ-kiszolgáló mögötti hálózatban. Ha Quake I, II vagy III verzióval szeretnéd # játszani, a második példát használd. # # Megj.: ha hibaüzeneteket kapsz a modul betöltésekor, régi, hibás rendszermagod # lehet. Frissítsd a rendszermagot a legújabb verzióra! # #echo -en "Quake, " #Quake I / QuakeWorld (26000 és 27000 portok) #$MODPROBE ip_masq_quake # #Quake I/II/III / QuakeWorld (26000, 27000, 27910, 27960 portok) #$MODPROBE ip_masq_quake 26000,27000,27910,27960 # A CuSeeme videokonferencia szoftver használatához szükséges. # #echo -en "CuSeeme, " #$MODPROBE ip_masq_cuseeme # A VDO-live videokonferencia szoftver használatához szükséges. # #echo -en "VdoLive " #$MODPROBE ip_masq_vdolive echo ". A modulok betöltése kész." # KRITIKUS : engedélyezi az IP-továbbítást, amely alapesetben tiltott. # # Redhat-felhasználók: változtasd meg az opciókat az # /etc/sysconfig/network fájlban: # # FORWARD_IPV4=false # helyett # FORWARD_IPV4=true # legyen. # echo " IP-továbbítás engedélyezése..." echo "1" > /proc/sys/net/ipv4/ip_forward # KRITIKUS: engedélyezi az IP töredezettség-mentesítést, amely alapból tiltott. # Valaha fordítaskor bekapcsolható lehetőseg volt, de a 2.2.12-től változott. # echo " Az AlwaysDefrag engedélyezése..." echo "1" > /proc/sys/net/ipv4/ip_always_defrag # Dinamikus IP-t használók: # # Ha az IP-címet dinamikusan (SLIP, PPP vagy DHCP segítségével) kapod, # engedélyezd a következő opciót. Bekapcsolja a dinamikus cím-manipulálást, # amellyel a Diald és hasonló programok használata egyszerűbb lesz. # #echo " A DynamicAddr engedélyezése..." #echo "1" > /proc/sys/net/ipv4/ip_dynaddr # Engedélyezi a LooseUDP foltot, amelyet néhány internet alapú játék igényel. # Ha valamely internet alapú játékhoz kívánsz kapcsolódni a MASQ-kiszolgálón # keresztül, de sehogy se sikerül, próbáld meg ennek a bekapcsolását (töröld # a sor elejéről a # jelet). Alapból tiltott, mivel belső gépről futtatott # UDP-kapupásztázással a kiszolgáló sebezhető. # # #echo " A LooseUDP engedélyezése..." #echo "1" > /proc/sys/net/ipv4/ip_masq_udp_dloose # Minden régi beállítás törlése # Amíg máshogy nem állítod, az alapértelmezés az INPUT és OUTPUT lánc # számára az ACCEPT, a FORWARD-nál a REJECT. # # echo " A meglévő szabályok törlése és az alapértelmezett szabályok beállítása..." $IPCAINS -P input ACCEPT $IPCAINS -P output ACCEPT $IPCAINS -P forward REJECT $IPCAINS -F input $IPCAINS -F output $IPCAINS -F forward # A MASQ időtúllépési beállításai # # 2 óra a TCP-kapcsolatokhoz # 10 mp a TCP-forgalomnál, miután "FIN" csomag érkezett # 160 mp az UDP-forgalomnál (fontos az maszkolott ICQ-felhasználóknak) # echo " Az alapértelmezett időzítők beállítása..." $IPCAINS -M -S 7200 10 160 # DHCP: azoknak, akik a külső IP-címüket vagy DHCP-vel, vagy BOOTP-vel # kapják, például az ADSL vagy kabelmodem-felhasználók, ez kell még # a DENY parancs kiadása előtt. # Jelenleg kikommenteztük. # #$IPCAINS -A input -j ACCEPT -i $EXTIF -s 0/0 67 -d 0/0 68 -p udp # Bekapcsolja az egyszerű IP-továbbítást és IP-maszkolást. # # Megj.: a következő egy olyan belső LAN-ra példa, ami a 192.168.0.x címmel, # a 255.255.255.0 vagy "24 bites" alhálózati maszkkal rendelkezik # és a külső "eth0" eszközön át kapcsolódik az internetre. # Ez a példa engedi a kifelé menő forgalmat, de a belső hálózat felé # irányulót már nem. # # ** Változtasd meg a fenti adatokat a sajat beállításaidnak megfelelően! ** # # echo " Az IPMASQ funkció engedélyezése a $EXTIF eszközön." $IPCHAINS -P forward DENY $IPCHAINS -A forward -i $EXTIF -s $INTLAN -j MASQ echo -e "\nrc.firewall-ipchains v$FWVER done.\n" |
Amint végeztél a szerkesztéssel, tedd a fájlt végrehajthatóvá a chmod 700 /etc/rc.d/rc.firewall-ipchains paranccsal.
Most hogy a tűzfalszabályok készen vannak, futtatni kell őket minden újraindításkor. Ezt vagy kézzel minden alkalommal megteszed (ez nagyon durva lenne), vagy hozzáadod a rendszerindító parancsfájlokhoz. Két módszert mutatunk be:
1. Redhat és Redhat-közeli disztribúcióknál:
Két mód van a dolgok automatikus betöltésére: az /etc/rc.d/rc.local fájl vagy egy betöltőszkript az /etc/rc.d/init.d könyvtárban. Az első könnyebb. Csak ezt kell beírnod az /etc/rc.d/rc.local fájl végére, és kész is:
echo "Az rc.firewall szabályrendszer betöltése..." /etc/rc.d/rc.firewall-ipchains |
Ezzel az a baj, hogy a tűzfal nem indul el a rendszerindítási folyamat végéig. A követendő megközelítés az, hogy induljon el közvetlenül a hálózati alrendszer betöltődése után. Ehhez másold a következő fájlt az /etc/rc.d/init.d könyvtárba:
<firewall-ipchains START>
#!/bin/sh
#
# chkconfig: 2345 11 89
#
# Leírás: betölti az rc.firewall-ipchains szabályrendszert.
#
# folyamatnév: firewall-ipchains
# pid-fájl: /var/run/firewall.pid
# konfiguráció: /etc/rc.d/rc.firewall-ipchains
# próba: true
# ----------------------------------------------------------------------------
# v02/09/02
#
# Part of the copyrighted and trademarked TrinityOS document.
# http://www.ecst.csuchico.edu/~dranch
#
# Written and Maintained by David A. Ranch
# dranch@trinnet.net
#
#
# ----------------------------------------------------------------------------
# Alapfüggvények betöltése
. /etc/rc.d/init.d/functions
# Megnézd, hogy van-e hálózatkezelés.
# Ez a sor nem működik többé a bash2-vel.
#[ ${NETWORKING} = "no" ] && exit 0
# Ennek jónak kell lennie.
[ "XXXX${NETWORKING}" = "XXXXno" ] && exit 0
[ -x /sbin/ifconfig ] || exit 0
# A különböző ipchains- és más héjprogramok helyei.
#
IPCHAINS=/usr/local/sbin/ipchains
# Lássuk, hogy hívták meg.
case "$1" in
start)
/etc/rc.d/rc.firewall-ipchains
;;
stop)
echo -e "\nA tűzfal kiürítése és az alapértelmezett szabály REJECT-re állítása\n"
$IPCHAINS -P input REJECT
$IPCHAINS -P output REJECT
$IPCHAINS -P forward REJECT
$IPCHAINS -F input
$IPCHAINS -F output
$IPCHAINS -F forward
;;
restart)
$0 stop
$0 start
;;
status)
$IPCHAINS -L
;;
mlist)
$IPCHAINS -M -L
;;
*)
echo "Használat: firewall-ipchains {start|stop|status|mlist}"
exit 1
esac
exit 0 |
Ha a parancsfájl a helyén van, futtasd a következő parancsot:
chkconfig --level=345 firewall-2.2 on |
2. Slackware:
Két módszer van a Slackware-nél: az /etc/rc.d/rc.local vagy a /etc/rc.d/rc.inet2 fájl szerkesztése. Az első módszer a könnyebb. Add hozzá a következő sort:
echo "Az rc.firewall szabályrendszer betöltése..." /etc/rc.d/rc.firewall-ipchains |
az /etc/rc.d/rc.local fájl végéhez, és kész is. Ezzel a megközelítéssel az a probléma, ha egy ERŐS tűzfalszabályt alkalmazol, a tűzfal nem indul el a rendszerindítási folyamat végéig. Ajánlott azonban az, hogy a hálózati alrendszer betöltődése után azonnal induljon el. Jelen pillanatban ez a HOGYAN csak azt mutatja meg, hogyan indítsd az /etc/rc.d/rc.local fájl segítségével. Ha biztonságosabb rendszert szeretnél, ajánlom a TrinityOS dokumentumnak 10. fejezetének elolvasását, amelyet a hivatkozásoknál találsz a HOGYAN vége felé.
Megjegyzések arról, hogyan akarják a felhasználók megváltoztatni a fenti szabályrendszert:
Egy gépre vonatkozóan is meg tudod adni az maszkolást a fenti módszertől eltérően, ahol az az egész alhálózatra vonatkozik. Ha például csak 192.168.0.2 és a 192.168.0.8 gépeknek akarsz internet hozzáférést biztosítani, és egyik másiknak sem:
#!/bin/sh # # Engedélyezi az egyszerű IP-maszkolást és IP-továbbítást. # v1.01 # # Megj.: a következő példában IP-maszkolást csakis a 192.168.0.2 és 192.168.0.8 # gépeknek (255.255.255.0-as vagy "24 bites" alhálózati maszk, eth0 eszközzel # való internet-csatlakozással) biztosítjuk. # # $IPCAINS -P forward DENY $IPCAINS -A forward -i $EXTIF -s 192.168.0.2/32 -j MASQ $IPCAINS -A forward -i $EXTIF -s 192.168.0.8/32 -j MASQ |
Gyakori hibák:
A kezdő IPMASQ-felhasználók általános hibája, hogy az első parancsot csak a következő egyszerű formában használják:
/sbin/ipchains -P forward masquerade |
SOHA NE állítsd be az alapértelmezett szabályt (policy) MASQUERADING-re. Különben valaki módosítani tudja az útválasztási táblázatát úgy, hogy keresztül menjen az átjárónkon, és felhasználja azt a saját maga maszkolására!
Ezeket a sorokat is add hozzá a /etc/rc.d/rc.firewall fájlhoz, valamelyik másik rc fájlhoz vagy töltsd be kézzel, amikor szükséged van az maszkolásra.
Lásd a 6.4.2 fejezetet részletesebb infóért az IPCHAINS-t, illetve a biztonságosabb IPCHAINS-szabályokat illetően. Az IPCHAINS használatáról részletesebben lásd a http://www.netfilter.org/ipchains/ elsődleges IPCHAINS-webhelyet vagy a Linux IP CHAINS HOWTO másolatának webhelyét.
Készítsd el az /etc/rc.d/rc.firewall fájlt a következő alapszintű szabályrendszerrel:
<rc.firewall-ipfwadm START>
#!/bin/sh # # rc.firewall-ipfwadm FWVER="2.03" # # - Kezdeti EGYSZERŰ IPMASQ beállítás a 2.0.x rendszermagokhoz, IPFWADM használatával # # Miután az maszkolást leteszteltük ezzel az egyszerű szabálykészlettel, # nagyon ajánlatos erősebb szabályrendszer használata. # echo -e "\n\nLoading simple rc.firewall version $FWVER..\n" # A belső és külső hálózati eszközök beállítása # # Minden IP-maszkolást használó hálózatnak legalább egy külső és egy # belső hálózattal kell rendelkeznie. A külső hálózatban zajlik a NAT, # a belsőben pedig az RFC1918 szerinti privát címkiosztás van. # # Ebben a példában az "eth0" a külső és az "eth1" a belső. # # Megj.: ha ez nem felel meg a beállításaidnak, akkor változtasd meg # az EXTIF (külső) és az INTIF (belső) eszközre vonatkozó beállítást. # Például, ha modemet használsz: # # EXTIF="ppp0" # # EXTIF="eth0" INTIF="eth1" echo " External Interface: $EXTIF" echo " Internal Interface: $INTIF" # A belső hálózat címe # Ez a példafájl a 192.168.0.0 hálózatot használja # a /24 or 255.255.255.0 netmaszkkal. # # ** Változtasd meg a Te beállításidnak megfelelően ** # INTLAN="192.168.0.0/24" echo -e " Internal Interface: $INTLAN\n" # Betöltjük a szükséges MASQ modulokat # # MEGJ.: csak akkor töltsd be őket, ha valóban szükségesek. Az összes jelenleg # hozzáférhető modult bemutatjuk alább, de megjegyzésbe tetted a betöltés elkerülése # végett. echo -en "Loading modules: " # A modulok kezdeti betöltéséhez szükséges # /sbin/depmod -a # Támogatjuk az FTP fájlátvitel PORT módszer által történő, megfelelő maszkolását # echo -en "FTP, " /sbin/modprobe ip_masq_ftp # Támogatjuk a RealAudio UDP fölötti maszkolását. E nélkül a modul nélkül a RealAudio # működik, de CSAK TCP módban. Ez a hangminőség romlását okozhatja. # #echo -en "RealAudio, " #/sbin/modprobe ip_masq_raudio # Támogatjuk az IRC DCC fájlátvitelt # #echo -en "Irc, " #/sbin/modprobe ip_masq_irc # Támogatjuk a Quake és QuakeWorld maszkolását alapból. Ezek a modulok több felhasználó # kiszolgálására valók a MASQ szerver mögött. Ha szeretnél Quake I, II vagy III verzióval # játszani, válaszd a második példát. # # MEGJ.: ha hibaüzenetet kapsz a betöltéskor, akkor régi, hibás rendszermagot használsz. # Fejleszd fel a legújabbra. # #echo -en "Quake, " #Quake I / QuakeWorld (26000-es és 27000-es port) #/sbin/modprobe ip_masq_quake # #Quake I/II/III / QuakeWorld (26000, 27000, 27910, 27960 portok) #/sbin/modprobe ip_masq_quake 26000,27000,27910,27960 # Támogatjuk a CuSeeMe videokonferencia program maszkolást # #echo -en "CuSeeme, " #/sbin/modprobe ip_masq_cuseeme # Támogatjuk a VDO-live videokonferencia-szoftvert # #echo -en "VdoLive, " #/sbin/modprobe ip_masq_vdolive echo ". Modulok betöltve." # KRITIKUS: az IP továbíbtás engedélyezése, mivel alapból le van tiltva # # Redhat felhasználók: változtasd meg az opciókat a # /etc/sysconfig/network fájlon belül: # # FORWARD_IPV4=false -ról # erre # FORWARD_IPV4=true # echo " enabling forwarding.." echo "1" > /proc/sys/net/ipv4/ip_forward # KRITIKUS: az automatikus IP defragmentáció engedélyezése , mivel alapból tiltott # # Ez régebben fordítás közbeni opció volt, de ez megváltozott a 2.2.12-nél. # Mind a 2.0, mind a 2.2 rendszermagnál szükséges beállítani. # echo " enabling AlwaysDefrag.." echo "1" > /proc/sys/net/ipv4/ip_always_defrag # Dinamikus IP-t használók: # # Ha az IP-címet dinamikusan (SLIP, PPP vagy DHCP segítségével) kapod, # engedélyezd a következő opciót. Bekapcsolja a dinamikus cím-manipulálást, # amellyel a Diald és hasonló programok használata egyszerűbb lesz. # #echo " A DynamicAddr engedélyezése..." #echo "1" > /proc/sys/net/ipv4/ip_dynaddr # Minden előbbi beállítás törlése # # Amíg máshogy nem definiálod, az alapszabály az INPUT-ra és OUTPUT-ra az ACCEPT, # a FORWARD-ra a REJECT # echo " régi szabályok törlése és új alapszabályok beállítása.." /sbin/ipfwadm -I -p accept /sbin/ipfwadm -O -p accept /sbin/ipfwadm -F -p reject /sbin/ipfwadm -I -f /sbin/ipfwadm -O -f /sbin/ipfwadm -F -f # MASQ időtúllépések # 2 óra a TCP-kapcsolatokhoz # 10 mp a TCP-forgalomnál, miután "FIN" csomag érkezett # 160 mp az UDP-forgalomnál (fontos az maszkolott ICQ-felhasználóknak) # echo " alapértelmezett időzítők beállítása.." /sbin/ipfwadm -M -s 7200 10 160 # DHCP: azoknak, akik a külső IP-címüket vagy DHCP-vel, vagy BOOTP-vel # kapják, például az ADSL vagy kabelmodem-felhasználók, ez kell még # a DENY parancs kiadása előtt. # Jelenleg kikommenteztük. # #/sbin/ipfwadm -I -a accept -S 0/0 67 -D 0/0 68 -W $EXTIF -P udp # Bekapcsolja az egyszerű IP-továbbítást és IP-maszkolást. # # Megj.: a következő egy olyan belső LAN-ra példa, ami a 192.168.0.x címmel, # a 255.255.255.0 vagy "24 bites" alhálózati maszkkal rendelkezik # és a külső "eth0" eszközön át kapcsolódik az internetre. # Ez a példa engedi a kifelé menő forgalmat, de a belső hálózat felé # irányulót már nem. # # ** Változtasd meg a fenti adatokat a saját beállításaidnak megfelelően! ** # # echo " az IPMASQ engedélyezése az $EXTIF-n" /sbin/ipfwadm -F -p deny /sbin/ipfwadm -F -a m -W $EXTIF -S $INTLAN -D 0.0.0.0/0 echo -e "\nrc.firewall-ipfwadm v$FWVER kész.\n" |
Amint végeztél a szerkesztéssel, tedd a fájlt végrehajthatóvá a chmod 700 /etc/rc.d/rc.firewall-ipfwadm paranccsal.
Most hogy a tűzfalszabályok készen vannak, futtatni kell őket minden újraindításkor. Ezt vagy kézzel minden alkalommal megteszed (ez nagyon durva lenne), vagy hozzáadod a rendszerindító parancsfájlokhoz. Két módszert mutatunk be:
1. Redhat és Redhat-közeli disztribúcióknál:
Két mód van a dolgok automatikus betöltésére: az /etc/rc.d/rc.local fájl vagy egy betöltőszkript az /etc/rc.d/init.d könyvtárban. Az első könnyebb. Csak ezt kell beírnod az /etc/rc.d/rc.local fájl végére, és kész is:
echo "Az rc.firewall szabályrendszer betöltése..." /etc/rc.d/rc.firewall |
Ezzel az a baj, hogy a tűzfal nem indul el a rendszerindítási folyamat végéig. A követendő megközelítés az, hogy induljon el közvetlenül a hálózati alrendszer betöltődése után. Ehhez másold a következő fájlt az /etc/rc.d/init.d könyvtárba:
<firewall-ipfwadm START>
#!/bin/sh
#
# chkconfig: 2345 11 89
#
# leírás: betölti az rc.firewall-ipfwadm szabályrendszert.
#
# folyamatnév: firewall-ipfwadm
# pid-fájl: /var/run/firewall.pid
# konfiguráció: /etc/rc.d/rc.firewall-ipfwadm
# próba: true
# ----------------------------------------------------------------------------
# v02/09/02
#
# Part of the copyrighted and trademarked TrinityOS document.
# http://www.ecst.csuchico.edu/~dranch
#
# Written and Maintained by David A. Ranch
# dranch@trinnet.net
#
# Updates
# -------
#
# ----------------------------------------------------------------------------
# Alapvető függvénykönyvtár
. /etc/rc.d/init.d/functions
# Megnézd, van-e hálózat
# Ez már nem működik a bash2-vel
#[ ${NETWORKING} = "no" ] && exit 0
# Ennek jónak kell lennie
[ "XXXX${NETWORKING}" = "XXXXno" ] && exit 0
[ -x /sbin/ifconfig ] || exit 0
# A különböző ipfwadm- és más héjprogramok helye
#
# Ha a disztribúciód tartalmazza az ipfwadm-t, valószínűleg az a /sbin könyvtárban van.
# Ha kézzel állítottad be, akkor az alapértelmezett helye az /usr/local/sbin
#
# Használd a "whereis ipfwadm" parancsot a hely kiderítéséhez, és ennek megfelelően
# állítsd be a következő sort
#
IPFWADM=/sbin/ipfwadm
# Ellenőrizd, hogy miként hívtak meg
case "$1" in
start)
/etc/rc.d/rc.firewall-ipfwadm
;;
stop)
echo -e "\nA tűzfal kiürítése és az alapszabály REJECT-re állítása\n"
$IPFWADM -I -p REJECT
$IPFWADM -O -p REJECT
$IPFWADM -F -p REJECT
$IPFWADM -I -f
$IPFWADM -O -f
$IPFWADM -F -f
;;
restart)
$0 stop
$0 start
;;
status)
$IPFWADM -l
;;
mlist)
$IPFWADM -M -l
;;
*)
echo "Használat: firewall-ipfwadm {start|stop|status|mlist}"
exit 1
esac
exit 0 |
Ha a parancsfájl a helyén van, akkor tedd futtathatóvá, majd gondoskod arról, hogy újraindításkor betöltődjön. Először tedd futtathatóvá a következő módon:
#Redhat-style # chmod 700 /etc/rc.d/init.d/firewall-ipfwadm |
#Redhat style # chkconfig --level=345 firewall-ipfwadm on |
#Redhat style # chkconfig --list firewall-ipfwadm #A kimenetnek ehhez hasonlónak kell lennie: # firewall-ipfwadm 0:off 1:off 2:off 3:on 4:on 5:on 6:off |
Slackware:
Két módszer van a Slackware-nél: az /etc/rc.d/rc.local vagy a /etc/rc.d/rc.inet2 fájl szerkesztése. Az első módszer a könnyebb. Add hozzá a következő sort:
echo "Az rc.firewall szabályrendszer betöltése..." /etc/rc.d/rc.firewall-ipfwadm |
az /etc/rc.d/rc.local fájl végéhez, és kész is. Ezzel a megközelítéssel az a probléma, ha egy ERŐS tűzfalszabályt alkalmazol, a tűzfal nem indul el a rendszerindítási folyamat végéig. Az ajánlott azonban az, hogy a hálózati alrendszer betöltődése után azonnal induljon el. Jelen pillanatban ez a HOGYAN csak azt mutatja be, hogyan indítsd az /etc/rc.d/rc.local fájl segítségével. Ha biztonságosabb rendszert szeretnél, ajánlom a TrinityOS dokumentumnak 10. fejezetének elolvasását, amelyet a hivatkozásoknál találsz a HOGYAN vége felé.
Megjegyzések arról, hogyan akarják a felhasználók megváltoztatni a fenti szabályrendszert:
Egy gépre vonatkozóan is meg tudod adni az maszkolást a fenti módszertől eltérően, ahol az az egész alhálózatra vonatkozik. Ha például csak 192.168.0.2 és a 192.168.0.8 gépeknek akarunk intenet-hozzáférést biztosítani, és egyik másiknak sem:
#!/bin/sh # # Engedélyezi az egyszerű IP-maszkolást és IP-továbbítást. # v2.01 # # Megj.: a következő példában IP-maszkolást csakis a 192.168.0.2 és 192.168.0.8 # gépeknek (255.255.255.0-as vagy "24 bites" alhálózati maszk, eth0 eszközzel # való internet-csatlakozással) biztosítjuk. # # /sbin/ipfwadm -F -p deny /sbin/ipfwadm -F -a m -W $EXTIF -S 192.168.0.2/32 -D 0.0.0.0/0 /sbin/ipfwadm -F -a m -W $EXTIF -S 192.168.0.8/32 -D 0.0.0.0/0 |
Gyakori hibák:
A kezdő felhasználók gyakori hibája, hogy az első parancsot így használják:
ipfwadm -F -p masquerade |
SOHA NE állítsd be az alapértelmezett szabályt (policy) MASQUERADING-re. Különben valaki módosítani tudja az útválasztási táblázatát úgy, hogy keresztül menjen az átjárónkon, és felhasználja azt a saját maga maszkolására!
Ezeket a sorokat is add hozzá a /etc/rc.d/rc.firewall fájlhoz, valamelyik másik rc fájlhoz vagy töltsd be kézzel, amikor szükséged van az maszkolásra.
Lásd a 6.4.2 és 6.4.3 fejezetet részletesebb infóért a biztonságosabb IPCHAINS és IPFWADM szabályokat illetően.
| Előző | Tartalomjegyzék | Következő |
| Privát hálózati címek hozzárendelése a belső LAN gépeihez | Fel | A belső hálózat ügyfélgépeinek beállítása |