
OK, vielleicht bedarf dieser Link nach 2 Tage naktem Herumstehen noch einer Erklärung:
Angenommen, wir sitzen in einem öffentlichen WLAN-Netzwerk, wo wir vielleicht nicht besonders Lust darauf haben, unsere Verbindungen öffentlich preiszugeben. Zugegebenermassen, das wird wohl nur die paranoiden Leuten interessieren (die nicht-paranoiden sitzen voller Begeisterung über das Phänomen “offenes WLAN-Netzwerk” vor ihrem Laptop und scheissen auf Datensicherheit), aber immerhin:
Hier erst mal die Command Line:
ssh [<user>@]<ip-address> -p <port> -D <socks>
… und hier das Thema:
Wie tunnle ich eine Verbindung mit SSH?
SSH (Secure Shell) ist ein Protokoll/Programm, das Remote-Logins auf entfernte Rechner erlaubt. Im Gegensatz zu Telnet oder Ähnlichem wird eine SSH-Verbindung verschlüsselt, was sich auch nutzen lässt für Web-Browsen:
- <user> steht für den Benutzernamen auf dem SSH-Server, auf den verbunden werden soll; wird nichts angegeben, so wird mit demselben Usernamen wie auf dem lokalen Rechner eine Verbindung hergestellt.
- <ip_address> steht für die IP-Adresse des SSH-Servers, auf den verbunden werden soll.
- Das -p Flag mit der dahinterstehenden Nummer gibt die Nummer des Ports an, über welchen auf den SSH-Server verbunden werden soll; wird nichts angegeben, so wird der Standard-Port 22 verwendet.
- Das -D Flag erstellt auf dem lokalen Rechner (localhost) einen SOCKS-Proxy-Daemon, der auf alle Anfrage auf den Port <int_port> hört und diese an den verbundenen SSH-Server weiterleitet.
- Anmerkung: Für eine SSH-Verbindung muss lokal ein OpenSSH-Client installiert sein (am besten, man installiert auch gleich einen OpenSSH-Server).
Wir können unsere Internetverbindung durch diesen SOCKS-Tunnel schicken, indem wir uns auf den mit SSH lokal erstellten SOCKS-Proxy verbinden, z.B. beim Webbrowser. In dessen Einstellungen müssen die Proxy-Einstellungen so verändert werden, dass auf localhost bzw. 127.0.0.1 verbunden wird. Die Portnummer kann frei gewählt werden, sie muss einfach mit der Nummer übereinstimmen, über welche mit dem lokalen SOCKS-Proxy verbunden werden soll.
Definieren wir also mit dem -D Flag den Wert 9999, muss im Webbrowser die Portnummer 9999 angegeben werden.
Unter Firefox 3.5 (Shiretoko) sieht dies etwa so aus:

- Anmerkung: Die Sperrung des Webbrowsers auf localhost sollte man deaktivieren.
Aber… weshalb mache ich das?
Zum Einen bin auch ich ein wenig paranoid, was solche Dinge anbelangt. Andererseits trieb mich aber vordergründig folgender Umstand zum Nachforschen in diesem Gebiet (vorsorglich muss ich noch erwähnen, dass ich bislang noch nicht erfolgreich gewesen bin):
Filter, Filter…

Dank der Erziehungsdirektion Bern hängt zwischen unsere Schule und der weiten Welt des Internets ein Proxy-Server. Dieser hat u.A. die Aufgabe, unangebrachte Seiten rauszufiltern, sodass SchülerInnen die PCs der Schule nicht unnötig besetzen für den Besuch auf Seiten wie YouTube oder Facebook.
Irgendwie verständlich.
Seit letzten Herbst steht in der Schule auch ein WLAN-Netzwerk zur Verfügung, d.h. SchülerInnen haben nun die Möglichkeit, mit ihren privaten Netbooks, Laptops, iPhones/iPods oder anderen Gerätschaften das gymnasiale Netzwerk nutzen.
Auch da ist eine gewisse Einschränkung des Internetzugangs angebracht, schliesslich sollen die Sicherheit und Stabilität des gymnasialen Netzwerks nicht plötzlich gefährdet sein (z.B. Malware, Viren u.Ä.).
Nun aber meine Frage:
Muss hier wirklich derselbe erziehungsdirektionale Proxy-Server zwischendrin hängen, der auch YouTube, Facebook etc. rausfiltert? Schliesslich schränken SchülerInnen mit privaten Laptops die Verfügbarkeit von Computern in der Schule ja nicht ein; weshalb sollen diese also nicht auch Videos im Internet anschauen können?
Zudem sperrt der Proxy auch das Herunterladen von Archiven (ZIP, Tar, …) sowie Verbindungen auf Debian/Ubuntu-Update-Server (und wahrscheinlich auch andere Repositories) für APT, was die Nutzung des gymnasialen Netzwerks zusätzlich “sinnlos” macht.
- Anmerkung: Findet und nutzt man ein in der Schule befindliches LAN-Kabel, so steht einem die Weite des Internets fast grenzenlos zur Verfügung, da hier der Proxy irgendwie nicht wirkt.
… sofern man nicht eine Alternative sucht.
Seit einiger Zeit bemühen sich einige meiner Klassenkameraden (inklusive ich selbst) immer wieder, diesen Proxy zu umgehen. Weshalb?
Ich persönlich vergleiche den Internetzugang in unserer Schule auch immer wieder gerne mit einer wahrhaft schönen Panoramasicht — betrachtet durch ein stecknadelkopfgrosses Loch in einer 2 Meter dicken Wand.
Das ist nicht schön.
SSH Verbindung herstellen
Vorhin hatte ich erwähnt, dass ich noch nicht erfolgreich gewesen bin. Das liegt an folgendem Grund:
Gesperrte Ports
Vom Proxy werden nur bestimmte Ports offengelassen, wobei nun der Port 22 (Standard-SSH-Port) leider nicht dazugehört — ich spreche aus Erfahrung. Doch SSH muss ja nicht zwangsläufig über diesen Port verbinden…
Der Standard-HTTP-Port 80 ist gesperrt, der stattdessen genutzte HTTP-Port wird gefiltert, d.h. eine SSH-Verbindung über den schuleigenen HTTP-Port würde nicht funktionieren, da das SSH-Protokoll vom Schul-Proxy nicht akzeptiert und folglich verworfen wird.
So kam die Idee auf, einen anderen offenen Port im Netzwerk zu nutzen, der nicht kontrolliert würde. Die Versuche beliefen sich auf die Standard-Ports für DNS (53) und für HTTPS (443). Und hier der momentane Status:
Letzterer funktioniert nicht.
Aber ich bin noch dran.
— euer Ayekat