Mit Android durch IPSec-Tunnel sicher(er) in öffentlichen Netzwerken

hotspotHierzulande ist es leider an der Tagesordnung, Mobilfunkkunden eine “Flatrate” zu verkaufen, die eigentlich nur aus einem Volumen mit ein paar wenigen Megabytes pro Monat besteht. Um dem Verkaufsargument “Flatrate” dann doch noch gerecht zu werden, wird die Verbindung zum weltweiten Netz dann zwar nicht in Gänze gekappt, aber auf teilweise bis zu unerträglichen 32 Kbit/s gedrosselt. Glücklich kann sich da derjenige schätzen, der einen offenen WLAN-Hotspot, ein Freifunk-Netzwerk oder einen netten Gastgeber findet, der einem den Weg ins eigene WLAN gestattet.

 

Einleitung

Was beim nachbarlichen WLAN noch nicht das Problem sein mag, denn dieses sollte hoffentlich verschlüsselt sein, ergibt sich bei öffentlichen und unverschlüsselten Funknetzen ein erhebliches Sicherheitsproblem. Jeder andere Teilnehmer des Netzwerkes kann die übermittelten Daten ohne große Mühe abfangen und einsehen. Ob das nun die eher harmlose E-Mail an die Liebste ist oder gleich das Passwort zum nächsten größeren Online-Shop.

Eine Abhilfe kann hier ein sogenanntes Virtual Private Network (VPN) bieten. Durch dieses wird quasi ein Tunnel durch ein vorhandenes Netzwerk geschaffen, durch welchen die privaten Daten dann verschlüsselt übertragen werden und den Weg über den (eigenen) Tunnelendpunkt ins Internet finden.

 

Standort des VPN-Servers

Für ein solches VPN benötigt man, wie bereits erwähnt, einen Tunnelendpunkt, zu welchem die Verbindung hergestellt und der Tunnel terminiert wird. Wo sich dieser befindet, kann ganz unterschiedlich umgesetzt werden:

  1. VPN-Server zuhause am eigenen DSL-Anschluss
    Dies kann zum Beispiel eine FritzBox umsetzen, die sich mit wenigen, einfach Schritten zu einen solchen Server konfigurieren lässt und automatisch Konfigurationen für unterschiedlichste Endgeräte anbietet.
  2. Gemieteter VPN-Zugang
    Im Internet findet man haufenweise Anbieter, die VPN-Zugänge gegen mehr oder weniger hohe Gebühren offerieren.
  3. VPN-Server auf “eigener” Hardware in einem Rechenzentrum
    Diese Möglichkeit wird in diesem Artikel näher beschrieben und stellt meiner Meinung nach die sicherste™ und schnellste Anbindung dar.

 

Sophos-UTM (Astaro) als VPN-Server

Für die hier erläuterte Vorgehensweise setzte ich einen virtuellen Rechner ein, der auf einem dedizierten Server in einem Rechenzentrum betrieben wird. Auf diesem virtuellen Server wurde die Firewall-Distribution Sophos UTM 9 installiert, welche zu früheren Zeiten Astaro genannt wurde. Diese virtuelle Maschine verfügt über eine öffentliche, geroutete IPv4-Adresse und ist somit direkt aus dem Internet erreichbar, was für das hier vorgestellte Szenario eine Voraussetzung ist.

Wenden wir uns nun der Konfiguration seitens des VPN-Serverdienstes auf der Sophos UTM zu.

 

UTM: Neuen Benutzer hinzufügen

astaro-2Nachdem wir uns erfolgreich an der Webkonfigurationsoberfläche der UTM angemeldet haben, wechseln wir im linken Menü zu “Definitionen & Benutzer” -> “Benutzer & Gruppen”.

Sollte keine Nutzerreplikation mit einem Verzeichnisdienst eingerichtet sein, erstellen wir nun einen lokal authentifizierten Nutzer. In diesem Beispiel wollen wir dem Peter Lustig Zugriff auf unser VPN gewähren.

 

