|
Manchmal ist man gezwungen in einem Netzwerk zu arbeiten, welches übertriebene Sicherheitseinstellungen hat, zum Beispiel indem Dienste nach aussen gesperrt sind. Das ist lästig für die User und eine trügerische Sicherheit für den Admin, lassen sich solche Sperren meist recht leicht umgehen. Die Lösung heisst Tunnel und benutzt erlaubte Protokolle, wie zum Beispiel HTTP (Webzugriff), SMTP (Email) oder auch DNS. Durch Fehler in diesen Protokollen, bzw. ein paar kleine Ticks, ist es möglich, in den Datenpaketen anderen Netzwerkverkehr einzupacken und durch die restriktiven Sicherheitsregeln hindurchzuschmuggeln. Leider merkt man oft erst zu spät, dass man sich in einem solchen Netzwerk befindet und konnte keine entsprechenden Vorbereitungen für einen solchen Tunnel einrichten. Deswegen gibt es sowas auch auf unserem Userserver (users.blacksec.org). Jeder User mit einem Account kann diese nutzen. Wir bieten httptunnel an, es gibt zwar auch andere Techniken, aber http ist bei den meisten Netzwerken möglich, sei es direkt oder über einen Prox, ganz im Gegensatz zu anderen protokollen. Httptunnel gibt es für alle Betriebssysteme. Zum jetzigen Zeitpunkt funktionieren alle unixartigen wie zum Beispiel Linux, Solaris, BSD und auch Mac, sowie Windows, allerdings nur NT, 2000 und XP. Windows 9x ist nicht unterstützt. Bei den meisten Linux-Distributionen gibt es das als fertiges Installationspaket, welches über den üblichen Weg installiert werden kann. Bei BSD ist es in den Ports. Für Windows gibt es auf untenstehender Webseite die passende Software zum download. Im schlimmsten Fall, der eigentlich gar nicht so schlimm ist, läd man sich den Quellcode herunter und übersetzt ihn auf seiner Maschine. Das ist Schritt für Schritt beschrieben und dauert nur wenige Minuten. Auf der Homepage des Programmierers gibt es sowohl vorcompilierte Programmpakete, als auch den Quellcode und natürlich Hilfe. Die Homepage lautet: http://www.nocrew.org/software/httptunnel.html Besonders die FAQ sollte man sich vorher durchlesen. Was ist nötig, um sich mit so einem Tunnel den Weg nach draußen zu bahnen? Als erstes sollte man checken, ob man die Software bei sich installiert hat. Es reicht der Client, der mit dem Befehl htc (Http Tunnel Client) aurf der Kommandozeile aufgerufen wird. Ist der Client nicht zu finden, muss die Software erst mal installiert werden, entweder über die Distributions-Repositories, als Binärpaket oder aus den Quellen. Das macht keinen Unterschied, aber die Repositories der Distributionen sind meist der bequemste Weg. Hat man den Client auf seinem Rechner, ist der nächste Schritt ein paar Informationen über das Netzwerk zu sammeln, in dem man sich befindet. Wichtig ist eigentlich nur, wie http-Pakete aus und in das Netzwerk kommen, also ob direkt oder über einen Proxy. Das läßt sich leicht rausfinden, indem man sich die Browsereinstellungen auf einem der Rechner im Netzwerk anschaut. Dort findet man nicht nur die Information, ob ein Proxy benutzt wird, sondern auch dessen Einstellungen. Von diesen hängt ab, wie der Client für den Tunnel benutzt wird. Ohne Proxy ist es am einfachsten. Man starte in der Kommandozeile den Client einfach mit folgenden Optionen: htc -F 2222 users.blacksec.org:8000 Das verbindet den Tunnel, welcher auf Port 8000 des Userservers users.blacksec.org liegt, mit dem lokalen Port 2222. Mit dem Befehl ssh -p 2222 localhost wird jetzt ene SSH-Verbindung zu dem Tunnel aufgebaut. Wenn alles gutgegangen ist, erfolgt die Abfrage von Username und Passwort, welches die Zugangsdaten von users.blacksec.org sind. Mit Proxy funktioniert es im Prinzip genauso, nur muss man dem Client mitteilen, dass man nicht direkt, sondern über Proxy zugreift. Dafür startet man den Client so: htc -P proxy.corp.com:80 -F 2222 users.blacksec.org:8000 Anstatt proxy.corp.com:80 trägt man die Daten ein, die man sich verher auf der Einstellung des Internetbrowsers herausgesucht hat. Das kann eine IP-Adresse oder ein FQDN sein. Die Zahl hinter dem Doppelpunkt ist der Port des Proxyservers, mit dem man sich verbinden möchte. Ab hier ist es dann genauso wie ohne Proxy, man verbindet sich wieder mit dem lokalen Port 2222. Wieso ssh? Wir benutzen ssh aus zwei Gründen. Erstens verschlüsselt es den Netzwerkverkehr, der sonst unverschlüsselt übertragen werden würde. Zweitens kann man mit ssh nicht nur auf eine Shell zugreifen, sondern auch Netzwerkverbindungen tunneln, das heisst theoretisch kann durch den Tunnel jede Netzwerkverbindung übertragen werden, also nicht nur HTTP oder Shell-Zugriff, sondern auch jedes andere Protokoll, so lange es nicht gar zu exotisch ist. Wie portforwarding bei ssh funktioniert, findest man in der Beschreibung von ssh. Es geht nicht Das kann verschiedene Gründe haben, unter anderen eine Firewall, die solche Tunnel erkennt und blockiert. Das ist aber sehr selten. Oft liegt es nur daran, dass der Tunnel bereits von jemand anderes benutzt wird. Deswegen haben wir mehrere Tunnel, welche sich durch den Port unterscheiden. Probiert einfach mal durch, vielleicht müsst ihr nur einen freien Tunnel finden. Die Tunnel liegen an den Ports 8000, 8001, 8002, 8003, 8004 und 443. Der Port 443 ist der Standardport für HTTPS und sollte von jeder Firewall und Proxy zugelassen sein. Der ist aber nur für Notfälle gedacht, wenn alle anderen Ports nicht gehen. Deswegen versucht immer zuerst einen der höheren Port, bevor ihr den Port 443 benutzt und den blockiert. Jemand anderes, bei dem nur 443 geht, wäre so ausgesperrt. Alexander Heidenreich
|