pre1

Sicher surfen in fremden Netzen

27. November 2007

Bahnhöfe, Hotels, Cafés, Flughäfen – WLAN-Hotspots gibt es mittlerweile an fast jeder Ecke, und wer ein Notebook sein eigen nennt, möchte unterwegs auf die unendlichen Weiten des Internets nicht gerne verzichten. Aber auch beim Surfen im Uni-Netz, auf Kongressen oder bei einem Bekannten befindet man sich normalerweise in einem Netzwerk, welches nicht unter der eigenen Kontrolle ist und bei dem nicht mit Gewissheit gesagt werden kann, wer mit welchen Privilegien dort ebenfalls Zugriff hat.

Dabei muss man sich im Klaren darüber sein, dass der gesamte Datenverkehr, welcher über unverschlüsselte Protokolle (http, POP3, SMTP, IMAP, IRC, ICQ, MSN usw.) erfolgt, von anderen Teilnehmern des Netzes mitgelesen (und im schlimmeren Fall sogar verändert) werden kann. Dies ist in einem WLAN sogar noch wesentlich einfacher als in geswitchten Netzen, da die per Funk übertragenen Pakete ähnlich wie bei einem Hub von jeder Netzwerkkarte im Promiscuous-Mode mitgeschnitten werden können.

Eine sichere Lösung wäre ein VPN, jedoch ist der Aufwand, ein solches einzurichten, vergleichsweise hoch, und nicht jedem steht die dafür benötigte Infrastruktur (dedizierter Server bzw. vServer mit in den Kernel einkompilierten tun/tap-Devices) zur Verfügung. Dieses kleine Tutorial soll zeigen, wie man schnell und einfach mit Bordmitteln von Mac OS X eine sichere Verbindung heraus aus unsicheren Netzen erstellt. Voraussetzung ist jedoch der Zugriff per SSH auf einen vertrauenswürdigen Server. (Dieser Server benötigt selbstverständlich seinerseits Zugriff auf das Internet; in meinem Fall ist es ein gemieteter vServer.)

Wer einmal wissen möchte, welche Daten im Klartext durch die Leitung gehen, kann diese mit dem Kommandozeilenprogramm tcpdump mitschneiden.

sudo tcpdump -A -s 2048
gibt die Pakete auf dem Terminal aus, die Option -w ~/Desktop/capture.pcap speichert den Mitschnitt als Datei auf dem Desktop. Mit dem CocoaPacketAnalyzer kann diese dann komfortabel betrachtet und durchsucht werden.

Das Kommandozeilenprogramm ssh ist vielleicht bekannt als sicherer Ersatz für telnet oder ähnliche Software, die ein Terminal eines entfernten Rechners lokal zur Verfügung stellen. Tatsächlich bietet es jedoch viele weitere Funktionen, wie beispielsweise Portweiterleitung oder die Basis für sichere Alternativen zu FTP und RCP (SFTP und SCP).

Für unseren Zweck ist die Möglichkeit interessant, dass sich der ssh-Client wie ein SOCKS-Server verhalten kann. Dies ist nicht weiter kompliziert, ein Aufruf von

ssh -fND 4223 user@server
stellt eine Verbindung zu server her, loggt sich mit user ein, fragt nach dessen Passwort und startet auf server einen SOCKS-Proxy. Lokal werden jetzt alle Verbindungen auf Port 4223 verschlüsselt zu server weitergeleitet und die Verbindung von dort aus hergestellt. ACHTUNG! Es ist nicht die gesamte Strecke vom Client (also dem Notebook) bis zum (Web-)Server (beispielsweise einer besuchten Webseite) verschlüsselt; lediglich die Verbindung bis zum eigenen Server. Von dort aus erfolgt (wenn kein verschlüsseltes Protokoll verwendet wird) die Verbindung weiterhin unverschlüsselt. Dies reicht aber aus, um eventuellen Mitlesern in fremden, unsicheren Netzen vorzubeugen.