astaro-3

 

 

Hier sollten wir natürlich kein leicht zu erratenes Passwort wählen.

 

UTM: VPN-Verbindung einrichten

astaro-4Nun wechseln wir im Menü zu “Fernzugriff” -> “IPSec“. Dort erstellen wir eine neue “IPSec-Fernzugriffsregel” mit folgenden Einstellungen:

 

 

 

astaro-5

 

 

  • Der Name bleibt uns frei überlassen und sollte sprechend gewählt werden.
  • Als Schnittstelle ist jene zu wählen, die über die Anbindung ins Internet und somit über der öffentlichen IP-Adresse verfügt.
  • Im Bereich “Lokale Netzwerke” wählen wir aus der Liste der vorhandenen Netzwerken “Any (4/6)” aus. Dadurch wird gewährleistet, dass sämtlicher Traffic des Smartphones in Richtung Internet (oder allen anderen Netzen) diesen VPN-Tunnel passiert.
  • Der virtuelle Pool kann frei gewählt und dieser den Bedürfnissen der eigenen Netzwerkarchitektur angepasst werden. Grundsätzlich kann dies aber bei der ursprünglichen Konfiguration verbleiben.
  • Die Wahl der Richtlinie ist hier eine Abwägungssache. Wird eine zu schwache Verschlüsselung gewählt, könnten die übermittelten Daten wieder dechiffriert und somit mitgelesen werden. Wird die Verschlüsselung zu stark gesetzt, lastet das die CPU des VPN-Clients (hier unser Smartphone) aus und die Datenübertragungsrate sinkt merkbar.
  • Als Authentifizierungsmethode wählen wir den “Verteilten Schlüssel
  • In den zwei darauffolgenden Feldern wird ein zu verwendender verteilter Schlüssel abgefragt. Diesen kann man sich auf einer Internetseite wie dieser generieren lassen. Dazu als Passworttyp WPA2 in der Dropdownliste des Generators wählen
  • Zudem aktivieren wir das Feld “XAUTH aktivieren”, um zusätzlich zum verteilten Schlüssel den Benutzernamen und das Passwort der zugelassenen Nutzer abzufragen
  • Im letzten Feld fügen wir die Nutzer hinzu, die berechtigt sind, sich zu diesem VPN zu verbinden

 

Zusätzlich zu diesem Schritt sollten im Registerreiter “Erweitert” die Punkte

  • Dead Peer Detection
  • NAT-Traversal und
  • Probing von verteilten Schlüsseln

aktiviert werden, wie in der folgenden Grafik abgebildet:

 

astaro-6

 

 

UTM: Maskierungsregel erstellen

astaro-9Damit der Teilnehmer des virtuellen privaten Netzwerks Inhalte aus dem Internet abrufen kann, ist es notwendig, die aus dem VPN-Pool vergebenen privaten IP-Adressen vor dem Verlassen des Routers (in diesem Falle die Sophos UTM) zu maskieren. Dies basiert auf der Technik der “Network Address Translation” und ist dementsprechend im Menü “Network Protection” -> “NAT” zu finden. Dort erstellen wir im Registerreiter “Maskierung” eine neue Regel. Wir wählen das zu maskierende Netzwerk, in unserem Fall den “VPN-Pool (IPSec)”, wählen eine Position dieser Regel und wollen die privaten Adressen mit der IPv4-Adresse der externen Schnittstelle maskieren. Nach dem Speichern der neuen Regel aktivieren wir diese abschließend.

 

astaro-11

 

 

 

 

Einrichtung auf dem Android-Smartphone

Android: Displaysperre einrichten

