multipath-routing und transparenter proxy

Moderator: Securepoint

achim
Beiträge: 255
Registriert: Fr 09.03.2007, 11:42
Wohnort: Flensburg
Kontaktdaten:

multipath-routing und transparenter proxy

Beitrag von achim »

da ich den transparenten proxy bisher gemieden hab, ist das wohl nichts neues und eigentlich auch logisch, aber falls sich jemand wundert bzw. hier wäre noch verbesserungspotential:

Regeln:
- Client1 -> internet -> http -> ppp40
- Mailserver -> internet -> http -> ppp41

Transparenten proxy aktiviert auf eth1.

Effekt:
- ich schreibe gerade 80 Zeilen hier ins Forum (Telefonat hält mich von STRG+A und STRG+C ab), schicke den Post ab und er ist weg...
- transparenter proxy schickt mich mittendrin über das andere pppoe interface
- Die Regeln für Client1 und Mailserver sind irrelevant

Ausweg:
- ausgehende Adresse im HTTP-Proxy definieren
-> alle Clients / Server gehen über das selbe Interface raus und http-multipathrouting hat sich erledigt

Mir fehlen hier Ausnahmen für den transparenten Proxy oder die Möglichkeit ausgehende Adressen für verschiedene Netze/Clients definieren zu können.

Benutzeravatar
Erik
Securepoint
Beiträge: 1480
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

Guten Abend,
ihr Ausweg ist der einzig mögliche - vorrausgesetzt sie haben feste IPs. Bei dynamischen muss die Sache noch etwas anders gehandhabt werden.
Die Möglichkeit Ausnahmen für den Proxy zu definieren hat "unsere" Etage auch schon an die "andere" ;) Etage weitergeleitet.

Sollte das dringend benötigt werden, müssen Sie die iptables per cronjob editieren. Ich kopier hier einmal unsere gefriemelte Lösung rein - und ja ich weiß, dass sie unkomfortabel ist:
Melden Sie sich also einmal per SSH an der Konsole an (admin-Account).
Dann erstellen Sie einen neuen Cronjob und führen mit diesem ein shell-Skript aus:

firewall.foo.local> add extc_application cron5
firewall.foo.local> add extc_template cron5 /tmp/symantec.sh

Der Cursor springt jetzt in die nächste Zeile. Hier fügen Sie jetzt den kompletten Inhalt der angehängten symantec.txt ein und bestätigen dann mit:


**



Zum Schluss erlauben Sie noch von den Clients die Dienste "http", "domain_udp" sowie "domain_tcp" ins gesamte Internet.

Nach einem manuellen Regelupdate auf der Firewall dauert es dann bis zu 5 Minuten, bevor der Cronjob die Regeln zur Umgehung des Proxys in die Firewall schreibt.
die besagte txt-Datei:

Code: Alles auswählen

#!/bin/sh

iptables -t nat -D PREROUTING -d 12.21.72.0/23 -i eth0 -p tcp -m tcp --dport 80 -j RETURN

iptables -t nat -I PREROUTING 2 -d 12.21.72.0/23 -i eth0 -p tcp -m tcp --dport 80 -j RETURN
-d xxx.xxx.xxx.xxx/xx
Zieladdresse, bei der die Benutzung des Proxies umgangen werden soll

-s xxx.xxx.xxx.xxx/xx
Quelladdresse, bei der die Benutzung des Proxies umgangen werden soll


-i ethX
bei -d: ausgehendes Interface
bei -s: eingehendes Interface

der Rest sagt: Wenn Protokoll TCP, Port 80 (=http), dann RETURN (=verlasse die Chain, bevor die Umleitung zum Proxy erfolgt)

Zum Thema mehrere Outgoing Adresses verweise ich mit dem Hinweis *UNTESTED* auf die Website vom Squid:
http://www.squid-cache.org/Doc/config/t ... g_address/
Zerstören können Sie sich damit nichts. Im Fehlerfall hilft "delete extc_template /etc/squid/squid.conf" gefolgt von "config save meineconfig" ;)

achim
Beiträge: 255
Registriert: Fr 09.03.2007, 11:42
Wohnort: Flensburg
Kontaktdaten:

Beitrag von achim »

Das mit den "Etagen" ist immer so ne Sache...

Nein im Ernst. Das ist ja schon mal eine "Lösung", die "nur" noch nach gui schreit.

