Linux IPCHAINS-HOGYAN


Előző | Tartalom | Következő


3. El vagyok borzadva! Routing, masquerading, portforwarding, ipautofw…

Ennek a dokumentumnak a témája a csomagszűrés. Azaz eldönteni, hogy egy csomag átmehet-e, vagy sem. Mivel azonban a Linux a hackerek játszótere, gondolom, ennél többet szeretnél.

Van egy probléma, mégpedig az, hogy ugyanazt az eszközt kell használni (ipchains) a masqueradinghoz és a transzparens proxy-hoz, habár ezek eltérnek a csomagszűréstől. A jelenlegi Linux implementációban mindezek természetellenesen egybemosódnak, azt a benyomást keltve, mintha ezek szorosan összetartoznának.

A masquerading és a proxy külön HOWTOK témái, az automata továbbítás (autoforwarding) és a port továbbítás (port forwarding) külön eszközzel vezérlendőek, de mióta sokan kérdezősködtek felőlük, belefoglalom őket ebbe a doksiba, mikor kell őket használni. A biztonsági érdemük viszont nem lesz kitárgyalva.

3.1 Három soros kalauz a masquerading-hoz.

Feltételezzük, hogy a külső interfészedet ppp0-nak hívják, de nézz utána az ifconfig paranccsal, és változtass aszerint:

# ipchains -P forward DENY
# ipchains -A forward -i ppp0 -j MASQ
# echo 1 > /proc/sys/net/ipv4/ip_forward

3.2 Ingyenes promóció: Őrszem szabályok

Vehetsz 'polcról' is tűzfalat magadnak. Kiváló példáual Watchguard's FireBox. Remek, mert kedvelem, biztonságos, linux-alapú, és pénzelik az ipchains fejlesztését az új tűzfal kódhoz (2.3). Röviden, Watchguard-ék fizetnek nekem (legyen mit ennem), míg én neked dolgozom. Kérlek, fontold meg az anyagukat.

http://www.watchguard.com

3.3 Általános tűzfal-szerű beállítások

Te futtatod a kisceg.com-ot. Van egy belső hálózatod, és egy szimpla betárcsázós (PPP) kapcsolatod az Internet felé (a PPP interfészhez rendelt IP cím mondjuk 1.2.3.4 - például). Ethernetet használsz a belső hálózaton, és a gépedet 'sajathost'-nak hívod.

Ez a rész ismerteti a különböző általános megoldásokat. Olvasd gondosan, mivel finoman különböznek egymástól.

Privát Hálózat: Hagyományos Proxik

Ebben a példában a csomagok a belső hálóról sosem haladnak az Internet felé, és viszont. A belső hálózat gépeinek IP címei az RFC1597 által meghatározott privát hálózati kiosztásból kerülnek kiválasztásra (úgy mint: 10.*.*.*, 172.16.*.*, 192.168.*.*). Az egyetlen módja az Internet elérésének a tűzfal elérése, ami az egyetlen gép, ami mindkét hálózaton előre kapcsolódik. Ehhez egy programot futtatsz (a tűzfalon), amit proxinak hívnak. Vannak proxik ftp-hez, www-hez, telnethez, RealAudiohoz, Usenet news-hoz és egyéb szolgáltatásokhoz. Lásd a FIREWALL-HOWTO-t.

Minden szolgáltatást, amit az Internet által elérhetővé akarsz tenni, a tűzfalas gépen kell legyen (de lásd a korlátozott belső szolgáltatások részt lentebb).

Példa: Web-szolgáltatás engedélyezése a belső hálónak az Internet felé.

1. A privát hálózat a 192.168.*.* címekről van kiosztva, az 'enhostom' gép címe 192.168.1.100. A tűzfal Ethernet interfészének címe 192.168.1.1.
2. A Web proxy (pl. squid) a tűzfalon van installálva és konfigurálva, mondjuk a 8080-as porton fut.
3. A belső háló Netscape-jei úgy van beállítva, hogy használják a tűzfal 8080-as portját, mint proxyt.
4. DNS-t nem kell beállítani a belső hálón.
5. DNS-t nem kell beállítani a tűzfalas gépen.
6. Nem kell default route-ot (aka gateway) beállítani a belső hálón.