Der Parameter -f weist ssh an, in den Hintergrund zu gehen, so dass auf dem Terminal weiter gearbeitet werden kann. Die Ausführung von Remote-Kommandos wird mit -N vermieden; -D port startet das lokale, dynamische Port-Forwarding. Weitere Informationen gibt es wie gewohnt per man ssh.

Jetzt müssen die Programme noch so konfiguriert werden, dass sie localhost:4223 auch als SOCKS-Proxy verwenden. Dies kann man entweder in jedem Programm einzeln tun oder man verwendet eine entsprechend konfigurierte Netzwerkumgebung.

Netzwerkumgebungen

Eine solche Umgebung kann in den Netzwerk-Systemeinstellungen erstellt werden. Dazu muss aus der Liste der Umgebungen “Umgebung bearbeiten” ausgewählt werden – dort findet sich, etwas versteckt, die Möglichkeit, eine neue Umgebung anzulegen. In dieser Umgebung muss dann für jedes Netzwerkgerät, welches verwendet werden soll (vermutlich Ethernet und Air-Port) unter “Weitere Optionen” -> “Proxies” localhost:4223 als SOCKS-Proxy eingetragen werden.

Netzwerkeinstellungen

Wenn alles funktioniert hat und die Umgebung ausgewählt wurde, kann man das Ergebnis mit einem Aufruf von wieistmeineip.com überprüfen. Hostname und IP sollten jetzt die des verwendeten Servers sein. Programme mit SOCKS-Unterstützung wie beispielsweise Safari können jetzt sicher verwendet werden, wer unbedingt Software verwenden will/muss, die keine native SOCKS-Unterstützung bietet, sollte sich tsocks mal anschauen.

{ 35 Kommentare… lese sie unten oder schreibe selbst einen }

dolce November 27, 2007 um 20:46

ich habe zwar Tunnelblick und ipCop als openVPN Verbindung, aber finde dein Tutorial echt super! Danke!

Antworten

ad November 27, 2007 um 20:50

Hammer! :upten:

Antworten

Christoph November 27, 2007 um 20:55

:upten: [...und noch 120 weitere Smilies...] :upten:

musste jetzt sein

Antworten

DB November 27, 2007 um 20:55

Verstehe das Tut nicht so recht.

Wo wird hier was verschlüsselt?

IMAPs und POP3s sollte man eh vorziehen, die meisten Provider unterstützen eh nur noch diese Protokolle.

Es gibt doch immer noch eine Instanz, die ins Inet gehen muss oder?

Geht es hier um die Verschlüsselung oder “Verschachtelung” des Traffics?

Background Infos fehlen irgendwie in diesem Tut. :(

Antworten

ad November 27, 2007 um 21:00

Herr Schröder! :-x

:-D

Antworten

Stephan November 27, 2007 um 21:07

IMAPs und POP3s sollte man eh vorziehen, die meisten Provider unterstützen eh nur noch diese Protokolle.

Wer solche Verbindungen nicht über SSL verschlüsselt, hat es sowieso nicht besser verdient. ;)

Geht es hier um die Verschlüsselung oder “Verschachtelung” des Traffics?

Naja, hier geht es wahrscheinlich erst einmal darum, dass eventuelle Lauscher im fremden Netz den Traffic zwar mitsniffen, durch die Verschlüsselung zum Server wenig mit anfangen können.
Wie es ja im fettgedruckten Mittelteil auch steht (vielleicht nicht offensichtlich genug?).

Antworten

DB November 27, 2007 um 21:11

So richtig verstanden habe ich es immer noch nicht ;-)

Szenario:
Ich sitze im Bahnhof, angemeldet an einem Hotspot.

Der Traffic zwischen meinem Notebook und AP muss unverschlüsselt erfolgen, da der AP nichts damit anfangen kann.

Wo greift hier nun der SSH Server?