Die Einrichtung einer IPSec-Verbindung auf einem Android-Gerät erfordert eine sichere Bildschirmsperre. Darunter fallen die Sicherung des Bildschirmes durch ein Passwort oder eine PIN. Verständlicherweise fällt ein “Fingerwischen” nicht in diese Kategorie. Diese Einstellung sollte eigentlich grundsätzlich auf solchen Geräten getroffen werden, aber für VPN ist dies sogar strikt erforderlich. Daher öffnen wir in den Systemeinstellungen den Konfigurationspunkt “Bildschirmsperre” und wählen anschließend “Bildschirmsicherheit”. Aus der darauffolgenden Liste wählen wir nach persönlichem Geschmack entweder “Passwort oder PIN”. In meinem Fall steht durch die Verschlüsselung meines Smartphones eh keine andere Möglichkeit mehr zur Auswahl:

 

Screenshot_2014-10-16-20-17-48

 

 

Wählt man den Punkt “PIN”, fordert das Gerät dazu auf, diese festzulegen:

 

Screenshot_2014-10-16-20-18-13

 

 

 

Android: VPN-Verbindung einrichten

In den Systemeinstellungen finden wir im Bereich “Drahtlos und Netzwerke” den Punkt “Mehr…” und wählen diesen. Anschließend öffnen wir das Untermenü “VPN”, welches zur Zeit noch leer sein sollte:

 

Screenshot_2014-10-16-19-04-51

 

 

Durch das Plus-Zeichen richten wir nun eine neue VPN-Verbindung ein. Der Name ist wieder frei wählbar, als Typ wählen wir aus der Liste “IPSec Xauth PSK”, geben in der nächste Zeile die öffentliche IP-Adresse unseres VPN-Servers ein (nicht den Hostnamen!) und fügen den in der Sophos UTM konfigurierten verteilten Schlüssel ein. Zudem müssen wir die “Erweiterten Optionen einblenden”, damit wir unseren DNS-Server eintragen können. Dies könnte zum Beispiel die interne IP der Sophos UTM (die IP der IPSec-Schnittstelle) sein oder die IP der heimischen FritzBox.

 

Screenshot_2014-10-16-19-12-16

 

 

 

Android: VPN-Verbindung testen

Anschließend speichern wir diese Verbindung und aktivieren diese testweise. Dazu werden wir aufgefordert, unseren Nutzernamen und das dazugehörige Passwort einzugeben. Dies sind die zuvor in der Sophos konfigurierten Daten, als wir den Nutzer “peter” hinzugefügt haben. Wahlweise können diese Verbindungsdaten gespeichert werden.

 

Screenshot_2014-10-16-19-06-39

 

 

 

Sollte die Verbindung erfolgreich aufgebaut worden sein, erhalten wir diese Meldung zum Einen in der Übersicht der VPN-Verbindungen:

 

Screenshot_2014-10-16-19-08-47

 

und zum Anderen als Schlüsselsymbol in der Statusleiste:

 

Screenshot_2014-10-16-19-09-12

 

 

 

Android: Permanente VPN-Verbindung aktivieren

Nun wäre es aufwendig, bei jedem Beitritt zu einem öffentlichen Netz, zu dem auch die GPRS/UMTS/LTE-Verbindung gezählt werden kann, die VPN-Verbindung zu aktivieren. Daher bietet Android die Option, diese Verbindung zu erzwingen und kein Internetverkehr ohne aktiven Tunnel zuzulassen. Die Einrichtung erfolgt über das Kontextmenü, dass über die drei Punkte rechts oben erreicht werden kann. Dort wählen wir den Punkt “Durchgehend aktives VPN”…

 

Screenshot_2014-10-16-19-06-57

 

…und wählen aus der Liste unsere zuvor konfigurierte VPN-Verbindung aus:

 

Screenshot_2014-10-16-19-07-13

 

Die erfolgreiche Verbindung wird uns wieder in der Statusleiste angezeigt:

 

Screenshot_2014-10-16-19-10-57

 

Nun läuft sämtlicher Verkehr ins oder aus dem Internet über den VPN-Tunnel und kann zumindest von anderen Teilnehmer des öffentlichen Hotspots nicht mehr eingesehen werden.