[zorp-hu] Egy pelda-konfig
=?iso-8859-2?Q?Magos=E1nyi_=C1rp=E1d?=
mag@bunuel.tii.matav.hu
Fri, 15 Dec 2000 14:07:52 +0100
Hi!
Beszúrva válaszolok, és aránylag keveset törlök, hogy minden
egyértelmű legyen. Elnézést azoktól akiknek kicsi a sávszélességük.
A levelezőm azt hiszi, hogy Kosa Attila a következőeket írta:
[]
> # Definialom az intranet zonat (192.168.0.0/255.255.255.0),
> # es a belulrol a DMZ-be engedni kivant szolgaltatasokat.
> # Egyelore http, ftp, ssh, pop3 es smtp kellene. Az
> # smtp-vel kapcsolatban: felteszek egy csak tovabbito
> # modban mukodo smtp-szervert a tuzfalra - ekkor kell-e
> # valamilyen Zorp service-t vagy ipchains szabalyt definialnom?
Ha az smtp-t natív módban nyomod, akkor Zorp szolgáltatást nyilván
nem kell definiálni hozzá. A mailhubok és a dns (MX) konfigurációjától,
meg a csomagszűrési stílusodtól függ az hogy kell-e külön csomagszűrő
szabály. Lássunk néhány példát:
1. smtp natív proxyval, a csomagszűrési stílus az hogy az interface-re
közvetlenül jövő tcp kapcsolatokat acceptáljuk, az MX-ek a tűzfalra
mutatnak, az intranetes mailhub(ok) a tűzfal felé route-olja a leveleket:
Nem kell további csomagszűrő szabály.
2. smtp natív proxy, a csomagszűrési stílus az hogy az interface-re
közvetlenül jövő tcp kapcsolatokat nem acceptáljuk, az MX-ek a tűzfalra
mutatnak, az intranetes mailhub(ok) a tűzfal felé route-olja a leveleket:
Egy ACCEPT szabály kell.
3. Két tűzfal HA megoldásban, a csomagszűrési stílus az hogy az interface-en
beeső és a tűzfal másik oldalára menő kapcsolatokat deny-oljuk, és egyenként
adunk neki redirect-et, a külső MX egy a tűzfalon "belül" lévő, internetről
route-olható címre mutat (dmz), a belső mailhub(ok) MX alapján deliverálnak:
Mindkét oldalon redirect szabály kell. Az ne zavarjon hogy a külső MX-ben
szereplő címen nem is figyel MTA, mert mindkét irányt a tűzfalon futő natív
proxy fogja továbbítani. Csak neki kell megmagyarázni, hogy a bejövő
leveleket igaziból hová kell továbbítani.
Ennek a megoldásnak az az előnye, hogy mindig az elsődleges tűzfal fogja
kezelni a leveleket.
> Zorp.zones= [
> Zone.InetZone("intranet","192.168.0.0","255.255.255.0", None,
> outbound_services["BDHttp","BDFtp","BDSsh","BDPop"],
> inbound_services[]),
>
> # Definialom a DMZ zonat (192.168.1.0/255.255.255.0),
> # es a belso halozatra iranyulo szolgaltatasokat.
> Zone.InetZone("DMZ", "192.168.1.0", "255.255.255.0", None,
> outbound_services[],
> inbound_services["BDHttp","BDFtp","BDSsh","BDPop"])
> ]
>
> # A belso halorol a DMZ fele iranyulo http keresek
> # iranyitasara szolgal.
>
> # Ha azt szeretnem, hogy csak a belso proxy-szerveren
> # keresztul erhessek el a DMZ-t is, akkor fel kell
> # venni egy zonat a proxy-szervernek, es csak onnan
> # engedelyezni a szolgaltatast. Peldaul:
> # Zone.InetZone("proxy","192.168.0.210","255.255.255.0",None,
> # outbound_services["PDHttp","PDFtp"],
> # inbound_services[])]
> # Ekkor a "DMZ inbound_services"-be fel kell venni a
> # "PDHttp"-t es a "PDFtp"-t, valamint ki kell venni a
> # "BDHttp"-t es a "BDFtp"-t a DMZ-bol es az intranetbol is.
> # Ha "transparent_mode = 1" (ebben az esetben), akkor a
> # belso-proxyn nem kell beallitanom semmit. Ha viszont 0,
> # akkor be kell allitani, hogy o a gyermek-proxy, es a
> # tuzfal a szulo-proxy.
>
> # Ha transzparens, akkor kell egy redirect ipchains
> # szabaly hozza.
> class BDHttp(Http.HttpProxy):
> def config(self):
> self.transparent_mode = 1
>
> # A belso halorol a DMZ fele iranyulo ftp keresek
> # iranyitasara szolgal.
> # A command_accept-ben megadott ftp parancsokat tudja
> # hasznalni a kliens. A NAT = 1 azt jelenti, hogy
> # maszkolom a kereseket.
Pontosan azt jelenti hogy a kliens által kiadott PORT
parancs paramétereit értelmesre átírja a proxy.
> # Ha azt szeretnem, hogy csak a belso proxy-szerveren
> # keresztul erhessek el a DMZ-t is, akkor fel kell
> # venni egy zonat a proxy-szervernek, es csak onnan
> # engedelyezni a szolgaltatast. A fenti peldahoz tartozo
> # classok ugyanazok, mint a "BDFtp" es a "BDHttp", csak
> # a nevuk valtozik meg? Illetve a "def"-juk is ugyanaz,
> # ott is csak a nevuket kell megvaltoztatni?
Akár a nevük is lehet ugyanaz; ugyanaz a viselkedése
a proxynak, a hozzáférésvezérlés a zónánál van definiálva.
Ez stílus kérdése.
> #
> # Az external_data_address a tuzfal DMZ feloli laba, az
> # internal_data_address pedig a tuzfal belso halozat
> # feloli laba.
> class BDFtp(Ftp.FtpProxy):
> def config(self):
> self.command_accept = 0x00000000
> self.NAT = 1
> self.fw_external_data_address="192.168.1.1"
> self.fw_internal_data_address="192.168.0.250"
>
> # A belso halorol a DMZ fele iranyulo ssh keresek
> # iranyitasara szolgal.
> class BDSsh(Plug.PlugProxy):
> def config(self):
> pass
>
> # A belso halorol a DMZ fele iranyulo pop3 keresek
> # iranyitasara szolgal.
> class BDPop(Plug.PlugProxy):
> def config(self):
> pass
>
> # Szolgaltatasok definicioi.
> def init(name):
> BDPop_service = \
> Service.Service("BDpop",
> # Ha transzparensnek allitom be a pop3 service-t, akkor a
> # klienseknek a tuzfalat kell megadnom pop3 szerverkent?
Nem, a valódi pop3 szervert. Ha azt akarod hogy ne is tudják hol van
igaziból, vagy nem route-olható helyen van, akkor DirectedChainert
használj.
> # A transzparensseg miatt kell ipchains redirect?
Biza.
> # A "None,0" azt jelenti, hogy ne irja at a kliens cimet?
> Chainer.TransparentChainer(None,0),
> BDPop)
>
> BDHttp_service = \
> Service.Service("BDHttp",
> # Ha nem transzparens http-t szeretnek, akkor InbandChainer-t
> # kell hasznalnom? A "None,1" azt jelenti, hogy nem adunk meg
igen.
> # cimet, es a kliens eredeti cime latszodjon?
igen.
> # A transzparensseg miatt kell ipchains redirect?
Biza.
> Chainer.TransparentChainer(None,1),
> BDHttp)
>
> BDFtp_service = \
> Service.Service("BDFtp",
> # Ha nem transzparens ftp-t szeretnek, akkor InbandChainer-t
> # kell hasznalnom? A "None,1" azt jelenti, hogy nem adunk meg
> # cimet, es a kliens eredeti cime latszodjon?
> # A transzparensseg miatt kell ipchains redirect?
> Chainer.TransparentChainer(None,1),
> BDFtp)
>
> BDSsh_service = \
> Service.Service("BDSsh",
> # A transzparensseg miatt kell ipchains redirect? A "None,1"
> # azt jelenti, hogy nem adunk meg cimet, es a kliens eredeti
> # cime latszodjon?
(igen,igen)
> Chainer.TransparentChainer(None,1),
> BDSsh)
>
> # A 192.168.0.250 a tuzfal belso halo fele eso laba, de miert
> # ezek a portszamok vannak megadva? Ide irhatok nekem tetszo
Csak úgy:)
> # portszamokat is, csak az ipchains redirect-et kell ezekre
> # beallitanom?
Igen.
> Listener.Listen( SockAddr.SockAddrInet("192.168.0.250",2110),
> BDPop_service)
> Listener.Listen( SockAddr.SockAddrInet("192.168.0.250",3080),
> BDHttp_service)
> Listener.Listen( SockAddr.SockAddrInet("192.168.0.250",3021),
> BDFtp_service)
> Listener.Listen( SockAddr.SockAddrInet("192.168.0.250",3022),
> BDSsh_service)
>
--
GNU GPL: csak tiszta forrásból