Antworten

derJan November 27, 2007 um 21:11

@DB: Verschlüsselt ist der Verkehr, der sonst unverschlüsselt durch ein unsicheres Netz geht (z.B. ein WLAN-Hotspot). Die Pakete gehen nicht direkt ins Netz sondern werden verschlüsselt zum eigenen Server getunnelt, die eigentliche Verbindung wird von dort aus aufgebaut.
Selbstverständlich sollte man verschlüsselte Protokolle vorziehen, aber viele Web-Mailer bieten nicht einmal LogIn über HTTPS an…
Wenn ich technischer schreiben soll: gerne – will es nur so machen dass es möglichst alle verstehen…

Antworten

DB November 27, 2007 um 21:12

Also nur was mit meinem unverschlüsseltem Traffic anfangen kann.

Da ja explizit kein WEP, WPA gewählt wurde. Würde auch keinen Sinn machen bei einem öffentlichem AP ;-)

Antworten

DB November 27, 2007 um 21:14

@derJan:

Ja aber was aus meinem Notebook rauskommt, ist ja (wieder) unverschlüsselt oder?
Also auch Plaintext Password etc.

Antworten

Stephan November 27, 2007 um 21:20

Ja aber was aus meinem Notebook rauskommt, ist ja (wieder) unverschlüsselt oder?

Jo, aber erst auf Deinem Laptop und nicht im fremden WLAN/LAN, in dem Du Dich befindest.
Sieh es so:

Laptop — Verschlüsselt –> WLAN/LAN — Verschlüsselt –> Dein Server — Unverschlüsselt –> Internet

Antworten

Stephan November 27, 2007 um 21:21

Zwischen WLAN/LAN und Dein Server kommt noch eine verschlüsselte Internet-Verbindung, die habe ich gerade vergessen. :)

Antworten

dolce November 27, 2007 um 21:24

@DB…. der Vorteil läge z.Bsp.: darin, dass du dich per SSH auf deine Heimbüchse verbindest, dort per SMB deine Daten hast und keiner mitlesen kann. Auch deine Passwörter nicht. Wenn du dich dann über den Umweg wieder ins Netz wagst bist du zwar wieder sichtbar, aber nicht über das öffentliche Bahnhofs – WLAN. Dort bist du geschützt. Das finde ich gut!

Antworten

Nathanael November 27, 2007 um 21:24

Die Uni Freiburg hat ein VPN.
Ist also vorbildlich, oder?

Ach ja – kann das iPhone eigentlich VPNs?

Antworten

maverick November 27, 2007 um 21:24

Genial! Danke :) !

Antworten

DB November 27, 2007 um 21:27

@dolce:
Das verstehe ich.
Dann hat der Autor aber vergessen zu erwähnen, dass man zu Hause einen SSH Server aufbauen muss und auch die IP-Adresse bzw. DynDNS etc.
Und dieser Server / Proxy muss auch dem entfermten Client es ermöglichen zu surfen.

Antworten

maverick November 27, 2007 um 21:30

Nein, in seinem Fall hat er ein Beispiel mit einem vServer im Internet gemacht :) !

Antworten

Der Tho November 27, 2007 um 21:37

Erstmal ein großes lob an den Autor. Super Tutorial. An die Option eines Socket-Proxies hatte ich bisher noch nie gedacht. Habe mich immer mit einzelnen SSH-Tunnels rumgeschlagen. :thumbsup:

@DB: Nein, der Autor hat nichts vergessen. Es wurde dick angemerkt, dass der Zugriff per SSH auf einen vertrauenswürdigen Server Vorraussetzung sei. Das der entfernte Client/Server ein Surfen ermöglichen sollte, ist denke sollte jedem klar sein.

Antworten

DB November 27, 2007 um 21:40

server ist kursiv geschrieben ;-)
Wusste nicht, dass er explizit einen entfernten Server meinte.

