POC: HTTPS Tunnel

Hallo!

Nachdem ich heute einige Diskussionen mit meinem Informatiklehrer hatte wie man denn diese tollen Jugendschutzfilter ,die Pflicht in der Schule sind, umgehen kann, hat er mich gebeten das ganze mal live vorzuführen. Eine Möglichkeit ist eben ein HTTPS-Tunnel und so würde ich es auch gerne machen:

Schulrechner ----> Schulserver als HTTP Proxy -------HTTPS------> Internet / Mein Server ------ HTTP ----> Internetseite

Wie richte ich am besten auf meinem Server (Debian) so einen HTTPS Tunnel ein und wie kann ich meinem Schulrechner (Debian) sagen, er soll sowohl den Schulserver als HTTP Proxy als auch meinen Server als HTTPS Tunnel nehmen?

Danke und Gruß

Nimda
 
Original von VierZwei
Stichworte: ssh, forwarding, putty

Arbeitet ein SSH Tunnel nicht über SSH? Sprich muss dazu nicht der Schulserver SSH-Verbindungen nach außen durchlassen?

EDIT: Oder muss ich nur meinen SSH Port auf 80 bzw 443 legen?
 
Hi,
ich würde sagen, es reicht nicht einfach aus, einfach einen normalen HTTPs Proxy aufzusetzen, sofern du am Schulserver-Proxy nichts ändern kannst.

Stattdessen musst du eine Art URL-Transformation bauen (k.a. obs dafür Progs gibt, gibt aber einige Website die das Anbieten):
Du tippst: https://deineurl.de/www.hackerboard.de ein, das geht über den Schulserver an deinen Server. Dieser schaut sich nun an was du dir angucken willst (www.google.de) und sendet dies als Antwort. Damit das surfen komfortabel bleibt, sollte dieser Links ersetzen. Also ein Link: www.hackerboard.de/board.php sollte dieser durch https://deineurl.de/www.hackerboard.de/board.php ersetzen.

Dies ist gar nicht so viel Arbeit (wenn man ne Sprache mit halbwegs guter Netzwerkunterstützung/HTTP-Unterstützung nimmt + insbesondere SSL Unterstützung). Der Server lauscht auf Port 443, wenn ein HTTP Header ankommt schaut dieser was hinter deineurl.de steht, lädt diese Seite, ersetzt die URLs in der Antwort und sendet das zurück.

Ein guter Artikel wie man einen eigenen Proxy schreibt (auch wenn der für VB6 ist) findest du hier: http://www.vbarchiv.net/workshop/workshop_57-programmierung-eines-proxy-servers.html
 
Viele Proxies, die ich bisher an Schulen und Bildungseinrichtungen gesehen habe, prüfen die URL lediglich auf 'böse Wörter'. Das würde schon bedeuten, dass du einfach nur statt der URL die IP-Adresse des Hosts eingibst. Also statt xxx.xx eben 66.66.66.66.
Weiterhin bleibt die Frage offen, wie gesperrt wird. DNS? Paketfilter? Zugriffsbasiert? Portblocking? ...?
 
Original von Elderan
Hi,
ich würde sagen, es reicht nicht einfach aus, einfach einen normalen HTTPs Proxy aufzusetzen, sofern du am Schulserver-Proxy nichts ändern kannst.

Wie kommst du darauf? Ich kann doch mit proxychains meine Programme erst durch den Schulserver und dann durch den (inzwischen SSH-)Tunnel leiten. Ich sehe da kein Problem oder irre ich mich?

Wie gesperrt wird ist eigentlich völlig egal. Es muss nur ein Port nach außen freigeschaltet sein (und das ists denn ansonsten hätte man garkein Internet). Portblocking fällt raus weil ich jetzt alles durch den HTTPS Port 443 leite. Sollte ich merken dass der nicht funktioniert setzte ich ihn auf HTTP Port 80 und dann ist das Problem 100%ig ausgehebelt.

Durch die Verschlüsselung des Tunnels fallen auch Packetfilter raus. Denn ein verschlüsselstes Packet kann man nicht lesen. Genau das ist ja gerade Sinn und Zweck des Tunnelings. Sichere Verbindungen über unsichere Kanäle herzustellen. DNS fällt anhand dessen auch raus. Denn die DNS-Anfrage ist auch verschlüsselt und geht weder an den Schulserver, noch an den Filterrechner sondern an meinen Server und der leitet die dann an nen externen DNS Server weiter. Genauso siehts mit "Bad Words" aus. Das sieht der Filter alles nur als verschlüsseltes Kaudawelsch

Was meinst du mit Zugriffsbasiert?

EDIT: So. Gerade nochmal nachgeschaut. Also der Filter heist "Squidguard". Das Ding scheint ein URL Filter zu sein. Allerdings bin ich mir nicht so richtig sicher ob das wirklich das Ding von http://www.squidguard.org ist..
 
Bei uns in der Schule hab ich schon erfolgreich diese Anleitung ausprobiert, der sshd lief dabei zu Hause auf Port 80 und in der Schule hab ich Putty benutzt.
Dann in den Einstellungen von Firefox den Socks5 auf localhost:8080 als Proxy eingestellt und der Filter war erfolgreich umgangen.
 
So. Ich habe das heute mal ausprobiert. Hat alles super geklappt.

1. Mit proxychains nen SSH Tunnel durch den HTTP-Proxy der Schule ne Verbindung zu meinem Server hergestellt.
2. Beliebiges Programm mit Proxychains und geänderter conf gestartet um dann durch den SSH-Socks-Tunnel ne sichere, unzensierte Leitung nach draußen zu haben.

Ich fand es nur ein bisschen blöd, dass man nicht unterschiedliche config Dateien für unterschiedliche Instanzen des Programms benutzen kann. Es gibt nur das Ding in /etc und eine andere Konfig-Datei kann man nicht angeben. Gibts da nen Weg drumherum?
 
Zurück
Oben