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