Sziasztok! Tud valaki peldat mutatni arra, hogyan lehet zorpal elerni azt, hogy http(s) proxyzas eseten egy cookie-ban beallitott erteket figyelve dontson arrol melyik belso webszervertol kerje el az oldalt? -- Pásztor Lénárd Zoltán rendszergazda Wonderline Hungary Kft. Telefon: (+36-1) 272.0242 Fax: (+36-1) 272.0252 E-mail: lenard.pasztor@wonderline.hu Honlap: www.wonderline.hu
On Mon, 2006-04-03 at 15:04 +0200, Pásztor Lénárd Zoltán wrote:
Sziasztok!
Tud valaki peldat mutatni arra, hogyan lehet zorpal elerni azt, hogy http(s) proxyzas eseten egy cookie-ban beallitott erteket figyelve dontson arrol melyik belso webszervertol kerje el az oldalt?
Probald me a 'Cookie' fejlecet felkerni policy-ba, valahogy igy: class MyHttp(HttpProxy): def config(self): HttpProxy.config(self) self.request_header["Cookie"] = (HTTP_HDR_POLICY, self.processCookie) def processCookie(self, hdr_name, hdr_value): # hdr_value-ban van a Cookie fejlec erteke, abbol kell kiszedni a # teged erdeklo erteket # az 1.2.3.4 erteke lehet valtozo is, amit a Cookie erteke alapjan # raktal ossze. self.session.setServer(SockAddrInet('1.2.3.4', 80)) return HTTP_HDR_ACCEPT def http(): Service('http', MyHttp, router=InbandRouter()) Listener(SockAddrInet('kulsoip', 80), 'http') -- Bazsi
Nagyon szepen koszonom, kiprobalom... Balazs Scheidler wrote:
On Mon, 2006-04-03 at 15:04 +0200, Pásztor Lénárd Zoltán wrote:
Sziasztok!
Tud valaki peldat mutatni arra, hogyan lehet zorpal elerni azt, hogy http(s) proxyzas eseten egy cookie-ban beallitott erteket figyelve dontson arrol melyik belso webszervertol kerje el az oldalt?
Probald me a 'Cookie' fejlecet felkerni policy-ba, valahogy igy:
class MyHttp(HttpProxy): def config(self): HttpProxy.config(self) self.request_header["Cookie"] = (HTTP_HDR_POLICY, self.processCookie)
def processCookie(self, hdr_name, hdr_value): # hdr_value-ban van a Cookie fejlec erteke, abbol kell kiszedni a # teged erdeklo erteket
# az 1.2.3.4 erteke lehet valtozo is, amit a Cookie erteke alapjan # raktal ossze. self.session.setServer(SockAddrInet('1.2.3.4', 80)) return HTTP_HDR_ACCEPT
def http(): Service('http', MyHttp, router=InbandRouter()) Listener(SockAddrInet('kulsoip', 80), 'http')
------------------------------------------------------------------------
_______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
-- Pásztor Lénárd Zoltán rendszergazda Wonderline Hungary Kft. Telefon: (+36-1) 272.0242 Fax: (+36-1) 272.0252 E-mail: lenard.pasztor@wonderline.hu Honlap: www.wonderline.hu
Szia! A jelenlegi konfigom igy nez ki. Jelenleg a GET utani reszre probalok keresni, a cookies resz utana jon majd. A self.setserver nincs hatassal a request kiszolgalasara. Lehet, hogy rossz helyen hasznalom? A leveledben irtad az alabbiakat: def processCookie(self, hdr_name, hdr_value): # hdr_value-ban van a Cookie fejlec erteke, abbol kell kiszedni a # teged erdeklo erteket # az 1.2.3.4 erteke lehet valtozo is, amit a Cookie erteke alapjan # raktal ossze. self.session.setServer(SockAddrInet('1.2.3.4', 80)) return HTTP_HDR_ACCEPT irtad, hogy a hdr_value-ban van a cookie erteke. ezt ugy kell erteni, hogy ha van egy nev=ertek cookie-m akkor az ott hdr_value["nev"] szintaktikaval erheto el, vagy? Idaig a configom: # Includes from Zorp.Core import * from Zorp.Http import * from Zorp.Pssl import * import re # Main configuration Zorp.firewall_name = 'zorp' # Networks InetZone( "Internet", "0.0.0.0/0", inbound_services=["http", "https"], outbound_services=["http", "https"] ) InetZone( "app-net", "10.11.0.0/16", inbound_services=["http", "https"], outbound_services=["http", "https"] ) # HTTP Proxy class HTTPProxy(HttpProxy): def config(self): HttpProxy.config(self) self.default_port = 443 self.request["GET"] = (HTTP_REQ_POLICY, self.test_url) def test_url(self, method, url, version): url_match=re.compile(".*ch-de$") result=url_match.findall(url) if (result): self.session.setServer(SockAddrInet('10.10.12.6', 443)) return HTTP_REQ_ACCEPT else: self.session.setServer(SockAddrInet('10.10.11.6', 443)) return HTTP_REQ_ACCEPT # HTTPS Proxy - Listener class HTTPSListener(PsslProxy): def config(self): PsslProxy.config(self); self.copy_to_server = TRUE; self.copy_to_client = TRUE; self.client_need_ssl = TRUE; self.server_need_ssl = FALSE; self.shutdown_soft = TRUE; self.client_verify_type = SSL_VERIFY_NONE; self.server_verify_type = SSL_VERIFY_NONE; self.client_cert = "/etc/zorp/certs/test.crt"; self.client_key = "/etc/zorp/keys/test.key"; # HTTPS Proxy class HTTPSHelper(HttpProxy): def config(self): HttpProxy.config(self) self.default_port = 443 self.request["GET"] = (HTTP_REQ_POLICY, self.is_svajc) def is_svajc(self, method, url, version): sw_match=re.compile(".*ch-de$") matched=sw_match.findall(url) if (matched): self.session.setServer(SockAddrInet('10.10.12.6', 443)) return HTTP_REQ_ACCEPT else: self.session.setServer(SockAddrInet('10.10.11.6', 443)) return HTTP_REQ_ACCEPT # HTTPS Proxy - Worker class HTTPSWorker(PsslProxy): def config(self): PsslProxy.config(self); self.copy_to_server = TRUE; self.copy_to_client = TRUE; self.client_need_ssl = FALSE; self.server_need_ssl = TRUE; self.shutdown_soft = TRUE; self.client_verify_type = SSL_VERIFY_NONE; self.server_verify_type = SSL_VERIFY_NONE; self.client_cert = "/etc/zorp/certs/test.crt"; self.client_key = "/etc/zorp/keys/test.key"; # Instance definition def web(): Service( "http", HTTPProxy, router=InbandRouter(forge_addr=TRUE), #router=DirectedRouter(forge_addr=TRUE), resolver=DNSResolver() ) Service( "https", HTTPSListener, router=InbandRouter(forge_addr=TRUE), chainer=SideStackChainer( HTTPSHelper, SideStackChainer(HTTPSWorker) ) ) Listener(SockAddrInet('kulsoip', 1200), "http") Listener(SockAddrInet('kulsoip', 1201), "https") Balazs Scheidler wrote:
On Mon, 2006-04-03 at 15:04 +0200, Pásztor Lénárd Zoltán wrote:
Sziasztok!
Tud valaki peldat mutatni arra, hogyan lehet zorpal elerni azt, hogy http(s) proxyzas eseten egy cookie-ban beallitott erteket figyelve dontson arrol melyik belso webszervertol kerje el az oldalt?
Probald me a 'Cookie' fejlecet felkerni policy-ba, valahogy igy:
class MyHttp(HttpProxy): def config(self): HttpProxy.config(self) self.request_header["Cookie"] = (HTTP_HDR_POLICY, self.processCookie)
def processCookie(self, hdr_name, hdr_value): # hdr_value-ban van a Cookie fejlec erteke, abbol kell kiszedni a # teged erdeklo erteket
# az 1.2.3.4 erteke lehet valtozo is, amit a Cookie erteke alapjan # raktal ossze. self.session.setServer(SockAddrInet('1.2.3.4', 80)) return HTTP_HDR_ACCEPT
def http(): Service('http', MyHttp, router=InbandRouter()) Listener(SockAddrInet('kulsoip', 80), 'http')
------------------------------------------------------------------------
_______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
-- Pásztor Lénárd Zoltán rendszergazda Wonderline Hungary Kft. Telefon: (+36-1) 272.0242 Fax: (+36-1) 272.0252 E-mail: lenard.pasztor@wonderline.hu Honlap: www.wonderline.hu
hi, csak gyorsan ránézve: az indentálások is így vannak a fileben? A python allergiás arra, ha nem tartják be az indentálási szabályait. Meg volt ami nem volt vilagos elsore nekem, de lehet,hogy csak az elnevezések miatt (HTTPS Listener és hasonló nevű pl. zavar a Listener miatt). Meg mintha kicsit "zavart" lenne a konfig, de lehet,csak nekem. Ago
Igen, az indentalasok jok. Ha logot teszek a setserver helyere az lefut, ebbol gondolom. Hogy erted, hogy zavart a config? Lehet, hogy igazad van, en most ismerkedem a zorp-al es amit ott latsz az egy 'szimpla' transzparens http/https proxy amit most probalnek egy kis logikaval ellatni miszerint iranyitsa at a belso kereseket. Vagy egyszerubben is meg lehet oldani a http https proxy reszt? Mi zavar pontosan? Deim Ágoston wrote:
hi,
csak gyorsan ránézve: az indentálások is így vannak a fileben? A python allergiás arra, ha nem tartják be az indentálási szabályait. Meg volt ami nem volt vilagos elsore nekem, de lehet,hogy csak az elnevezések miatt (HTTPS Listener és hasonló nevű pl. zavar a Listener miatt).
Meg mintha kicsit "zavart" lenne a konfig, de lehet,csak nekem.
Ago
_______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
-- Pásztor Lénárd Zoltán rendszergazda Wonderline Hungary Kft. Telefon: (+36-1) 272.0242 Fax: (+36-1) 272.0252 E-mail: lenard.pasztor@wonderline.hu Honlap: www.wonderline.hu
hi,
Hogy erted, hogy zavart a config? Lehet, hogy igazad van, en most ismerkedem a zorp-al Összecsúszott a szemem előtt a HTTPSWorker és a HTTPSHelper, felcserélődött (mármint nálam). ÉS emiatt nem láttam meg benne a csak-kliens oldali és csak-szerver oldali ssl konfigot. Rohanás átka. De az indentálásra gyanakodtam.
üdv, Ago
A self.session.setServer(SockAddrInet('1.2.3.4', 80)) hivast barohva teszem nem irja at. Kernek szepen tanacsot mi lehet a baj. Balazs Scheidler wrote:
On Mon, 2006-04-03 at 15:04 +0200, Pásztor Lénárd Zoltán wrote:
Sziasztok!
Tud valaki peldat mutatni arra, hogyan lehet zorpal elerni azt, hogy http(s) proxyzas eseten egy cookie-ban beallitott erteket figyelve dontson arrol melyik belso webszervertol kerje el az oldalt?
Probald me a 'Cookie' fejlecet felkerni policy-ba, valahogy igy:
class MyHttp(HttpProxy): def config(self): HttpProxy.config(self) self.request_header["Cookie"] = (HTTP_HDR_POLICY, self.processCookie)
def processCookie(self, hdr_name, hdr_value): # hdr_value-ban van a Cookie fejlec erteke, abbol kell kiszedni a # teged erdeklo erteket
# az 1.2.3.4 erteke lehet valtozo is, amit a Cookie erteke alapjan # raktal ossze. self.session.setServer(SockAddrInet('1.2.3.4', 80)) return HTTP_HDR_ACCEPT
def http(): Service('http', MyHttp, router=InbandRouter()) Listener(SockAddrInet('kulsoip', 80), 'http')
------------------------------------------------------------------------
_______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
-- Pásztor Lénárd Zoltán rendszergazda Wonderline Hungary Kft. Telefon: (+36-1) 272.0242 Fax: (+36-1) 272.0252 E-mail: lenard.pasztor@wonderline.hu Honlap: www.wonderline.hu
Bocsanat, hogy megint zavarok, de mar celegyenesben :) Szoval, ha kiveszem a router=InbandRouter(forge_addr=TRUE) sort akkor megy, de ezesetben bukom a transzparens mukodest, azaz a zorp ip-je latszik a belso webszerver access logjaban, azaz a zorp a belso ip-jet hasznalva csatlakozik. Hogyan mondhatom meg az inbandRouter-nek, hogy ne(!) irja at a server_address-t a dns alapjan? ...Vagy hogyan maradhat meg a transzparens mukodes (tproxy) inband router nelkul? Balazs Scheidler wrote:
On Mon, 2006-04-03 at 15:04 +0200, Pásztor Lénárd Zoltán wrote:
Sziasztok!
Tud valaki peldat mutatni arra, hogyan lehet zorpal elerni azt, hogy http(s) proxyzas eseten egy cookie-ban beallitott erteket figyelve dontson arrol melyik belso webszervertol kerje el az oldalt?
Probald me a 'Cookie' fejlecet felkerni policy-ba, valahogy igy:
class MyHttp(HttpProxy): def config(self): HttpProxy.config(self) self.request_header["Cookie"] = (HTTP_HDR_POLICY, self.processCookie)
def processCookie(self, hdr_name, hdr_value): # hdr_value-ban van a Cookie fejlec erteke, abbol kell kiszedni a # teged erdeklo erteket
# az 1.2.3.4 erteke lehet valtozo is, amit a Cookie erteke alapjan # raktal ossze. self.session.setServer(SockAddrInet('1.2.3.4', 80)) return HTTP_HDR_ACCEPT
def http(): Service('http', MyHttp, router=InbandRouter()) Listener(SockAddrInet('kulsoip', 80), 'http')
------------------------------------------------------------------------
_______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
-- Pásztor Lénárd Zoltán rendszergazda Wonderline Hungary Kft. Telefon: (+36-1) 272.0242 Fax: (+36-1) 272.0252 E-mail: lenard.pasztor@wonderline.hu Honlap: www.wonderline.hu
On Wed, 2006-04-05 at 15:25 +0200, Pásztor Lénárd Zoltán wrote:
Bocsanat, hogy megint zavarok, de mar celegyenesben :) Szoval, ha kiveszem a router=InbandRouter(forge_addr=TRUE) sort akkor megy, de ezesetben bukom a transzparens mukodest, azaz a zorp ip-je latszik a belso webszerver access logjaban, azaz a zorp a belso ip-jet hasznalva csatlakozik.
...Vagy hogyan maradhat meg a transzparens mukodes (tproxy) inband router nelkul?
Pl. TransparentRouter(forge_addr=TRUE) -- Szalay Attila BalaBit IT Biztonságtechnikai Kft. tel:(36-1)-371-05-40 1116 Bp. Csurgoi ut 20/b fax:(36-1)-208-08-75 http://www.balabit.hu/
Kiraly, igy mar teszi a dolgat, koszonom! :) Hol talalok leirast arrol milyen fuggvenyei vannak a zorpnak es ezeket hogyan lehet hasznalni? Az url matching igy mar megy korrektul. A masodik koros dontes a cookie-n alapul. Irtatok, hogy igy kell hasznalnom. def processCookie(self, hdr_name, hdr_value): # hdr_value-ban van a Cookie fejlec erteke, abbol kell kiszedni a # teged erdeklo erteket # az 1.2.3.4 erteke lehet valtozo is, amit a Cookie erteke alapjan # raktal ossze. self.session.setServer(SockAddrInet('1.2.3.4', 80)) return HTTP_HDR_ACCEPT Ezzel az a kerdesem, hogy rakhatom ezt igy egy else agba (ha nem matchelt az url), vagy kulon 'def ...'-t hozzak letre es szurjam be megegyszer a self.request["GET"] = (HTTP_REQ_POLICY, self.url_match) mezot a masodik def nevevel? Probaltam mindkettot, de egyik sem ment. A jelenlegi kod: class HTTPSHelper(HttpProxy): def config(self): HttpProxy.config(self) self.default_port = 443 self.request["GET"] = (HTTP_REQ_POLICY, self.url_or_cookie_match) def url_or_cookie_match(self, method, url, version): sw_match=re.compile("site=+(ch-de|ch-fr|ch-it)") matched_url=sw_match.findall(url) if (matched_url): self.session.setServer(SockAddrInet('10.10.12.6', 443)) log("http.info", 3, "DEBUG: url_matched %s: GET: %s" % (self.session.session_id, url)) return HTTP_REQ_ACCEPT else: cookie_match=re.compile("SplashCookie=+(ch-de|ch-fr|ch-it)") matched_cookie=re.compile(hdr_value); if (matched_cookie): self.session.setServer(SockAddrInet('10.10.12.6', 443)) log("http.info", 3, "DEBUG: cookie_matched %s: GET: %s" % (self.session.session_id, url)) return HTTP_REQ_ACCEPT else: self.session.setServer(SockAddrInet('10.10.10.6', 443)) log("http.info", 3, "DEBUG: cookie_unmatched %s: GET: %s" % (self.session.session_id, url)) return HTTP_REQ_ACCEPT Azt szeretnem elerni, hogy ha matched_url true akkor kiszolgalja onnan ha nem akkor cookie-ra matcholjon es ez dontse el melyik szerverre megy. Hol szurom el? Szalay Attila wrote:
On Wed, 2006-04-05 at 15:25 +0200, Pásztor Lénárd Zoltán wrote:
Bocsanat, hogy megint zavarok, de mar celegyenesben :) Szoval, ha kiveszem a router=InbandRouter(forge_addr=TRUE) sort akkor megy, de ezesetben bukom a transzparens mukodest, azaz a zorp ip-je latszik a belso webszerver access logjaban, azaz a zorp a belso ip-jet hasznalva csatlakozik.
...Vagy hogyan maradhat meg a transzparens mukodes (tproxy) inband router nelkul?
Pl. TransparentRouter(forge_addr=TRUE)
------------------------------------------------------------------------
_______________________________________________ zorp-hu mailing list zorp-hu@lists.balabit.hu https://lists.balabit.hu/mailman/listinfo/zorp-hu
-- Pásztor Lénárd Zoltán rendszergazda Wonderline Hungary Kft. Telefon: (+36-1) 272.0242 Fax: (+36-1) 272.0252 E-mail: lenard.pasztor@wonderline.hu Honlap: www.wonderline.hu
Sziasztok! A subjectben emlitett paros mukodik egyutt? Ha nem, mikorra varhato tproxy patch 2.6.16-hoz? -- Pásztor Lénárd Zoltán rendszergazda Wonderline Hungary Kft. Telefon: (+36-1) 272.0242 Fax: (+36-1) 272.0252 E-mail: lenard.pasztor@wonderline.hu Honlap: www.wonderline.hu
participants (4)
-
Balazs Scheidler
-
Deim Ágoston
-
Pásztor Lénárd Zoltán
-
Szalay Attila