Danke
Achim

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

möchte auch mal ein paar fragen dazu stellen...also multipath routing übers normale routing funktioniert ja einwandfrei.
nur wie funktioniert das mit dem transparenten proxy? schalte ich den normal aktiv ohne ausgehende adresse funktioniert das multipath routing doch oder?

nur bei der sache wie achim es geschrieben hat gibts probleme oder? also mit rule routing? das funktioniert wiederrum nur bei normalen routing richtig? oder mit ihre lösung via das template?
möchte ich beispielsweise einmal sdsl mit fixer ip für vpns nutzen, und einmal adsl für surfen dann könnt ich ja den proxy ans adsl binden... nur hat der keine fixe ip... wie mache ich das dann? viele fragen...
Zuletzt geändert von Petasch am Di 13.10.2009, 19:01, insgesamt 1-mal geändert.

achim
Beiträge: 255
Registriert: Fr 09.03.2007, 11:42
Wohnort: Flensburg
Kontaktdaten:

Beitrag von achim »

Ich denke, wenn ich dich richtig verstanden habe (das waren u.a. zu viele "?" hintereinander), gilt dieses problem nur mit rule routing UND aktiviertem transparenten proxy UND ohne definierte Adresse für den Proxy.

sprich:
- definiert man eine ausgehende adresse im transparenten proxy (bei mehreren ADSL verbindung) gibt es keine unterbrechungen bei Sessions / Es wird dann aber nur eine Leitung für die proxydienste verwendet -> kein rule routing für http etc.
- möchte ich rule-routing betreiben und z.b. server über leitung 1 per http schicken und clients über leitung 2 für http muss ich das oben genannte template anpassen/implementieren oder den transparenten proxy abschalten (und den "normalen" proxy verwenden)
Zuletzt geändert von achim am Mi 14.10.2009, 17:01, insgesamt 1-mal geändert.

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

aber was ist dann der unterschied zwischen dem normalen und dem transparenten proxy? dort sage ich doch auch nur interner client > intern interface > proxy ... also dürfte doch mit dem "normalen" proxy ohne weiteres (also ohne anpassung von templates etc) kein multipathrouting mit rule routing möglich sein oder?
so wie ich das sehe funktioniert das rule routing nur bei reinem routing wo ich kein proxy zwischenschalte...weil da sage ich ja dann im regelwerk client > internet > http .. und kann das rule routing aktivieren

Benutzeravatar
Erik
Securepoint
Beiträge: 1480
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

Guten Abend,
der Unterschied zwischen normalem und transparentem Proxy ist...die Bezeichnung ;). Der Dienst auf der Firewall ist der selbe. "Transparent" bedeutet in dem Fall nur, dass die Ports 80 und 443 automatisch auf Port 8080 (den Port, auf dem der Proxy läuft) umgebogen werden. Das ganze geschieht für den Client "transparent", also ohne dass er etwas tun muss.
Der einzige Nachteil, wenn man so will: an einem transparenten Proxy kann man sich nicht authentifizieren. Das ist gewollt, da der Client ja wie gesagt nicht mitbekommt, dass da ein Proxy zugange ist. Und würden Sie ihre Zugangsdaten irgendwo eingeben, wenn plötzlich ein Fensterchen aufgeht und danach fragt? Ich hoffe nicht.

Das Rule-Routing funktioniert bei der Benutzung des Proxys nicht - unabhängig davon, ob er transparent läuft oder nicht. Grund dafür ist, dass der Proxy die Verbindung zu beiden Seiten terminiert. Will meinen:
- Der Client kommuniziert mit der Firewall (INPUT-Chain)
- Die Firewall kommuniziert mit dem Server (OUTPUT-Chain)

Die OUTPUT-Chain (also das "was von der Firewall kommt") können Sie über die GUI nicht beeinflussen.

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

naja der unterschied prinzipiel zwischen transparent und "normal" ist mir schhon klar..... mir ging es dabei nur um die sache mit dem multipath routing bzw rule routing... also habe ich es ja richtig erkannt das das nur übers normale routing geht und nicht wenn ein proxy dazwischen hängt... ;o) schön ... oder auch nicht ;o)

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