A Netscape-nek kiadjuk: http://slashdot.org

1. A Netscape csatlakozik a tűzfal 8080-as portjára, használva mondjuk az 1050-eset a gépen. Kérné a weblapot a slashdot.org-ról.
2. A proxy lookupol a slashdot.org névért, és megkapja eredményül a 207.218.152.131-et. Erre az IP-re nyit egy kapcsolatot (használva az 1025-ös portot a külső interfészén), és kéri a webszervertől (80-as port) a weblapot.
3. Ahogy megkapja, átmásolja az adatot a Netscape kapcsolatra
4. A Netscape megjeleníti a weblapot

Azaz, a slashdot,org nézőpontjából létrejött egy kapcsolat az 1.2.3.4-ről (a tűzfal PPP interfésze) az 1025-ös portjáról a 207.218.152.131 IP felé a 80-as portjára. A Netscape-es gép nézőpontjából a kapcsolat a 192.168.1.100-ról (port 1050) a 192.168.1.1 (tűzfal Ethernet interfésze) felé nyílt meg, a 8080-as portra.

Privát Hálózat: Átlátszó Proxy-k (Transparent Proxies)

Ebben a példában a csomagok a belső hálóról sosem haladnak az Internet felé, és viszont. A belső hálózat gépeinek IP címei az RFC1597 által meghatározott privát hálózati kiosztásból kerülnek kiválasztásra (úgy mint: 10.*.*.*, 172.16.*.*, 192.168.*.*).

Az egyetlen módja az Internet elérésének a tűzfal elérése, ami az egyetlen gép, ami mindkét hálózaton előre kapcsolódik. Ehhez egy programot futtatsz (a tűzfalon), amit transzparens proxinak hívnak. A kernel a kimenő csomagokat a transzparens proxynak küldi (fattyúsított útválasztás).

Az átlátszó proxy azt jelenti, hogy a klienseknek nem kell tudniuk arról, hogy tulajdonképpen proxy program üzemel.

Minden szolgáltatást, amit az Internet által elérhetővé akarsz tenni, a tűzfalas gépen kell legyen (de lásd a korlátozott belső szolgáltatások részt lentebb).

1. A privát hálózat a 192.168.*.* címekről van kiosztva, az 'enhostom' gép címe 192.168.1.100. A tűzfal Ethernet interfészének címe 192.168.1.1.
2. A transzparens proxy (azt hiszem vannak patch-ek, hogy a squid ilyen módón működhessen, vagy keress "transproxy" csomagot) a tűzfalon van installálva és konfigurálva, mondjuk a 8080-as porton fut.
3. A kernel úgy van beállítva az ipchains-al, hogy minden 80-as portra érkező csomagot átirányítson a proxynak.
4. A Netscape-ek a gépeken direkt kapcsolatra vannak állítva.
5. A DNS-t be kell beállítani a belső hálózaton (A DNS szervert proxy-ként futtatod a tűzfalas gépen).
6. A belső háló gépein be kell állítani az alapértelmezett útvonalat (aka gateway), hogy a csomagokat a tűzfalnak küldje.

A Netscape-nek kiadjuk: http://slashdot.org

1. A Netscape lookupol a slashdot.org névért, és megkapja eredményül a 207.218.152.131-et. Nyit egy kapcsolatot erre az IP-re (használva az 1050-es lokális portot), és elkéri a webszervertől a weblapot (80-as port),
2. Ahogy a csomagok a gépről az 1050-es portról elmennének a slashdot-ra, a 80-as portra, a tűzfalon átirányítódnak az átlátszó proxyhoz, a 8080-as portra. Az átlátszó proxy nyit egy kapcsolatot (1025-ös port lokálisan) a slashdot IP-jére a 80-as portra (ahova az eredeti csomagok is mennének).
3. Ahogy a proxy a weblapot megkapja, átmásolja az adatot a Netscape kapcsolatra
4. A Netscape megjeleníti a weblapot

A slashdot szemszögéből a kapcsolat az 1.2.3.4-ról jött létre (tűzfal PPP interfésze), az 1025-ös portról a slashdot IP-jére a lokális 80-as portjára. A Netscape-es gép szemszögéből a kapcsolat a 192.168.1.100 IP-ről, az 1050-es portról jött létre a slashdot IP-jére (és 80-as portjára), de tulajdonképpen mit sem sejt abból, hogy a csomagok átirányítódnak közben a tűzfalon a proxyhoz, így az végzi az adatforgalmat.

Privát Hálózat: Masquerading

Ebben a példában a csomagok sohasem jutnak ki a belső hálóról az Internet felé speciális eljárás nélkül, és fordítva. A belső hálózat gépeinek IP címei az RFC1597 által meghatározott privát hálózati kiosztásból kerülnek kiválasztásra (úgy mint: 10.*.*.*, 172.16.*.*, 192.168.*.*).

Proxy helyett használhatunk egy speciális kernel szolgáltatást, amit úgy hívnak hogy masquerading (ezt a szót elég nehéz lefordítani, mivel azt jelenti hogy álarcosbál, maskabál, álcázás). Ez az eljárás újraírja a csomagokat, ahogy azok áthaladnak a tűzfalon, ezért úgy tűnik a külvilág számára, hogy a csomagok csak és kizárólag tűzfal által lettek generálva és elküldve. A beérkező válasz-csomagokat szintén újraírja (jobban mondva újrafejlécezi), hogy azokat az eredeti feladók kaphassák meg a belső hálózaton.

A masquerading-nak különálló moduljai vannak a fortélyosabb protokollok lekezelésére, mint például az Ftp, RealAudio, Irc, Quake stb. Az 'igazán' nehezen kezelhető protokollokhoz az automata-továbbító (auto-forwarding) szolgáltatás nyújt némi automatikus lekezelést úgy, hogy beállítja a port továbbítást (port forwarding) a portok azon halmazára, amelyek összefüggésben vannak. Nézd meg az 'ipportfw' (2.0-s kernelek) parancsot, vagy az ipmasqadm parancsot (2.1 és feljebb).

Példa: Web szolgáltatás engedélyezése a belső hálónak az Internet felé.

1. A belső háló címei a 192.168.1.* (254 különféle gép maximum) -ról lettek kiosztva, pl. az egyik Netscape-es gép a 192.168.1.100, és a tűzfal Ethernet interfésze pedig a 192.168.1.1.
2. A tűzfal úgy van beállítva, hogy masquerade-áljon (fejlécezze újra) minden olyan csomagot, ami a belső hálótól jön és a célcím (slashdot pl.) 80-as portjára kívánkozik.
3. A Netscape direkt kapcsolatra van beállítva.
4. A DNS-t be kell konfigurálni a belső hálózaton.
5. A tűzfalas gépnek kell lennie a belső háló gépei számára az alapértelmezett útnak (átjárónak, gateway).

A Netscape-nek kiadjuk: http://slashdot.org

1. A Netscape lookupol a slashdot.org névért, és megkapja eredményül a 207.218.152.131-et. Nyit egy kapcsolatot erre az IP-re, használva a saját maga 1025-ös portját, és a célcím 80-asát.
2. Ahogy a csomagok áthaladnak a tűzfalon (mivel az IP nem jelöl lokális gépet, a csomagok az átjáróra kerülnek, ahol a tűzfal is van), újraíródnak, mintha a PPP interfésztől jöttek volna a 65000-es porton. A tűzfal rendelkezik érvényes Internet címmel (1.2.3.4), tehát a válasz csomagok gond nélkül visszaérkeznek ide.
3. Ahogy a slashdot válaszol (80-as port), a csomagjai célja a tűzfalas gép (65000-es port), és miután megérkeztek, a masqueradingnak köszönhetően újra fejléceződnek, hogy a Netscape-es gép 1025-ös portja legyen a cél. Ez itt az igazi varázslat: emlékezik rá, mikor újraírta a kimenő csomagot, hogy a bejövőt is újraírhassa (így a csomagot rendben megkapja a Netscape-es gép).