Es könnte sich ja auch um einen lokalen Dienst handeln, das wäre dann auch ein “Server”

Nun habe ich es auch verstanden ;-) Gott sei Dank.

Im Prinzip aber nichts anderes als ein VPN.

Wenn gleich etwas einfacher zu managen.
Das aufwendige Management fällt weg, aber nicht die Infrastruktur.

Antworten

DB November 27, 2007 um 21:43

@der Tho

Btw, wenn dieses Tut für Laien sein soll (Der Autor schreibt selbst, er will nicht zu technisch werden)
müsste er konsequenterweise auch erwähnen, wie und wo man dem entfernten Server beibringt, dass die Clients auch surfen dürfen.

Ich denke das ist dem “Laien” nicht klar.

Antworten

Aleks November 27, 2007 um 21:49

Wegen der Frage mit dem VPN auf dem iPhone:

Ja ist möglich!

Einstellungen -> Allgemein -> Netzwerk -> VPN

Antworten

derJan November 27, 2007 um 22:25

@DB: sorry, manches halte ich vermutlich einfach für selbstverständlich…
Der entfernte Server muss natürlich seinerseits Verbindungen ins Internet (Port 80 / 443 etc.) erlauben, was aber normalerweise der Fall ist, da man sich ja über das Internet mit ihm verbindet ;)
Ich verwende einen vServer, der u.a. auch als Mail- und Webserver funktioniert, deswegen musste da nichts weiter konfiguriert werden. OpenVPN ist dort nicht drin, da der Server mit Virtuzzo läuft und ich die tun/tap-Devices nicht in den Kernel einkompilieren kann, so kam ich auf den SOCKS-Tunnel…

Antworten

DB November 27, 2007 um 22:36

@derJan:

Kein Thema.

Habe es dann ja auch verstanden ;-)

Was genau ist ein vServer? Den Begriff habe ich bis dato nicht gehört.

Und über überhaupt? Wie ist die Performance mit dieser SSH Geschichte?

Antworten

derJan November 27, 2007 um 22:43

Ein vServer ist im Prinzip eine virtuelle Maschine die im Internet steht. Ist günstiger als ein Root-Server und mit garantiertem Mindest-RAM auch brauchbar performant.
ssh kann übrigens mit dem Parameter -C auch noch zum Komprimieren der Daten via gzip gebracht werden, aber auch ohne reicht die Performance zum Surfen, Mailen und Chatten…

Antworten

DB November 27, 2007 um 22:44

Okay ;-)

Aber der Parent, der Host, muss ja trotz allem laufen :-)
Da kommt das Argument “günstiger” nur zum Tragen, wenn man sowieso zu Hause eine Maschine anhat

Antworten

derJan November 27, 2007 um 22:47

Nein, der Host steht bei einem Provider und du teilst dir im Prinzip einen Root-Server mit mehreren Leuten.
Beispiel: https://www.server4you.de/de/vserver/index.php

Antworten

DB November 27, 2007 um 22:48

Ah, ok.

Das wusste ich nicht.
Klingt interessant (^_^)

Antworten

johannes November 27, 2007 um 23:00

Danke für das Tutorial.
Wie bei jedem Tutorial sollte man sich eben zusätzlich noch Informationen einholen um das ganze ab zu runden.

Antworten

bigmac November 28, 2007 um 07:52

Verlagert das “Sicherheitsproblem”.
Der Administrationsaufwand für einen V-Server ist sagen wir mal auch nicht ganz ohne. Wenn nun jemand einem die Administration abnimmt muss man diesen nun vollkommen vertrauen.
Das Szenario seinen Mac zu Hause nicht auszuschalten, sondern schlafen zu legen und das Häkchen bei “Aufwachen bei administrativen Fernzugriff” anzuklicken und diesen dann als SSH-Proxy zu verwenden ist allerdings eine sehr geniale Idee. Schließlich muss dort nur der SSH-Port vom Router auf den Mac freigegeben werden. No-ip, dyndns und Co erledigen den Rest.