aber nochmal zu der sache mit den "unterschiedlichen" clients ...demnach müsste es ja möglich sein den proxy transparent an ein adsl interface zu binden ... der server soll aber beispielsweise übers sdsl raus gehen ... dann müsste ich das ja mit dem bearbeiten der iptables hinbekommen richtig? da müsste ich ja dann theoretisch nur die angabe machen wenn source = bestimmte ip dann nutze interface x und verlasse chain damit die umleitung nicht über den proxy läuft....ergebniss, das interne netz nutzt den transparenten proxy via interface 1, server nutzt interface 2 ohne proxy... richtig? wie sieht das template dann aus?

#!/bin/sh
iptables -t nat -D PREROUTING -s 192.168.1.1/32 -i eth2 -p tcp -m tcp --dport 80 -j RETURN

richtig so? (wenn server die ip 192.168.1.1 hat und das interface eth2 für port 80 genutzt werden soll)
Zuletzt geändert von Petasch am Mi 14.10.2009, 20:36, insgesamt 1-mal geändert.

Benutzeravatar
Erik
Securepoint
Beiträge: 1480
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

Sie brauchen zwei Zeilen: die erste löscht einen evtl vorhandenen Eintrag, die zweite Zeile fügt ihn wieder hinzu.
Also:

Code: Alles auswählen

#!/bin/sh
iptables -t nat -D PREROUTING -s 192.168.1.1/32 -i eth2 -p tcp -m tcp --dport 80 -j RETURN
iptables -t nat -I 2 PREROUTING -s 192.168.1.1/32 -i eth2 -p tcp -m tcp --dport 80 -j RETURN
Dann noch ENTWEDER ein Rule-Routing ODER eine Source-Soute für den Server und ab geht es.

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

super....danke ich werds testen

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

leider hat die sache nicht so recht funktioniert.... ;o(
also folgende schritte:
add extc_application cron5 hat funktioniert (wird auch per show extc_application angezeigt)
add extc_template cron5 /tmp/symantec.sh (hat auch funktioniert, habe dann anschliessend in diese datei die 3 zeilen die sie gepostet haben eingetragen und mit enter ** enter abgeschlossen. kann mir das template auch korrekt anzeigen lassen mit show extc_template /tmp/symantec.sh

ein aufruf von dem client mit der ip 192.168.1.1 auf wieistmeineip zeigt aber leider trotzdem die adsl adresse (Dynamisch) an welche der proxy gebunden ist statt der festen auf eth0 so wie im script angegeben!

bitte um hilfe

Benutzeravatar
Erik
Securepoint
Beiträge: 1480
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

Haben Sie "update applications" eingegeben?
Können Sie das Script manuell ausführen, wenn Sie sich als roou-User einloggen?

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

update applications habe ich eingegeben!
also als root kann ich das script starten...sieht folgendermaßen aus:

# sh /tmp/symantec.sh
#

das wars...
was mir nicht ganz klar ist wo in dem script die 2 stehen muss.... in ihrem ersten posting sah das so aus:
iptables -t nat -I PREROUTING 2 -d 12.21.72.0/23 -i eth0 -p tcp -m tcp --dport 80 -j RETURN

in ihrem 2 dagegen so:
iptables -t nat -I 2 PREROUTING -s 192.168.1.1/32 -i eth2 -p tcp -m tcp --dport 80 -j RETURN

oder ist das egal?

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

ah... also ich habe grade mal die 2 vor dem prerouting eingegeben, dann kommt beim start des scriiptes eine fehlermeldung:

# sh /tmp/symantec.sh
iptables v1.4.0: Invalid rule number `PREROUTING'
Try `iptables -h' or 'iptables --help' for more information.
#

ist die 2 hinter dem prerouting scheint das script durchzulaufen, nur funktionieren tuts nicht ;o(

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

komisch,...nachdem ich jetzt das script wieder geändert habe und die 2 hinter dem prerouting stehen habe kommt wenn ich auf der shell das script starte jetzt plötzlich die fehlermeldung:

# sh /tmp/symantec.sh
iptables: Bad rule (does a matching rule exist in that chain?)
iptables v1.4.0: Couldn't load target `RETURN':/usr/lib/iptables/libipt_RETURN.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
#
Zuletzt geändert von Petasch am Do 15.10.2009, 13:59, insgesamt 1-mal geändert.

Benutzeravatar
Erik
Securepoint
Beiträge: 1480
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

da hab ich wohl was vertauscht. Die Reihenfolge ist natürlich nicht egal ;)
Sie denken daran, dass der Cronjob nur alle 5 Minuten läuft? Nach einem Regelupdate dauert es dann eben zwischen 1 und 5 Minuten, bis der Plan funktioniert

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

richtig, habe lange gewartet ... ändert sich nicht... und selbst wenn, mit dem aufruf über die shell als root müsste das doch sofort aktiv sein oder?

Benutzeravatar
Erik
Securepoint
Beiträge: 1480
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

So ist es.
Das würde ich mir gerne mal direkt auf der Firewall anschauen - sofern die bereits im Internet erreichbar ist. Melden Sie sich doch bitte telefonisch hier oder schicken uns die Zugangsdaten.

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

super vielen dank....hat bestens funktioniert...
nur noch eine frage... ich hab mit den beiden befehlen
add extc_application cron5
add extc_template cron5 /tmp/symantec.sh
den cronjob und das script erstellt. bevor sie auf der firewall waren, hat er mir unter
show extc_template_list cron5 nichts angezeigt... mit show extc_application konnte ich den cronjob sehen genauso wie ja auch das template vorhanden war... ich hatte mich schon gewundert das da nichts angezeigt wurde...
jetzt nachdem sie drauf waren wird mit show extc_template_list cron5 das script angezeigt...was habe ich da falsch gemacht das das bei mir nicht war??? vielen dank schonmal

Benutzeravatar
Erik
Securepoint
Beiträge: 1480
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

Ich habe keine Ahnung. Soweit ich mich erinnere, hab ich mir nur das Template anzeigen lassen und dann den iptables-Befehl manuell ausgeführt :D

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

mm na gut ;o) werde ich ja sehen obs klappt wenn ich das dann auf der kundenfirewall mache ....
aber wo wir grade beim thema sind...wir siehts denn mit dem pop3 proxy aus? kann ich den auch an ein interface binden? ;o)

