Transproxy (was: Re: Serverkonfiguration)
M. Houdek
linux at houdek.de
Fre Dez 5 17:06:51 GMT 2008
Am Freitag 05 Dezember 2008 15:49:44 schrieb Erik Zettel:
> Am Freitag, den 05.12.2008, 12:58 +0100 schrieb Christian Meseberg:
> > Wie kann die Benutzung des Internets alternativ überwacht werden?
> >
> > Kann der Proxy auf dem selben Server wie LTPS laufen? Müsst ja bei so
> > wenig ThinClients machbar sein. Außerdem wird noch ein Fileserver mit
> > Samba benötigt. Kann da auch ein Mac eingebunden werden?
>
> Wenn du in einem solchen "Umfeld" einen Proxy aufsetzen willst, würde
> ich dir dringendst empfehlen, einmal den Begriff "transparenter Proxy"
> nach zuschlagen, da ein normaler Proxy durch den $USER per Mausklick im
> Browser deaktiviert werden kann.
... wodurch er dann keinen Zugriff mehr zum Internet hat. Zumindest, wenn kein
Default-Gateway die Pakete ins Internet routet - was man in dem Fall ja so
einrichten sollte. Die Paketbehandlung (iptables) muss man ja eh konfigurieren
- dann sollte man auch gleich das Forwarden der Web-Protokolle unterbinden.
Ein transparenter Proxy hat übrigens den Nachteil, dass er nicht für SSL-
Verbindungen funktioniert. Dass geht nur, wenn der Proxy die gesicherte 1-
zu-1-Verbindung zum Zielrechner aufbricht und daraus 2 gesicherte Verbindungen
macht. Als Angriff nennt man so was Man-in-the-Middle-Attacke und es
nantürlich datenschutzrechtlich bedenklich. Der User kann die Echtheit einer
HTTPS-Seite nicht mehr prüfen, da er ja immer nur das lokale SSL-Zertifikat
vom Proxy erhält.
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.
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: https://lists.ubuntu.com/archives/ubuntu-de/attachments/20081205/0496d90f/attachment-0001.htm