Transproxy (was: Re: Serverkonfiguration)
M. Houdek
linux at houdek.de
Fre Dez 5 19:29:47 GMT 2008
Am Freitag 05 Dezember 2008 19:10:10 schrieb Uli Kleemann:
> Hallo Max,
>
> das würde mih auch interessieren.
Ok, ich hab das Script auf Arbeit, und da bin ich Monat wieder. Ich stell es
dann mit einer Kurzdoku ins Netz und poste den Link hier. Ist aber wie gesagt
noch im "Versuchsstadium". Momentan laufen darüber selten mehr als 10 User.
Noch ein kleiner NAchtrag / Korrektur zu dem unten Beschriebenen (ich hatte es
schon wieder vergessen):
Das Script fängt nicht die HTTPS-Anfrage ab - das hatte wir zuerst versucht,
aber bereits das erste Paket vom Browser an Port 443 enthält den
Zielservernamen nicht mehr (lesbar), um ihn zu extrahieren und gegen den Proxy
zu prüfen. Wir mussten also eine Stufe eher ansetzen und schon die DNS-
Anfragen abfangen. Der angefragte DNS-Name wird dann gegen den Proxy gecheckt
und bei Erfolg die entspreche IP-Adresse zurückgegeben. Bei einer gesperrten
Domain gibt es statt dessen eine lokale IP, hinter der eine Fehlerseite
wartet.
> "M. Houdek" <linux at houdek.de> wrote:
> > [...]
> > Da ich aber vor einem ähnlichen Problem stand (möglichst keine
> > Konfiguration am Client, aber trotzdem Contentfilter im Proxy - der noch
> > dazu selbst nicht transparent laufen kann, da fremdadministriert), habe
> > ich mit einem Schüler zusammen ein Konzept entwickelt, mit dem es dennoch
> > transparent funktioniert.
> >
> > Für HTTP war es kein Problem, das Tool transproxy lauscht an Port 80 und
> > leitet ankommende Pakete als Proxyanfrage umgewandelt an den
> > (nichttransparenten) Proxy weiter. Der prüft die Adresse, holt die Seite,
> > prüft den Inhalt und gibt die Daten über den Transproxy weiter an den
> > Client. Die Konfiguration von transproxy ist trivial.
> >
> > Für HTTPS funktioniert das nicht, weil transproxy ja die Pakete
> > manipuliert (Proxy-Anfragen vom Browser sind anders aufgebaut als normale
> > Web-Anfragen), um sie dem richtigen Proxy unterzujubeln. Diese
> > Paketmanipulation zerstört aber die gesicherte Verbindung bei HTTPS. Wir
> > wollten aber HTTPS-Verbidnungen auch nicht ungefiltert zulassen.
> > Da aber der richtige Proxy bei HTTPS-Verbindungen eh nur die Adresse
> > prüfen kann (der Inhalt der Seiten ist ja verschlüsselt) haben wir daher
> > ein Python- Script gebastelt, dass genau hier ansetzt: Es schickt eine
> > eigene (Proxy-)Anfrage der Seite an den Proxy. Wird die vom Proxy
> > erlaubt, schaltet das Script das Masquerading in iptables für diese
> > Verbindung frei und der User kann zu dieser Adresse direkt eine
> > HTTPS-Verbindung aufbauen.
> >
> > Das Script läuft seit Sommer diesen Jahres im Versuchsbetrieb. Es ist
> > noch nicht ganz ausgereift. Bei Interesse einfach PM an mich.
> >
> > --
> > Gruß
> > MaxX
> >
> > Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen.
> > Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.
--
Gruß
MaxX
Bitte beachten: Diese Mailadresse nimmt nur Listenmails entgegen.
Für PM bitte den Empfänger gegen den Namen in der Sig tauschen.