Benutzeravatar
Erik
Securepoint
Beiträge: 1480
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

Auf Nachfrage in der Entwicklungsabteilung bekam ich den POP3-Proxy betreffend die mysteriöse Antwort: "Nein, gibt es (noch) nicht."

Petasch
Beiträge: 450
Registriert: Di 22.05.2007, 13:17

Beitrag von Petasch »

okay, ist aber auch erstmal noch nicht so dramatisch...
nur noch eine andere frage für ausnahmen des proxys...
ich muss für bestimmte seiten im internet den proxy umgehen, da die sonst nich funktionieren (beispiel videokonferenzsystem, läuft über port 80 aber nur wenn der proxy aus ist, ist er an funktionierts leider nicht)...
die einträge in der symantec.sh würden dann so aus sehen:

iptables -t nat -D PREROUTING -d [IP-des-Servers-mit-der-Webseite]/32 -i eth1 -p tcp -m tcp --dport 80 -j RETURN
iptables -t nat -I 2 PREROUTING -d [IP-des-Servers-mit-der-Webseite]/32 -i eth1 -p tcp -m tcp --dport 80 -j RETURN

was muss als maske angegeben werden? 32? oder 0??? als interface muss wieder das interne angegeben werden, richtig? desweiteren müsste ich im manager ein objekt mit der ip anlegen, zone extern, und den clients auf dieses objekt http freischalten, richtig? (da sonst alle clients keine freischalten richtung internet haben, sondern nur auf das interne interface der fw, da proxy)

so alles korrekt?

Benutzeravatar
Erik
Securepoint
Beiträge: 1480
Registriert: Fr 07.11.2008, 11:50

Beitrag von Erik »

iptables -t nat -D PREROUTING -d [IP-des-Servers-mit-der-Webseite]/32 -o eth0 -p tcp -m tcp --dport 80 -j RETURN
iptables -t nat -I PREROUTING 2 -d [IP-des-Servers-mit-der-Webseite]/32 -o eth0 -p tcp -m tcp --dport 80 -j RETURN

Achten Sie auf "-o" (da es das ausgehende Interface ist) sowie den richtigen Namen des Interfaces. Die Maske ist in Ihrem Fall 32 (einzelner Host). "0" wäre das gesamte Internet - unabhängig von der IP - und das wollen Sie sicher nicht ;)

Die Firewall-Regeln müssen SIe dann so bauen, als würden SIe keinen Proxy benutzen:
Interners Netz -> Server -> Port 80/tcp

Gesperrt