[zorp-hu] Egy pelda-konfig

Kosa Attila atkosa@shinwa.hu
Fri, 15 Dec 2000 13:34:32 +0100


Hello!
Uj vagyok a listan, ezert eloszoris udvozlok mindenkit.
Egy nagyon hosszu levellel kezdek, amelyben egy konkret
konfiguracion keresztul szeretnem kerni a segitsegeteket,
illetve megtanulni (legalabbis megprobalni) a Zorp
konfiguralasat. Akkor jojjon 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 *
from Zorp.LabelSet import LabelSet

# Ez a tuzfal neve.
Zorp.firewall_name = 'proba1@shinwa.hu'

# 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?
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.
# 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?
#
# 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?
# A transzparensseg miatt kell ipchains redirect?
# 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
# cimet, es a kliens eredeti cime latszodjon?
# A transzparensseg miatt kell ipchains redirect?
			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?
			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
# portszamokat is, csak az ipchains redirect-et kell ezekre
# beallitanom?
	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)

Elnezest kerek, ha tul hosszura nyult a levelem. A kovetkezok
mar (remelhetoleg) rovidebbek lesznek :)

--
			Udvozlettel
					Zsiga