A slashdot szemszögéből nézve, a kapcsolat az 1.2.3.4-ről jött létre a 65000-es portról a saját IP-jének (207.218.152.131) 80-as portjára, míg a Netscape-es gép szemszögéből nézve a kapcsolat a 192.168.1.100-on, az 1050-es porton jött létre a slashdot IP-je felé a 80-as portjára.

Nyilvános Hálózat

Ebben a példában a saját hálózatod az Internet része: a csomagok változtatás nélkül utazhatnak mindkét hálózatra/-ről. A hálózatod IP címeinek muszáj érvényes Internet IP címek blokkjának (intervallumnak) lenniük, tehát a hálózat nagy része gond nélkül tudja a módját a csomagok hozzád való eljuttatását. Mindez permanens Internet kapcsolatot követel meg.

Példa: Web szolgáltatás engedélyezése a belső hálónak az Internet felé.

1. Mondjuk, regisztráltattál néhány érvényes IP címet magadnak (IP intervallumot), amiket kiosztottál a gépeid számára (pl. 1.2.3.*).
2. A tűzfal úgy van beállítva, hogy mindenféle forgalmat engedélyezzen.
3. A Netscape direkt kapcsolatra van beállítva.
4. A DNS-t be kell állítani a hálózatodon.
5. A tűzfal az alapértelmezett útvonala a többi géped számára.

A Netscape-nek kiadjuk: http://slashdot.org

1. A Netscape lookupol a slashdot.org névért, és megkapja eredményül a 207.218.152.131-et. Nyit egy kapcsolatot erre az IP-re, használva a saját maga 1025-ös portját, és a célcím 80-asát.
2. A csomagok átmennek a tűzfalon, csak úgy, ahogy további útválasztókon is átmennek, míg elérik a slashdot-ot.
3. A Netscape megjeleníti az oldalt.

Azaz, itt csak egyetlenegy kapcsolat jön létre, az 1.2.3.100 (a Netscape-es gép) 1025-ös portjáról a 207.218.152.131 80-as portjára.

Korlátozott belső szolgáltatások

Van néhány trükk, amit használhatsz, hogy megengedd az Internetnek, hogy használhassa a belső szolgáltatásaidat, semmint hogy a tűzfalon futtasd ezeket a szolgáltatásokat. Mindezek proxy és masquerading alapú felépítéseknél is működhetnek.

A legegyszerűbb megközelítés egy átirányító futtatása, amit nevezhetünk a 'szegény ember proxy-jának is', ami kapcsolatra vár egy adott porton, aztán megnyitja a kapcsolatot egy fix belső hoszton és porton és másolja az adatokat a két kapcsolat között. Például: az Internet szemszögéből nézve a kapcsolat a tűzfalad felé nyílt meg, míg a belső hálózatod egyik szolgáltató gépe szemszögéből a kapcsolat a tűzfal belső interfésze felől jön.

Egy másik megközelítés (ami 2.0-s kernelt igényel ipportfw patch-el, vagy 2.1-es vagy nagyobb kernelt), hogy port továbbítást használsz a kernelben. Ez ugyanazt csinálja mint az előbb tárgyalt átirányító, de más módón: a kernel újraírja a csomagokat ahogy áthaladnak rajta, megváltoztatva a cél címet és a portot, hogy a belső háló gépének címére és portjára mutassanak. Az Internet szemszögéből nézve, a kapcsolat a tűzfal felé jön létre, míg a belső hálód szolgáltató gépének szemszögéből nézve egy közvetlen kapcsolat jön létre az Internetes hosztról számára.

http://www.ecst.csuchico.edu/~dranch/LINUX/index-LINUX.html#ipmasq

Nemsokára megtalálható a Linux Documentation Project égisze alatt: http://www.metalab.unc.edu/LDP

Az hivatalos Masquerading website itt található: http://ipmasq.cjb.net


Előző | Tartalom | Következő