Auch wenn es jetzt etwas nörgelnd klang, die Idee eines SSH-Socks-Proxies ist wirklich gut.

Antworten

tigion November 28, 2007 um 08:06

Danke für den Beitrag, werde ich sicher mal ausprobieren :thumbsup:

Antworten

moritz November 28, 2007 um 08:19

Ach ja – kann das iPhone eigentlich VPNs?

ja kann es (habe ich aber noch nicht getestet)

das tutorial ist echt super, es wäre auch eine idee sich sollch einen server zu teilen (mit freunden,familie usw).
hast du mal getestet wie so die auslastung ist wenn mehrere clients auf die ssh verbindung zugreifen? (der internet speed reicht ja bei servern im rechen zentrum eh dicke)
dann wird der bestimmt der apache server der auch auf dem server läuft recht lahm oder?

Antworten

derJan November 28, 2007 um 08:38

Naja, eine solche Verbindung ist nicht gerade dafür gedacht, große Dateien zu ziehen, benutze es hauptsächlich zum Surfen unterwegs. Ich teile mir den vServer mit zwei Freunden, haben aber bisher meines Wissens nach noch nicht gleichzeitig unseren Traffic darüber getunnelt. Auch der Apache und Postix/Dovecot sind nicht besonders ausgelastet, so dass sich das bis jetzt gegenseitig noch nicht gestört hat…

Antworten

Moses November 28, 2007 um 16:42

Klasse.

Antworten

Weber Januar 10, 2008 um 13:21

Liebe Mac-Gemeinde,

bin seit 1 Monat sogn. “Switcher”, dass ist dann auch so ziemlich das einzige Fremndwort, das ich als Nicht-Informatiker verstehe…
Also ich hab mir das neue Mac Book gekauft, Weil ich mich NICHT mit Sicherheitsproblemen&lücken beschäftigen wollte sondern einfach nur arbeien…..
Bin sehr viel unterwegs und könnte eine sichere verbindung gut gebrauchen..verstehe allerdings hier nur Bahnhof…was sind diese Server…muss ich einen mieten vorher…wo..wie? Also ich hab nur EIN Macbook sonst nix und mag mir auch nicht irgendwo ne komplizierte Technik hinstellen, nur um sicher surfen zu können…

Also, meine Frage wäre: Gibts eine EINFACHE Möglichkeit sicherer Datenübertragung/ Surfens ohne zusätzliche Infrastruktur und Installation? Vielen Dank an die Mac-Gemeinde!

Der Newcomer

Antworten

derJan Januar 11, 2008 um 08:21

Die im Beitrag geschilderte Problematik besteht generell beim Surfen in fremden Netzen, egal ob von Windows, Linux oder einem Mac aus. Soll heißen: die Gefahr ist nicht im MacBook sondern “unterwegs” auf der Strecke zum Empfänger.
Die oben beschriebene Technik funktioniert ebenfalls Betriebssystem-unabhängig, ich habe lediglich die genaue Verwendung unter Mac OS X beschrieben.
Allgemeine Sicherheit im Internet wäre mindestens einen Extra Beitrag hier wert, vielleicht finde ich irgendwann mal die Zeit einen zu verfassen.
Generell ist zu sagen: solange du nicht bei dir zu Hause ins Internet gehst musst du davon ausgehen, dass deine Daten mitgelesen werden können, unabhängig des verwendeten Betriebssystems. Beim Surfen solltest du also verschlüsselte Seiten bevorzugen (https:// – Schloss oben rechts in der Ecke des Safari-Fensters) und alle Protokolle (ICQ, AIM, MSN, IRC etc.) meiden, die unverschlüsselt kommunizieren.

Antworten

{ 2 Trackbacks }

Schreibe einen Kommentar

Smilies gefällig?

Previous post:

Next post: