Pi-hole

Pi-hole die Mausefalle für Tracking und Werbung

Werbung im Internet nervt und ich habe kein gutes Gefühl dabei, wenn mein Nutzungsverhalten analysiert wird. Es gibt aber einen Weg, um dies zu umgehen. Die Lösung ist Pi-hole.

Pi-hole ist eine freie Software, die auf einem Raspberry Pi installiert werden kann. Neulich habe ich ein Hardware Upgrade bei meinem Volumio gemacht. Es war also ein Raspberry Pi 2B übrig, der eine neue Aufgabe gesucht hat.

Wie funktioniert Werbung und Tracking

Wenn ich eine Website besuche, wird die dort angezeigte Werbung für gewöhnlich nicht durch diese Seite selbst ausgeliefert. Sie kommt von einem anderen Anbieter, z.B. von Google AdSense oder von Amazon Advertising. Auch das Tracking der Besucher funktioniert oft über einen externen Anbieter, wie z.B. Google Analytics.

Das bedeutet aber auch, dass die Daten, die diese Webseite über mich sammelt, auch an Dritte weitergegeben werden. Das ist recht komfortabel, da der Betreiber oder die Betreiberin der Webseite sich um nichts kümmer muss. Aber will ich das? Und hier kommt Pi-hole ins Spiel.

Wie funktioniert Pi-hole

Wir haben also gelernt, dass die Werbung und das Tracking über einen externen Anbieter läuft. Wenn ich also eine Seite aufrufe, ruft diese wiederum die Seite mit der Werbung oder mit dem Tracker auf. Diese Arbeit macht mein Browser.

Jede Seite im Internet hat einen Namen. Meine heißt ichwillinsinternet.de. Damit kann das Internet nichts anfangen, es funktioniert mit IP-Adressen. Um aus dem Namen eine IP-Adresse zu bilden, gibt es die Namensauflösung per Domain Name System (DNS). Dies sind zentrale Server im Internet. Jedes mal, wenn ich also einen Namen beim Browser eintippe, wird eine Anfrage beim DNS gemacht und die entsprechende IP-Adresse wird anschließend aufgerufen. Und genau das macht er auch bei Werbung und Tracking.

Hier setzt Pi-hole an. Es ist nämlich auch ein DNS. Wenn jetzt eine Anfrage zur Namensauflösung kommt, schaut Pi-hole erst in einer Liste nach. Befindet sich der angefragte Name nicht in der Liste, wird die Anfrage einfach weiter an den zentralen Server geschickt. Ist der Name aber in der Liste enthalten, so wird eine ungültige IP-Adresse zurückgeliefert. Als Ergebnis wird die Werbung nicht angezeigt bzw. der Tracker nicht aufgerufen.

Mehr Informationen über Pi-hole gibt es auf ihrer Homepage.

Installation von Raspbian

Für meine anderen Raspberry Pi Projekte (Volumio und Retropie) habe ich immer komplett fertige Pakete, sogenannte Images heruntergeladen. Das ist sehr praktisch, da nach dem Aufspielen des Images alles läuft.

Bei Pi-hole ist das nicht ganz so einfach. Man muss erst das Betriebssystem Raspbian installieren. Anschließend wird Pi-hole aufgespielt und konfiguriert. Pi-hole benötigt wenig Ressourcen, ein Raspberry Pi 2B reicht vollkommen aus.

Das Image für das Betriebssystem kann man auf der Seite von Raspberry Pi herunterladen. Ich habe die Lite Version verwendet, da ich keine grafische Oberfläche brauche. Um das Image auf die SD-Karte (min. 4GB) zu schreiben benötigt man noch Win32 Disk Imager.

In Win32 Disk Imager wählt man das zu schreibende Image und den Laufwerksbuchstaben der SD-Karte aus. Anschließend klickt man auf schreiben. Ein paar Minuten später ist der Vorgang abgeschlossen.

Um später auf den Raspberry Pi zugreifen zu können, muss noch SSH aktiviert werden. Dazu erstellt man eine neue Datei mit dem Namen ssh auf der SD-Karte.

Die SD-Karte ist jetzt fertig und kann in den Raspberry Pi gesteckt werden. Das Netzwerkkabel wird angeschlossen. Wenn man ihn jetzt mit Strom versorgt, startet das Betriebssystem Raspbian.

Im nächsten Schritt muss man sich mit dem Raspberry Pi über SSH verbinden. Dazu verwende ich PuTTY. Bei „Host Name“ trägt man „raspberrypi“ ein und drückt auf open. Die anschließende Frage beantwortet man mit Ja.

Jetzt kann man sich anmelden. Der Benutzername ist „pi“ und das Passwort lautet „raspberry“. Dieses sollte man gleich mit „passwd“ ändern.

Man sollte in jedem Fall eine Aktualisierung des Betriebssystems und aller darin enthaltenen Programme durchführen. Bei Raspbian funktioniert das zweistufig. Der erste Befehl „sudo apt-get update“ ermittelt, was aktualisiert werden muss.

„sudo apt-get upgrade“ führt die Aktualisierung schließlich durch. Das kann ein paar Minuten dauern.

Installation Pi-hole

Die Installation ist ziemlich einfach. Der Befehl „curl -sSL https://install.pi-hole.net | bash“ läd das Installationsskript herunter und startet es.

Die meisten Fragen bei der Installation kann man mit „Ja“ beantworten. Allerdings sollte man ein paar Dinge beachten.

Nachdem der Installer die Voraussetzungen zur Installation geprüft hat, empfängt er uns mit dem Willkommens-Bildschirm. Die Navigation funktioniert ab jetzt über die Cursortasten und Enter.

Bei der Auswahl des Upstream DNS Providers habe ich die IP meines Routers unter „Custom“ eingetragen. Das hat den Vorteil, dass die Namensauflösung wie bisher funktioniert.

Hier kann man aber auch einen anderen Provider eintragen.

Bei den Filterlisten habe ich die Standard-Auswahl übernommen. Hier kann man aber auch einzelne Listen abwählen.

Bei den Protokollen wählt man IPv4 und IPv6 aus.

Pi-Hole benötigt eine statische IP-Adresse. Diese muss hier eingestellt werden. Dem Router muss das aber auch mitgeteilt werden und er muss entsprechend konfiguriert werden. Die Prozedur unterscheidet sich je nach eingesetztem Router. Am besten sucht man nach „statische IP“ und dem Namen des Routers bei der Suchmaschine seines Vertrauens.

Das Web Admin Interface sollte man einschalten. Darüber kann man später Pi-hole konfigurieren.

Der Web Admin Server ist wichtig, wenn man mit dem Browser auf Pi-hole zugreifen will. Das ist sehr sinnvoll und erleichtert die Arbeit später ungemein.

Das Logging sollte man einschalten. Es hilft später beim Analysieren von Problemen.

Datenschutz ist ein sensibles Thema. Da Pi-hole die Namensauflösung macht, kennt es auch alle Seiten, die man im Internet besucht hat. Wenn man alleine ist, ist das kein Problem. Aber wenn mehrere Leute Pi-hole nutzen, muss man sich die Zustimmung aller Benutzer einholen. Wenn man es nicht macht, muss man das Logging einschränken.

Am Ende der Installation wird noch eine Zusammenfassung angezeigt. Hiervon macht man sich am besten einen Screenshot.

Das angezeigte Passwort kann man übrigens mit dem Befehl „sudo pihole -a -p“ neu setzen. Das habe ich gemacht. Das oben angezeigte funktioniert nicht mehr.

Konfiguration der Geräte

Pi-hole läuft jetzt und wartet darauf verwendet zu werden. Die einzelnen Geräte, wie Smartphone oder Computer wissen aber noch nichts davon.

Für Windows wählt man bei den Netzwerkverbindungen die Netzwerkkarte aus, die mit dem Internet verbunden ist. Bei den Eigenschaften öffnet man das „Internetprotokoll, Version 4 (TCP/IPv4)“. Hier trägt man dann als „Bevorzugter DNS-Server“ die IP-Adresse des Pi-hole ein.

Das gleiche macht man für das „Internetprotokoll, Version 6 (TCP/IPv6)“. Damit sind die Einstellungen für Windows abgeschlossen.

Beim Smartphone geht man in gleicher Weise vor. Bei Android findet man die Konfiguration bei den erweiterten Einstellungen der WLAN-Verbindung.

Bei allen anderen Geräten muss man diese Einstellungen auch machen. Das hat den Vorteil, dass man entscheiden kann, welche Geräte Pi-hole nutzen und welche nicht. Es besteht auch die Möglichkeit den DNS des Routers zu ändern. Wenn man das macht, nutzen alle angeschlossenen Geräte Pi-hole, ohne dass man jedes einzeln konfigurieren muss.

Hier sieht man die Konfiguration. Zwischen dem Computer und dem DSL-Router ist einfach der Raspberry Pi mit dem Pi-hole geschaltet.

Web Interface von Pi-hole

Über http://pi.hole/admin kann man das Web Interface erreichen.

Es gibt Einblick über die Arbeit von Pi-hole. Links oben sieht man den Status. Hier sollte alles grün sein.

Im Hauptfenster sieht man die Statistik der letzten 24 Stunden. Bei mir werden zwischen 40% und 50% aller Anfragen geblockt. Das Interessante ist, dass ich beim Surfen davon gar nichts mitbekomme.

Links in der Mitte gibt es noch den Login Button. Hier hat man die Möglichkeit Pi-hole nachträglich zu konfigurieren. Alle Einstellungen, die während der Installation gemacht wurden, können hier wieder verändert werden.

Das Web Interface ist responsiv. Das bedeutet, dass es eine extra Ansicht für das Smartphone gibt. Auch hier lassen sich alle Funktionen aufrufen.

Werbung ja oder nein

Ist es gut, Werbung pauschal zu filtern? Viele Unternehmen oder Webseiten leben von Werbung. Wenn ich sie blockiere, kann ich ihr Angebot weiterhin nutzen, ohne indirekt dafür zu zahlen. Das kann dazu führen, dass die Seite nicht mehr weiter betrieben werden kann oder kostenpflichtig wird.

Durch die verschiedenen Filterlisten ist es möglich Malware und Tracking zu blockieren, Werbung aber nicht. Wie man damit umgeht, muss man für sich selber entscheiden.

DNS Anfragen mit Stubby verschlüsseln

Im Prinzip ist unser Werbefilter jetzt fertig. Allerdings kann man ihn noch verbessern.

Die Anfragen an den DNS sind normalerweise unverschlüsselt. Das bedeutet, dass sie jeder mitlesen kann. Um das zu verhindern, kann man DNS over TLS (DOT) verwenden. Pi-hole unterstützt das nicht. Deshalb muss man einen kleinen Umweg über das Tool Stubby gehen.

Als erstes muss Stubby heruntergeladen und installiert werden. Das geht mit „sudo apt-get install -y stubby“. Nach kurzer Zeit ist Stubby installiert.

Jetzt gibt es aber einen Konflikt. Pi-hole und Stubby hören auf dem gleichen Port (53). Um das zu verhindern muss der Port von Stubby geändert werden. Dazu öffnet man die Konfiguration mit „sudo nano /etc/stubby/stubby.yml“ und ändert die Einträge unter „listen_addresses:“

listen_addresses:
- 127.0.0.1@5353
- 0::1@5353

Jetzt hört Stubby auf Port 5353.

Weiter unten in der Konfiguration kann man noch den DNS-Provider auswählen. Das ist der Server im Internet, an den die DNS-Anrage schließlich geht. Ich habe hier nichts verändert.

Nach dem Speichern der Konfiguration muss Stubby mit „sudo systemctl restart stubby“ neu gestartet werden. Die neue Konfiguration ist jetzt aktiv.

Zum Überprüfen, ob es funktioniert, gibt man „dig @127.0.0.1 -p 5353 ichwillinsinternet.de“ ein. Als Antwort sollte dann die IP-Adresse meiner Homepage kommen.

Abschließend muss Pi-hole so konfiguriert werden, dass es Stubby verwendet. Das macht man im Webinterface unter Settings -> DNS. Hier trägt man folgendes ein:

  • Custom 1 (IPv4): 127.0.0.1#5353
  • Custom 3 (IPv6): 0::1#5353

Dies müssen die einzigen Server sein. Alle anderen müssen deaktiviert werden.

Ab jetzt werden die DNS-Anfragen verschlüsselt gesendet. Der Weg ist folgender: Der Computer oder das Smartphone sendet seine DNS-Anfrage unverschlüsselt an Pi-hole. Dort wird die Anfrage gefiltert und unverschlüsselt an Stubby weitergereicht. Die Anfrage wird dann verschlüsselt und an den DNS-Anbieter im Internet weitergereicht.

Fazit

Pi-hole ist schnell eingerichtet und in Betrieb genommen. Es verrichtet seine Arbeit, ohne dass man etwas davon mitbekommt. Wenn etwas nicht mehr funktionieren sollte, kann man im Logging nach der Ursache suchen und es über die Whiteliste korrigieren.

Mit Stubby lassen sich die Anfragen verschlüsseln.

Wer die Arbeit der Entwickler von Pi-hole unterstützen möchte kann gerne den Donate Button auf dem Web Interface drücken.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert