Mittwoch, 28. November 2012

Android SSH-Tunnel - Hotspot surfen sichern v2

Redaktionelle Information: Dies ist eine überarbeite Version meines Artikels vom 20.05.2011 aus unserem alten Blog. Seit damals hat sich in Sachen Android und ConnectBot einiges getan.

Zu aller erst: Um das, was ich hier gleich beschreiben werde, wirklich produktiv nutzen zu können, sollte das Android Gerät gerooted sein! Hier zu erklären, wie man sein Handy rooted, würde den Artikel sprengen, vor allem da es bei jedem Handy und Hersteller unterschiedlich funktioniert. Eine gute Anlaufstelle für diese Dinge ist das xda-developers Forum. Grundvoraussetzung ist auch, dass man Zugang zu einem SSH-Server hat, also auch einen korrekten Login und/oder eine private Schlüsseldatei dafür besitzt. Um zusätzlichen Datenschutz sicherzustellen, würde ich grundsätzlich einen Server mit Standort Deutschland oder zumindest EU empfehlen.

Nun aber zum eigentlichen Thema: dem Aufbau eines (dynamischen) SSH-Tunnels unter Android und die systemweite Einrichtung desgleichen zum sicheren Surfen und Mails schreiben.



Jeder kennt diese Situation gut: an irgend einem öffentlichen Ort existiert ein Wlan-Hotspot, der zum Beispiel von McDonalds zur kostenlosen Nutzung bereit gestellt wird. Natürlich will man ihn anstatt seiner Mobilfunkverbindung nutzen. Vor allem wegen der besseren Geschwindigkeit, oder auch wegen der geringeren Kosten. Allerdings sollte man hier niemals sehr persönliche und schon dreimal nicht vertrauliche Daten übertragen. Das Risiko von Mitschneidern ist viel zu groß. Will man nun aber dennoch eine vertrauliche Mail schreiben oder einem Freund die Bilder der letzten Nacht schicken, muss man entweder das Risiko eingehen oder doch die Mobilfunkverbindung benutzen.

Abhilfe schafft hier entweder ein verschlüsseltes VPN, oder ein SSH-Tunnel (SSH Verbindungen sind generell verschlüsselt).

Auch wenn die Einrichtung eines kleinen privaten VPNs nicht sonderlich schwer ist und die Einrichtung in Android auch ohne rooten problemlos klappt, möchte ich die SSH-Tunnel-Methode vorstellen. Ich finde sie wesentlich eleganter.

Zunächst benötigt man zwei kostenlose Apps die man im Play Store finden kann: VX ConnectBot und ProxyDroid. Ich habe mich diesmal für VX ConnectBot entschieden, da im Vergleich zum Original viele Bugs beseitigt und neue Features hinzugefügt wurden.



Startet man ConnectBot, kann man unten eine Serveradresse mit Benutzer eingeben. Vom Server wird man dann nach einem validen Login gefragt. Dieser erfolgt in aller Regel mit einem Passwort.
VX ConnectBot kann Passwörter allerdings nicht speichern, man müsste es bei jeder Verbindung neu eingeben. Wenn ich meinen Tunnel öfter brauche, kann das auf dauer ziemlich nervig werden.

Es gibt nun mehrere Wege dieses Problem zu umgehen:
  • Publickey Authentisierung benutzen (mit oder ohne zusätzlichem Passwort, je nach Belieben)
  • Eine App benutzen, die Passwörter speichern kann

Generell bin ich ganz klar für die erste Methode. Eine App, die meine Passwörter verwaltet, ist mir nicht geheuer. Eine Datei, die ich selbst platzieren kann und bei der ich selbst die Rechte verwalten kann, klingt irgendwie sicherer.

Dennoch möchte ich auch kurz auf die zweite Möglichkeit eingehen. Dazu gibt es eine App mit dem Namen SSH Tunnel (vom gleichen Entwickler wie ProxyDroid). Praktischerweise kombiniert sie die Einrichtung des Tunnels und die des systemweiten Proxies. Sie ist also für alle geeignet, die mit der Speicherung des Passworts keine Probleme haben und den einfacheren Weg gehen wollen.



Wer sich lieber mit Keydateien anmeldet oder das sowieso tun muss, der muss den Weg über ConnectBot gehen, den ich jetzt erklären werde.

VX ConnectBot bietet sowohl die Möglichkeit neue Keypaare zu erstellen, als auch bereits vorhandene zu importieren. Wie man ein Paar erstellt und den Public-Key auf einem Server einrichtet, werde ich hier nicht behandeln. Wenn ein privater Key importiert (oder erstellt) wird, kann er ab dann in den Einstellungen einer Verbindung zum Login verwendet werden:

Unter "Pubkeys verwalten" kann man Keypaare erstellen oder importieren.

In den Einstellungen einer Verbindung den importierten oder generierten Key auswählen

So sollten die anderen Einstellungen aussehen

Wie man sieht, habe ich hier zusätzlich die Kompression eingeschaltet. Ich erhoffe mir dadurch Geschwindigkeitsvorteile, wenn ich den SSH-Tunnel auch im mobilen Netzwerk aktiviere. Zum Testen kam ich allerdings noch nicht, deshalb kann ich nicht bestätigen, dass es wirklich etwas bringt.
Eine Kommandozeilensitzung benötigen wir für einen Tunnel nicht und wenn möglich soll VX ConnectBot versuchen, die Verbindung zu halten.

Nun kann man den Tunnel einrichten. Das passiert über den Menüpunkt "Port-Weiterleitungen editieren", im Kontextmenü des Verbindunsprofils:



Wichtig beim Einrichten der neuen Port-Weiterleitung ist der Typ (muss auf "Dynamisch" stehen) und das Ziel (sollte leer sein). Nur so wird beim Verbindungsaufbau ein SOCKS5-Proxy Server gestartet, den wir im nächsten Schritt systemweit nutzen können. Spitzname und Quellport sind im Endeffekt frei wählbar. Beim Quellport kann man aber naturgemäß keine Portnummern unter 1024 angeben.

Nachdem die Verbindung in ConnectBot hergestellt wurde, kann man schließlich in ProxyDroid (Start benötigt Rootrechte!) folgende Einstellungen tätigen:



Wichtige Einstellungen hier:
  • Host auf "localhost"
  • Port auf den selbst gewählten Quellport von gerade
  • Proxy Type auf "SOCKS5"
  • Den Haken bei "DNS Proxy" setzen!

Der Haken bei "DNS Proxy" bewirkt, dass alle DNS-Anfragen, die wir versenden, ebenfalls durch den Tunnel geschickt werden. Das hat große Vorteile für den Datenschutz, da dann nichtmal diese Anfragen mitgeschnitten werden können. Zudem kann diese Option von Vorteil sein, wenn Seiten nach dem Aktivieren des Proxys nicht laden.

Sofort nach aktivieren des "Proxy Switch" sind die Einstellungen nun systemweit aktiviert. Jede App, die aufs Internet zugreift schickt nun alles direkt über den SSH-Tunnel.

Zum Test und als Beweis, dass alles funktioniert hat, sollte man im Anschluss immer seine IP-Adresse überprüfen. Hat man beim Surfen die IP des Servers, läuft alles wie geplant:

(vorher - nachher)

Viel Spaß beim sicheren Surfen ;)

1 Kommentar:

  1. Toll! Danke für Hinweise. Wenn Sie ein Investment darin machen wollen, kann Ich Ihnen noch vdr datenraum virtueller als nützliches Informationsspeicherungplattform empfehlen.

    AntwortenLöschen