[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