Im vorangegangenen Artikel habe ich potentielle und reale Sicherheitsrisiken am Smartphone beleuchtet und mögliche Maßnahmen, wie man denen begegnen kann. Eine davon ist der Betrieb eines Virtual Private Network (VPN), eine weitere der zusätzliche Einsatz von Pi-Hole am VPN-Server. Bevor es an den Aufbau eines VPN-Servers auf Basis eines Raspberry Pi geht, erkläre ich in diesem Artikel die Begriffe und Konzepte rund um VPN und Pi-Hole. Damit soll klar werden, was VPN und Pi-Hole sind, wie sie funktionieren und was der Gewinn an Sicherheit ist, den wir durch deren Einsatz erreichen können.
VPN – Virtual Private Network
Was ist ein VPN?
Auch wenn wir ein VPN zur Erhöhung der Sicherheit unseres Smartphones einsetzen wollen, hat der Begriff VPN erstmal gar nichts mit Smartphones zu tun, sondern beschreibt ganz allgemein einen:
Sicheren Datentunnel durch ein unsicheres Netz.
Das Virtual bringt zum Ausdruck, dass dieses Netz nicht physikalisch existiert, sondern per Software über ein anderes Netz (das Internet) gelegt wird. Und Private bedeutet, dass dieses virtuelle Netz uns alleine gehört und wir es durch Verschlüsselung dem Zugriff anderer entziehen.
Ein VPN ist also ein geschützter Tunnel von unserem Smartphone durch das unsichere Internet in das heimische LAN. Das Smartphone befindet sich somit immer virtuell im Home-Netzwerk, selbst wenn wir das Haus verlassen und über unseren Mobilfunkprovider oder ein fremdes WLAN kommunizieren.
Wie funktioniert ein VPN?
Hier noch einmal das Schaubild von oben, aber etwas größer. Links sehen wir das Smartphone, das über ein öffentliches WLAN Verbindung zum Internet hat. Das macht jeder von uns täglich, um unterwegs WhatsApp zu senden oder im Internet zu surfen. Auf der rechten Seite ist unser Heimnetzwerk über einen Router ebenfalls mit dem Internet verbunden.
Jetzt bringen wir ein VPN ins Spiel, in dem wir im Heimnetzwerk einen Raspberry Pi als VPN-Server aufsetzen. Das ist der Endpunkt des virtuellen Datentunnels im geschützten eigenen LAN (oder WLAN). Die andere Seite des Tunnels – quasi der Tunneleingang – befindet sich auf unserem Smartphone in Form einer App, die wir VPN-Client nennen.
VPN-Client und VPN-Server können nun miteinander sprechen und einen virtuellen Tunnel (im Bild magentafarben dargestellt) durch das Internet aufbauen. VPN-Client und VPN-Server sorgen dafür, dass der Tunnel verschlüsselt wird, damit niemand im Internet oder im öffentlichem WLAN die Dateninhalte lesen kann. Die dafür notwendigen Schlüssel werden bei der Installation eingerichtet. Der VPN-Client hat – wenn er aktiviert ist – die Aufgabe jegliche Datenkommunikation nun nicht mehr direkt ins Internet, sondern in den VPN-Tunnel zu routen. Der VPN-Server seinerseits wird diese Daten dann entgegennehmen und über den heimischen Router ins Internet senden. Für einen außen stehenden Kommunikationspartner sieht es dann immer so aus, als wären wir zuhause im eigenen Netzwerk, auch wenn wir unterwegs sind. Und der VPN-Tunnel hat die positive Begleiterscheinung, dass wir unterwegs auch Server, Drucker und andere Geräte (wie zum Beispiel einen Feinstaubsensor) in unserem Heimnetzwerk erreichen können.
Drei Kleinigkeiten, die wir als Voraussetzungen für ein funktionierendes VPN benötigen, hab ich der Einfachheit halber (bisher noch) verschwiegen. Wir brauchen:
- eine öffentliche IP-Adresse an unserem Internet Router,
- Dynamisches DNS, um unseren Internet Router bei wechselnder IP-Adresse immer unter dem selben Namen erreichen zu können und
- ein Port Forwarding, damit unser Internet Router einen definierten Port der öffentlichen IP-Adresse nach innen an den VPN-Server weiterleitet.
Wer diese drei Punkte im Moment noch nicht versteht – keine Sorge – darum geht es dann ausführlich im nächsten Artikel.
Was bringt ein VPN?
- Sicherheit beim Surfen (und anderer Datenkommunikation) in unsicheren Netzen durch Verschlüsselung
- Zugang zum Heimnetzwerk von unterwegs
- Verschleierung der Smartphone IP-Adresse – es sieht immer so aus, als wären wir daheim
- Basis für weitere Sicherheitsmaßnahmen (Pi-Hole) und Netz-Analyse (Wireshark)
- Einschränkungen in fremden WLANs (Port- Inhalts- oder Seitenfilter) werden umgangen
Wie bauen wir ein VPN?
Es war früher gar nicht so einfach, ein eigenes VPN aufzusetzen. Es musste OpenVPN installiert und vor allem konfiguriert werden, was eine durchaus anspruchsvolle Aufgabe war – speziell wenn es um die Verschlüsselung ging. Nun gibt es PiVPN, das ist eine Skriptsammlung, die die Installation und Parametrisierung von OpenVPN wesentlich vereinfacht. Damit ist das Aufsetzen eines Raspberry Pi als OpenVPN-Server für den interessierten Laien möglich geworden. Wir laden also PiVPN aus dem Internet herunter und installieren es nach Anleitung.
Übrigens, es gibt auch VPN-Dienstleister, die VPN-Server im Internet (meist gegen Bezahlung) anbieten. Das kann man nutzen, wenn man sich selbst das Aufsetzen eines VPN-Servers nicht zutraut. Zumindest kann man dann in fremden offenen Netzen verschlüsselt kommunizieren. Dem VPN-Dienstleister muss man dabei natürlich vertrauen, dass er keinen Unfug mit den eigenen Daten anstellt.
Pi-Hole
Was ist Pi-Hole?
Pi-Hole ist eine Software für den Raspberry Pi, die den RasPi zu einem DNS-Server macht. Und zwar zu einem ganz besonderen DNS-Server, der nicht nur für Clients die Namensauflösung betreibt, sondern zusätzlich die angefragten Namen in einer Web-Oberfläche visualisieren und auch blockieren kann.
Wer es nicht weiß: DNS steht für Domain Name System und ist eines der wichtigsten Säulen des Internets. Denn das DNS sorgt für die Namensauflösung, also der Übersetzung eines Domänennamens www.irgendwas.de
in eine IP-Adresse zum Beispiel 144.123.3.12
. Erst wenn der Browser die IP-Adresse des Servers kennt, kann er mit ihm kommunizieren. Mit dem Domänennamen direkt geht das nicht – der muss immer vorher in eine IP-Adresse übersetzt werden. Das läuft normalerweise unbemerkt im Hintergrund ab. Das Endgerät (Smartphone wie Personal Computer) bekommt bei der Netzanmeldung die Adresse eines DNS-Servers zugewiesen und wird in Folge alle Namensauflösungen über diesen abwickeln.
Wie funktioniert Pi-Hole?
Pi-Hole hat erstmal überhaupt nichts mir einem VPN zu tun. Aber wir können diese beiden Funktionen auf einem Raspberry Pi zusammen einsetzen um zu erreichen, dass ein Smartphone sicherer wird. Und das funktioniert folgendermaßen: Wie wir oben gesehen haben laufen die Netzwerkverbindungen des Smartphones bei aktivierten VPN-Tunnel immer über das heimische Netz – genauer über den VPN-Server, der das Ende des Tunnels im heimischen Netzwerk darstellt. An dieser Stelle klinkt sich Pi-Hole ein und stellt sich dem Smartphone gegenüber als DNS-Server dar. Dadurch wird jeglicher Namensauflösungsversuch des Smartphones immer über Pi-Hole laufen. Pi-Hole seinerseits kennt dann richtige DNS-Server und versorgt sich darüber mit den IP-Adressen der angefragten Domain-Namen.
Aber dadurch, dass sich Pi-Hole in die Namensauflösung hineindrängt, hat es zusätzliche Möglichkeiten, die wir nutzen können um das Tracking unseres Smartphones einzuschränken. Zur Erinnerung an den ersten Artikel zu diesem Thema:
Tracking ist das Abgreifen und Sammeln von Daten über uns und unser Smartphone durch Webseiten auf die wir surfen, oder Apps, die wir installiert haben. Und Daten meint in diesem Fall im Prinzip alles, worauf der Browser oder die App Zugriff hat. Das ist im einfachsten Fall unsere momentane IP-Adresse und die Information, welchen Browser und was für ein Endgerät wir verwenden. Das kann aber auch ein Tracking-Cookie sein, das wir uns bereits vorher eingefangen haben. Damit erkennt uns der Trackingdienst wieder und lernt, wohin wir überall surfen. Apps können möglicherweise aber auch noch ganz andere Daten sammeln und an Trackingserver im Internet übermitteln. Die Kontakte in unserem Adressbuch zum Beispiel, unseren Standort oder welche WLANs in unserem Empfangsbereich liegen. Also durchaus Informationen, die zusammengetragen recht gläserne Menschen aus uns machen.
Wie funktioniert Tracking?
Nehmen wir an, wir surfen mit unserem Smartphone im Internet und schauen uns die (von mir frei erfundene) Seite www.toller-server.de/erste-tolle-seite.html
an. Um dahin zu gelangen wurde per DNS natürlich im Vorfeld der Name aufgelöst und dann eine Verbindung zur IP-Adresse des Servers aufgebaut und der Seiteninhalt abgerufen. Soweit ist alles in Ordnung.
Nun hatte sich der Betreiber des Webangebots www.toller-server.de
dazu entschieden den Dienst Google Analytics einzusetzen, um schöne Statistiken zu erhalten, über die Anzahl der Besucher auf seinen Webseiten, über Sitzungsdauer und Absprungrate und darüber, welche Links auf seiner Webseite gerne geklickt werden. Alles Informationen, die Webmaster gerne über ihre Seiten haben möchten.
Um das zu erreichen, hat der Webmaster bei Google ein Analytics-Konto eröffnet und ein Stück HTML-Code erhalten, den er in alle seine Webseiten eingebaut hat. Dieser Analytics-Code sammelt nun die gewünschten Informationen und überträgt sie auf einen Analytics-Server von Google. Daraus baut Google nun schöne Statistiken und Schaubilder, die sich der Webmaster in seinem Analytics-Konto jederzeit anschauen kann. Nicht so schlimm, mag man denken, soll der Webmaster doch diese Auswertungen über seine Webseiten bekommen. Das finde auch ich ziemlich legitim, was uns aber durchaus unangenehm sein sollte, ist die Tatsache, dass alle Daten von allen Webservern, die Google Analytics einsetzen, natürlich auch von Google selbst ausgewertet werden. Und nicht nur die von Analytics sondern auch von allen anderen Google-Diensten, also der Google Suche, Android, Google Maps, Google Chrome, Google Mail, AdSense und was es sonst noch alles gibt. Da kommt schon einiges an Daten über uns zusammen und wir brauchen uns nicht wundern, dass wir zunehmend Werbung erhalten, die zu unserem Surfverhalten passt. Google ist hier nur beispielhaft erwähnt, bei Amazon und Facebook funktioniert das in ganz ähnlicher Form und genauso bei unzähligen Trackingdiensten, deren Namen wir gar nicht kennen.
Wie verhindert Pi-Hole Tracking?
Bleiben wir beim Beispiel. Damit der Analytics-Code in der Webseite die erhobenen Daten (IP-Adresse, besuchte Webseite, Browser, Gerätetyp, Cookie über frühere Besuche, …) an den Google-Analytics Server übermitteln kann, kommt zuerst – wir wissen es bereits – die Namensauflösung. Der Name des Analytics-Servers lautet: ssl.google-analytics.com
. (Woher weiß ich das? Pi-Hole hat sehr schöne Anzeigemöglichkeiten.) Und jetzt kommt das Geniale an Pi-Hole: Pi-Hole kennt diesen Domänennamen und weiß, dass es ein Tracking-Dienst ist. Und Pi-Hole blockiert deshalb die Namensauflösung und liefert anstelle der richtigen IP-Adresse des Analytics-Servers die Fake-Adresse 0.0.0.0
an den Browser zurück. Der kann somit den Analytics-Server nicht erreichen und der Trackingversuch geht ins Leere.
Woher kennt Pi-Hole Google-Analytics? Pi-Hole bringt einige sogenannte Blacklists mit, die wir bei der Installation auswählen können. In diesen Listen sind Unmengen an Tracking- und Werbe-Servern enthalten, deren Namensauflösung Pi-Hole blockieren wird. Darüber hinaus können wir selber eine Black- und eine Whitelist befüllen. Der Anwendungsfall für einen Blacklisteintrag wäre zum Beispiel die Blockade einer App, die sich auf dem Smartphone nicht deinstallieren lässt, aber trotzdem mit dem Internet spricht. Ein Beispiel dafür wäre graph.facebook.com
. Der umgekehrte Fall ist der Eintrag in die Whitelist – dadurch würde ein Dienst, der durch die vorinstallierten Blacklists eigentlich geblockt wurde, explizit wieder freigegeben. Aber gibt es denn gute Tracker? Ja, die gibt es, zum Beispiel das Trackingpixel von VG-Wort. Die VG-Wort ist die Verwertungsgesellschaft für Schriftsteller, also so etwas wie die GEMA für Musiker aber eben für Autoren. Und dieses Tracking sorgt dafür, dass Autoren im Internet ihre Autorenvergütung erhalten. Deshalb meine ich, dass man die VG-Wort nicht blockieren, sondern whitelisten sollte.
Das gilt übrigens auch für Werbung. Pi-Hole kann neben Tracking-Diensten auch Werbung blockieren – zumindest wenn diese Werbung über einen bekannten Werbedienstleister (z.B. Google AdSense) ausgeliefert wird und damit in der Blacklist steht. Abgesehen davon, dass Werbung und Tracking wie bei Google Adsense oft Hand in Hand gehen, ist es in meinen Augen schon legitim, dass sich zum Beispiel eine kostenlose App durch Werbeeinblendungen finanziert. Der App-Ersteller hat Arbeit geleistet, um die App zu programmieren und wenn er sie kostenlos abgibt, sollte er wenigstens ein paar Werbeeinnahmen erzielen. Aber ich gebe zu, in dieser Angelegenheit bin ich parteiisch, meine Webseiten, so wie dieser Blog, finanzieren sich auch nur über Werbung.
In kurzen Worten zusammengefasst
Ein Virtual Private Network (VPN) schafft einen verschlüsselten Netzwerktunnel vom Smartphone ins eigene Heim-Netzwerk. Damit kommunizieren wir auch in ungeschützten WLANs immer sicher.
Mit Pi-Hole betreiben wir einen eigenen Filter für DNS-Abfragen und können somit unerwünschte Verbindungen (zu Tracking-Servern) unterbinden.
Das alles zum Preis eines Raspberry Pi und etwas Konfigurationsarbeit.
Wie geht es weiter?
Bevor wir uns den Raspberry Pi vornehmen können, um die VPN-Server Software zu installieren, sind ein paar Vorarbeiten zu leisten. Vor allem müssen wir unser Heimnetzwerk erkunden und herausbekommen welche IP-Version wir für einen VPN-Tunnel überhaupt verwenden können. Damit beschäftigt sich ausführlich der nächste Artikel: IPv4 versus IPv6.
Zu kompliziert? Zu trockene Materie? Zu viel schwierige Netzwerk-Technik? Dann hier vielleicht mal kurz unterbrechen und vorab einen Blick in Artikel 11 werfen! Dort gibts zur Wiederholung und Vertiefung ein paar übersichtliche Netzwerkdiagramme.
Weitere Artikel in dieser Kategorie:
- Raspberry Pi VPN – Teil 1: Smartphone Sicherheit
- Raspberry Pi VPN – Teil 3: IPv4 versus IPv6
- Raspberry Pi VPN – Teil 4: VPN-Server unter IPv4
- Raspberry Pi VPN – Teil 5: Vorarbeiten für ein VPN unter IPv6
- Raspberry Pi VPN – Teil 6: VPN-Server unter IPv6
- Raspberry Pi VPN – Teil 7: VPN Client fürs Smartphone
- Raspberry Pi VPN – Teil 8: Dual Stack VPN Tunnel
- Raspberry Pi VPN – Teil 9: Installation Pi-Hole
- Raspberry Pi VPN – Teil 10: Datenanalyse mit Wireshark
- Raspberry Pi VPN – Teil 11: Netzwerkdiagramme
- Raspberry Pi VPN – Teil 12: Tipps & Tricks
- Raspberry Pi VPN – Teil 13: IPv4 VPN mit (trotz) DS-Lite
Hallo, vielen Dank für diese Artikelreihe. Als DS-Lite Nutzer will ich gerne wissen, ob die Lösungen, die Du für eine VPN-Verbindung anbietest, routerabhängig oder routerunabhängig sind?
Sprich, muss ich am Router Portweiterleitungen einrichten oder läuft die VPN-Verbindung unabhängig von Konfigurationen am Router.
Liebe Grüße aus Frankfurt
Bei einer VPN-Verbindung handelt es sich um eine Datenverbindung aus dem Internet ins Heimnetz. Letzteres wird durch einen Router (oft eine Fritzbox) geschützt, die solche Verbindungen natürlich erst einmal blockiert, was ja durchaus sinnvoll ist. Zur Realisierung einer VPN-Verbindung muss also in der Tat am Router eine entsprechende Freigabe eingerichtet werden.