Hello! Bocsanat, hogy mar megint ilyen hosszu levelet irok, de ugy latszik, kicsit nehez a felfogasom :) Igyekeztem belezsufolni mindent, amire szuksegem lehet, de megint van egy par kerdesem. Egy kupacba tettem az osszetartozo dolgokat, de csak a konnyebb erthetoseg (szamomra) miatt. Tudom, hogy a valosagban nem igy kell. # A tuzfal belso halo feloli laba: 192.168.0.250 eth2 # A tuzfal DMZ feloli laba: 192.168.1.1 eth1 # A tuzfal internet feloli laba: 100.100.100.100 eth0 # Egy altalanos kerdes: hogyan tudom szabalyozni, hogy # (ip-cim szerint) mely gepek milyen szolgaltatasokat # erhetnek el a tuzfalon keresztul? Ez a konfig melyik # zorp verzioval mukodik stabilan? Ugyanis ugy lattam, # hogy a 0.7.11-es verzional mar mas a konfig. from Zorp import Zorp, SockAddr, Listener, Zone, Service, Chainer from Zorp import Stream, Plug, POP3, AnyPy, Ftp, Session, Sink from Zorp import Receiver, Http, Auth from Zorp.Zorp import * Zorp.firewall_name = 'zorp1@teszt.hu' Zorp.zones = [ InetZone("intranet","192.168.0.0","255.255.255.0", None, outbound_services["BIHttp", "BIFtp", "BIPop", "BDHttp", "BDSsh", "BDPop"], inbound_services[]), InetZone("DMZ", "192.168.1.0", "255.255.255.0", None, outbound_services[], inbound_services["BDHttp", "BDSsh", "BDPop", "IDHttp", "IDPop"]), InetZone("internet", "0.0.0.0", "0.0.0.0", None, outbound_services["IDHttp", "IDPop"], inbound_services["BIHttp", "BIFtp", "BIPop"])] #---------------------------------------------------------# # A belso halorol az internet elerese http-n keresztul class BIHttp(Http.HttpProxy): def config(self): HttpProxy.config(self) self.transparent_mode = 1 # self.request["POST"] = (Http.HTTP_DROP) def init(name): BIHttp_service = \ Service("BIHttp", InbandChainer(), BIHttp) # A kesobbiekben szeretnek egy proxyt is kesziteni a belso # halozatra, de egyelore direktben szeretnem kiengedni a # usereket. Erdemes-e beletenni a "-s 192.168.0.0/24" reszt? # ipchains -A input -i eth2 -d 0/0 80 -j REDIRECT 3128 Listener(SockAddrInet("192.168.0.250", 3128), BIHttp_service) # Ha kesz lesz a proxy-szerver (squid), akkor csak az # atiranyitast kell megvaltoztatnom? Ahogy en gondolom: # ipchains -A input -i eth2 -s proxy.ip.cim.e -d 0/0 80 -j REDIRECT 3128 # Es ekkor a proxyn nem kell semmit beallitani, ugye? #---------------------------------------------------------# #---------------------------------------------------------# # A belso halorol az internet elerese ftp-n keresztul class BIFtp(FtpProxyAllow): def config(self): FtpProxy.config(self) self.fw_server_data.ip_s="100.100.100.100" self.fw_client_data.ip_s="192.168.0.250" NAT = 1 def init(name): BIFtp_service = \ Service("BIFtp", TransparentChainer(), BIFtp) # A Windowsos kliensek tudnak-e igy ftp-zni? # ipchains -A input -i eth2 -d 0/0 21 -j REDIRECT 2021 # ipchains -A input -i eth2 -d 0/0 1024: -j REDIRECT 0 Listener(SockAddrInet("192.168.0.250", 2021), BIFtp_service) # Ha kesz lesz a proxy-szerver (squid), akkor ezeket az # atiranyitasokat is at kell irni. Ahogy en kepzelem: # ipchains -A input -i eth2 -s proxy.ip.cim.e -d 0/0 21 -j REDIRECT 2021 # ipchains -A input -i eth2 -s proxy.ip.cim.e -d 0/0 1024: -j REDIRECT 0 # A Windowsos kliensek tudnak-e igy ftp-zni (proxyn # keresztul)? #---------------------------------------------------------# #---------------------------------------------------------# # A belso halorol az internet elerese pop3-mon keresztul class BIPop(PlugProxy): def config(self): pass def init(name): BIPop_service = \ Service("BIPop", TransparentChainer(), BIPop) # ipchains -A input -i eth2 -d 0/0 110 -j REDIRECT 2110 Listener(SockAddrInet("192.168.0.250", 2110), BIPop_service) # Ha korlatozni szeretnem, hogy mely gepek mehetnek ki ezen # a szolgaltatason keresztul, akkor azt hogyan kell # beallitani? Ha azt is korlatozni szeretnem, hogy mely # gepeket erhetik el a neten pop3-mal (pl. matav, elender), # akkor kulon kell bontanom a matavos es elenderes elerest, # es az ipchains-szel iranyitani a megfelelo porton figyelo # service-hez? Akkor megint felmerul az ip-cim szerinti # megkulonboztetes kerdese, illetve itt meg felmerul az is, # hogy mi a helyzet azzal, aki mindkettot szeretne # hasznalni? #---------------------------------------------------------# #---------------------------------------------------------# # A belso halorol a DMZ elerese pop3-mon keresztul class BDPop(PlugProxy): def config(self): pass def init(name): BDPop_service = \ Service("BDPop", TransparentChainer(), BDPop) # ipchains -A input -i eth2 -d 192.168.1.3 110 -j REDIRECT 3110 Listener(SockAddrInet("192.168.0.250", 3110), BIPop_service) #---------------------------------------------------------# #---------------------------------------------------------# # Az internetrol a DMZ elerese pop3-mon keresztul class IDPop(PlugProxy): def config(self): pass def init(name): IDPop_service = \ Service("IDPop", TransparentChainer(), IDPop) # ipchains -A input -i eth0 -d 192.168.1.3 110 -j REDIRECT 4110 Listener(SockAddrInet("100.100.100.100", 4110), BIPop_service) # Ezt inkabb DirectedChainer-rel kellene megoldani? #---------------------------------------------------------# #---------------------------------------------------------# # A belso halorol a DMZ elerese http-n keresztul class BDHttp(HttpProxy): def config(self): self.transparent_mode = 1 def init(name): BDHttp_service = \ Service("BDHttp", TransparentChainer(), BDHttp) # A 192.168.1.2 80-as portjan figyel a www-szerver. # ipchains -A input -i eth2 -d 192.168.1.2 80 -j REDIRECT 3080 Listener(SockAddrInet("192.168.0.250", 3080), BDHttp_service) #---------------------------------------------------------# #---------------------------------------------------------# # A belso halorol a DMZ elerese ssh-n keresztul class BDSsh(PlugProxy): def config(self): pass def init(name): BDSsh_service = \ Service("BDSsh", TransparentChainer(), BDSsh) # ipchains -A input -i eth2 -d 192.168.1.0/24 22 -j REDIRECT 3022 Listener(SockAddrInet("192.168.0.250", 3022), BDSsh_service) #---------------------------------------------------------# #---------------------------------------------------------# # Az internetrol a DMZ elerese http-n keresztul class IDHttp(HttpProxy): def config(self): self.transparent_mode = 0 def init(name): # A 192.168.1.2 cimen a 80-as porton van a www szerver IDHttp_service = \ Service("IDHttp", DirectedChainer(SockAddrInet("192.168.1.2", 80), IDHttp) Listener(SockAddrInet("100.100.100.100", 80), IDHttp_service) #---------------------------------------------------------# -- Udvozlettel Zsiga