Pi-hole: Schwarzes Loch für Werbung – Raspberry Pi Teil1

1. Sicherheitsrisiko WerbungPi-hole

Die Auslieferung von schadhafter Online-Werbung bzw. Malvertising wird zu einem immer größeren Problem und damit zum Risiko für den Nutzer. In meinem Kommentar »Adblocker sind digitale Selbstverteidigung« bin ich darauf bereits ausführlich eingegangen. Es ist daher wenig überraschend, dass Nutzer verstärkt auf AdBlocker wie bspw. uBlock Origin zurückgreifen.

Doch diese Browser-Addons filtern Werbung und Tracker wie der Name schon sagt: Im Browser. Werbung begegnet uns allerdings nicht ausschließlich beim Surfen, sondern verstärkt innerhalb Apps, auf dem Smart-TV oder anderen vernetzten Geräten. Ohne tiefere Eingriffe ins System ist es auf diesen Geräten nicht ohne weiteres möglich Werbung zu blockieren. Was also tun?

Mit dem Start der neuen Artikelserie, die sich im Jahr 2017 rund um den Raspberry Pi dreht, möchte ich euch eine Lösung aus diesem Dilemma vorstellen: Den Pi-hole – das schwarze Loch für Online Werbung und Tracker.

Update 26.09.2023

Es steht eine aktualisierte Anleitung zur Verfügung.

Dieser Beitrag ist Teil einer Artikelserie:

2. Hardware

Bevor wir uns in den nächsten Wochen und Monaten den diversen Raspberry Pi Projekten widmen, möchte ich noch kurz auf die Hardware eingehen. Für die Artikelserie nutze ich folgende Bauteile:

  • Raspberry Pi 3 Modell B (inkl. WLAN)
  • Offizielles Micro USB Netzteil 2A – 5V für Raspberry Pi 3
  • Offizielles Gehäuse für Raspberry Pi 3 (himbeer / weiß)
  • SanDisk Ultra Android microSDHC 16GB bis zu 80 MB/Sek Class 10

Einen Bildschirm oder externe Tastatur ist im Normalfall nicht notwendig. Nach dem Aufspielen eines Raspberry Pi Images greifen wir über eine Secure Shell (SSH) über das Netzwerk auf den Pi zu – das sollte genügen. Aktuell kann ich nicht abschätzen, ob auch ältere Raspberry Pi Modelle genügend Rechenleistung (vor allem RAM) mitbringen, um die von mir ins Auge gefassten Projekte zu begleiten:

Mit einem Raspberry Pi Modell A, A+ oder B mit 256 MB RAM könnte es bereits beim Pi-hole eng werden. Aber das solltet ihr einfach mal testen – offiziell empfiehlt der Pi-hole Entwickler ein System mit 512 MB RAM.

3. Basisinstallation

Zunächst werden wir eine Basisinstallation durchführen. Das ist die Grundlage für die Installation des Pi-holes. Die Raspberry Pi Foundation bietet ein Rasbian Lite Image auf ihrer Webseite zum Download an. Bei den Lite Images handelt es sich um ein minimales System, das aktuell auf Debian Stable (Stretch) basiert. Die Schritte im Detail:

  • Download Raspbian Stretch Lite Image
  • Zip-File entpacken
  • Steckt die SD-Karte in euren Rechner bzw. das Lesegerät
  • Das entpackte Image muss anschließend auf die SD-Karte geschrieben werden. Bitte haltet euch dazu exakt an die Anleitung der Raspberry Pi Foundation:
  • Nachdem das Image auf die SD-Karte geschrieben wurde solltet ihr auf das Dateisystem zugreifen können. Navigiert auf die Partition /boot und legt dort eine Datei mit dem Namen »ssh« an. Dies ist erforderlich, um anschließend mittels Secure Shell (SSH) auf den Raspberry Pi zugreifen zu können. Unter Windows gibt es diesen Ordner nicht, hier legt ihr die Datei direkt im Hauptverzeichnis der SD-Karte an.
    Hinweis: Wer als Windows-Nutzer auf die System-Partition zugreifen möchte, der muss sich bspw. den Ext2Fsd Treiber installieren.
  • Anschließend steckt ihr die SD-Karte (bzw. microSD) in den Raspberry Pi , verbindet den Pi mittels Netzwerkkabel mit eurem Router und schließt die Stromverbindung an.
  • Ihr könnt den Raspberry Pi nun zum ersten Mal starten. Im Normalfall sollte euer Router einen bestimmten IP-Adressbereich reserviert haben, um mittels DHCP eine IP-Adresse an den Pi zu vergeben. Da die IP-Adresse dynamisch vergeben wird, müsst ihr natürlich herausfinden über welche IP-Adresse der Pi nun erreichbar ist. Zwei Varianten:
    • Über das Router-Interface solltet ihr die IP-Adresse ablesen können. Bei einer Fritz!Box findet ihr die vergebene Adresse unter »Heimnetz -> Heimnetzübersicht -> Alle Geräte«. Der Gerätename lautet »raspberrypi«. Mit einem Klick auf Details könnt ihr die IP-Adresse ablesen.
    • Mit nmap einfach kurz das lokale LAN scannen: nmap 192.168.1.0/24
  • Ihr kennt nun hoffentlich die IP-Adresse eures Pi’s. Anschließend könnt ihr euch zum ersten Mal mittels SSH mit dem Pi verbinden.
    • Auf Windows nutzt ihr dafür PuTTY
    • Auf Mac OS und Linux öffnet ihr eine Konsole und verbindet euch mit folgendem Befehl: ssh pi@IP-Adresse
  • Die Standard Zugangsdaten lauten:
    • User: pi
    • Passwort: raspberry

Glückwunsch, ihr seid nun auf der Eingabeaufforderung des Raspberry Pi’s. Wir sind aber noch nicht ganz fertig. Mit folgendem Befehl wird zunächst das Standard-Passwort geändert:

passwd

Anschließend werden die Pakete auf den neuesten Stand gebracht:

sudo apt-get update
sudo apt-get upgrade

Ihr solltet noch eine feste IP-Adresse einrichten, über die der Pi immer erreichbar ist. Die unterschiedlichen Varianten sind im Elektronik Kompendium schön zusammengefasst.

4. Pi-hole

Der Pi-hole wird seit 2015 von Jacob Salmela entwickelt. Die Basis bildet dnsmasq und der Webserver Lighttpd. Den kompletten Quellcode könnt ihr unter GitHub einsehen. Doch was macht den Pi-hole jetzt eigentlich so besonders? Es ist eine netzwerkseitige Lösung zum Blockieren von Werbung und Trackern. Das bedeutet: Der Pi-hole kann theoretisch Werbung für alle Geräte blockieren, die sich in eurem Netzwerk befinden. Das klingt zunächst einmal abenteuerlich, doch es funktioniert tatsächlich.

Unterstütze den Blog mit einem Dauerauftrag!

Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.

Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.

Mitmachen ➡

4.1 Technischer Hintergrund

Am Beispiel von In-App Werbung möchte ich kurz erläutern, wie der Pi-hole technisch funktioniert. Angenommen ein App-Entwickler hat in seiner App Werbung integriert. Bei jedem Start der App oder auch während der Laufzeit wird daher die Adresse »werbung.server1.de« aufgerufen. Dieser Domainname muss allerdings zunächst in eine IP-Adresse übersetzt werden, damit die Werbung anschließend von dort geholt werden kann. Dieser Service wird vom Domain Name System (DNS) erledigt – einer der wichtigsten Dienste im Internet, der Domainnamen in die zugehörige IP-Adresse umwandelt. Das kennt jeder: Ihr gebt im Browser eine URL ein (also den Domainnamen), dieser wird dann von einem DNS-Server in die zugehörige IP-Adresse übersetzt. Namen lassen sich eben leichter merken, als IP-Adressen. In eurem Router sind daher üblicherweise DNS-Server von eurem Provider hinterlegt oder ihr habt manuell eigene eingetragen, die dann anschließend die Adresse »werbung.server1.de« in eine IP-Adresse umwandeln.

Das DNS-Prinzip macht sich der Pi-hole zunutze. Intern verwaltet der Pi-hole mit dnsmasq aktuell eine Liste mit über 100.000 Domainnamen, die Werbung ausliefern oder den Nutzer tracken. Zurück zum Beispiel: Nutzt das Smartphone anstatt des Routers nun den Pi-hole als DNS-Server, so wird die Adresse »werbung.server1.de« mit der internen Liste abgeglichen. Kommt es zu einem Treffer, wird anstatt der Werbung eine kleine Webseite oder GIF ausgeliefert – die Übersetzung in die korrekte IP-Adresse wird also vom Pi-hole unterdrückt. Die Folge: Die Werbung kann nicht von der eigentlichen Quelle bzw. IP-Adresse nachgeladen werden. Anstatt der Werbung sieht der Nutzer einen Platzhalter bzw. einfach nichts. Ein einfaches Prinzip, dass die Werbung noch vor der Auslieferung -ja sogar noch vor der Übersetzung in die IP-Adresse- blockiert. Chapeau!

4.2 Installation

Die Installation ist so einfach, dass die folgende Beschreibung eigentlich überflüssig ist. Gehen wir die Punkte dennoch kurz durch: Ein Befehl auf der Konsole des Raspberry Pi’s genügt, um die Installation vollautomatisch durchzuführen:

curl -sSL https://install.pi-hole.net | bash

Nachdem alle notwendigen Pakete und Abhängigkeiten installiert sind, öffnet sich der Konfigurator. Anbei meine Auswahl:

  • Select Upstream DNS Provider
  • Select Lists
    • Lasst einfach alle Ad- bzw. Tracking-Blocking-Listen ausgewählt
  • Select Protocols
    • IPv4: Check
    • IPv6: Uncheck (Hier solltet ihr Check nehmen. Ich deaktiviere die Option bewusst, da keines meiner Geräte IPv6 spricht.)
  • Do you want to use your current network settings as a static address?
    • IP address: 192.168.1.5 (Pi Adresse)
    • Gateway: 192.168.1.1 (euer Router)
  • Do you wish to install the web admin interface?
    • On: Check
  • Do you wish to install the web server (lighttpd)?
    • On: Check
  • Do you want to log queries?
    • On: Check
  • Select a privacy mode for FTL
    • 0 Show everything: Check
    • Hinweis: In einem Unternehmen könntet ihr das Logging bspw. heruntersetzen, damit keine Mitarbeiterüberwachung möglich ist. Ähnliches gilt für das private Heimnetz. Wird dieses von mehreren Usern genutzt, so solltet ihr diese auf das Logging hinweisen oder es komplett deaktivieren.

Nachdem ihr alles bestätigt habt, wird euch noch die Adresse für das Web-Interface und das Login-Passwort angezeigt. Adresse des Web-Interfaces:

http://pi.hole/admin

oder

http://192.168.1.5/admin

Web-Interface

4.3 Einrichtung als DNS-Server

Damit Werbung und Tracker nun vom Pi-hole blockiert werden, müsst ihr den Pi euren Geräten als DNS-Server bekannt machen. Drei praktikable Varianten:

Variante 1 – Manuell: Ihr könnt den DNS-Server manuell in euren Geräten eintragen. Das bedeutet: Jedes Gerät muss einzeln auf den neuen DNS-Server konfiguriert werden. Bei 3 – 4 Geräten ein überschaubarer Aufwand.

Variante 2 – per DHCP: Wer die IP-Adressen in seinem LAN von seinem Router verwalten lässt, der kann den neuen DNS-Server darüber bekannt machen. Beispiel Fritz!Box: »Heimnetz -> Heimnetzübersicht -> Netzwerkeinstellungen -> IPv4-Adressen«. Unter »Lokaler DNS-Server« tragt ihr die IP-Adresse des Pi-hole ein. Optional: Anschließend ruft ihr die Pi-Hole Weboberfläche auf tragt dort die Fritz!Box (erlaube non-FQDN-Anfragen) als ersten DNS-Server ein. Vorteil: Die lokalen Hostnamen der Fritz!Box sind wie gewohnt über den DNS-Namen erreichbar.

Variante 3 – Router: Ihr könnt in eurem Router als neuen DNS-Server auch einfach die IP-Adresse des Raspberry Pi’s eintragen. Vorteil: Für die Clients ändert sich nichts. Diese stellen ihre DNS-Anfragen wie gewohnt an euren Router, der die Anfrage dann an den Pi-hole weiterleitet. Auf Fritz!Boxen funktioniert das allerdings aufgrund der integrierten DNS-Rebind Protection nicht.

4.4 Pi-hole Commands

Die Installation und Einrichtung des Pi-hole sind abgeschlossen. Doch ihr könnt unter der Haube noch ein paar Dinge anpassen. Mit folgendem Kommando könnt ihr euch eine Befehlsübersicht einblenden lassen:

pihole -h

Wichtige Befehle:

  • pihole -up: Ein Update des Pi-hole durchführen
  • pihole -r: Den Konfigurator nochmal aufrufen, um bspw. Änderungen am DNS vorzunehmen
  • pihole -g: Update der Blockierlisten anstoßen
  • […]

4.5 Pi-hole Auto-Update konfigurieren

Der Pi-hole aktualisiert die Blockierlisten für Werbung und Tracker einmal wöchentlich automatisch. Wenn ihr auch die Software des Pi-hole einmal wöchentlich aktualisieren lassen wollt, dann könnt ihr den entsprechenden Cronjob anpassen:

sudo nano /etc/cron.d/pihole

Fügt folgende Zeilen am Ende der Datei hinzu:

# Pi-hole: Auto-Update Pi-hole!
30 2    * * 7    root    PATH="$PATH:/usr/local/bin/" pihole updatePihole

Speichert die Datei und startet crond einmal neu:

sudo service cron restart

Hinweis

Die Nutzung der Auto-Update-Funktion erfolgt auf eigene Gefahr. Ein manuelles Update ist die empfehlenswerte Variante.

4.6 Blockierlisten hinzufügen

Update

12.05.2017: Seit der Version 3.x des Pi-Hole ist dieser Schritt nun nicht mehr notwendig bzw. so durchführbar. Ihr könnt weitere Blockierlisten nun einfach über das Admin-Interface hinzufügen bzw. auswählen.

Im Auslieferungszustand blockiert der Pi-hole schon eine ganze Menge an Domains – wer neugierig ist, um welche Domains es sich handelt, der kann sich mal die Datei »/etc/pihole/gravity.list« anschauen. Die Blockierlisten werden in einer Konfigurationsdatei definiert, die ihr selbst erweitern könnt:

sudo cp -a /etc/pihole/adlists.default /etc/pihole/adlists.list
sudo nano /etc/pihole/adlists.list

Wenn ihr eine Raute am Anfang einer Zeile entfernt, wird die Blockierliste beim nächsten Update berücksichtigt. Interessant sind unter anderem:

  • Mahakala Liste (Die Blockliste enthält dann ca. 1,6 Millionen Einträge – Achtung Overblocking: Siehe Ziffer 4.7)
  • Windows 10 Telemetry Liste
  • oder auch die Anti-Adblock-Killer Liste

Wenn ihr Änderungen an der Datei durchgeführt habt, solltet ihr die Blockierliste neu einlesen:

pihole -g

Weitere Informationen zu den Blockerlisten und dem Format (nur Domainnamen) findet ihr im Pi-hole Wiki. Mit kleinen Anpassungen lässt sich bspw. auch die EasyList bzw. Fanboy’s Social Blocking List hinzufügen. Dazu nutze ich folgendes Skript:

# Download AdBlock Lists (EasyList, EasyPrivacy, Fanboy Annoyance / Social Blocking)
curl -s -L https://easylist.to/easylist/easylist.txt https://easylist.to/easylist/easyprivacy.txt https://easylist.to/easylist/fanboy-annoyance.txt https://easylist.to/easylist/fanboy-social.txt > adblock.unsorted

# Look for: ||domain.tld^
sort -u adblock.unsorted | grep ^\|\|.*\^$ | grep -v \/ > adblock.sorted

# Remove extra chars and put list under lighttpd web root
sed 's/[\|^]//g' < adblock.sorted > /var/www/html/adblock.hosts

# Remove files we no longer need
rm adblock.unsorted adblock.sorted

Die Listen werden auf Domainnamen reduziert und gemeinsam in einer Datei unter »/var/www/html/adblock.hosts« abgelegt. Anschließend muss noch die Pi-hole Adlist erweitert werden:

sudo nano /etc/pihole/adlists.list
# EasyList, EasyPrivacy, Fanboy List
http://localhost/adblock.hosts

Und nochmal ein Update der Liste durchführen:

pihole -g

Mit einem Cronjob könnt ihr die Listen automatisch holen und vom Skript verarbeiten lassen.

4.7 Whitelist

Teilweise kommt es zum Overblocking. Das bedeutet: Es werden fälschlicherweise Domains gefiltert, die für die Ansicht einer Webseite erforderlich sind. Im Auslieferungszustand kommt der Pi-hole mit einer kleinen Liste an Domains, die in der Blockierliste enthalten sind aber dennoch »gewhitelistet« bzw. erlaubt sein sollen. Ihr könnt die Liste einsehen:

sudo cat /etc/pihole/whitelist.txt

Ausgabe:

raw.githubusercontent.com
mirror1.malwaredomains.com
sysctl.org
zeustracker.abuse.ch
s3.amazonaws.com
hosts-file.net

Diese Whitelist könnt ihr selbst erweitern:

pihole -w domainname.de

Und Domains auch wieder entfernen:

pihole -w -d domainname.de

Alternativ könnt ihr die Whitelist auch über das Pi-hole Web-Interface einsehen bzw. bearbeiten. Weitere Informationen zum Whitelisting / Blacklisting findet ihr im Pi-hole Wiki.

5. Brauche ich noch einen AdBlocker?

Der Pi-hole blockiert Werbung und Tracker auf DNS-Ebene. Insbesondere Geräte, bei denen sich bspw. kein AdBlocker installieren lässt, profitieren damit vom Pi-hole. Auf eurem Rechner oder auf Geräten in denen sich AdBlocker wie uBlock Origin im Browser installieren lassen, solltet ihr dies dennoch weiterhin tun. Denn diese verfügen über zusätzliche Filtermechanismen und Logik. Die Browser-Addons blocken im Idealfall also all jene Gemeinheiten, die der Pi-hole auf DNS-Ebene nicht erfasst.

Fazit: Der Pi-hole ist eure erste Verteidigungslinie – ein Browser-Addon wie uBlock Origin »erschlägt« dann noch den Rest an Werbung.

6. Fazit

Mit dem Pi-hole verschwindet ein Großteil an Werbung und Trackern in einem schwarzen Loch – da wo das Zeug auch hingehört. Gerade Geräte wie Smartphones, bei denen häufig In-App Werbung eingeblendet wird, profitieren von der Vor-Filterung der DNS-Anfragen an zentraler Stelle. Toll ist: Die Blockier- bzw. Filterlisten lassen sich beliebig erweitern. Da die Werbung und Tracker schon auf DNS-Ebene gefiltert werden, sparen die Geräte dahinter einiges an CPU und Rechenpower – was nicht angezeigt wird, muss auch nicht berechnet werden.

Das war der erste Beitrag zur diesjährigen Artikelserie zum Raspberry Pi. Nach meiner Ansicht ist der Pi-hole eine sinnvolle Ergänzung in jedem privaten Netzwerk.

Über den Autor | Kuketz

Mike Kuketz

In meiner freiberuflichen Tätigkeit als Pentester / Sicherheitsforscher (Kuketz IT-Security) schlüpfe ich in die Rolle eines »Hackers« und suche nach Schwachstellen in IT-Systemen, Webanwendungen und Apps (Android, iOS). Des Weiteren bin ich Lehrbeauftragter für IT-Sicherheit an der Dualen Hochschule Karlsruhe, sensibilisiere Menschen in Workshops und Schulungen für Sicherheit und Datenschutz und bin unter anderem auch als Autor für die Computerzeitschrift c’t tätig.

Der Kuketz-Blog bzw. meine Person ist regelmäßig in den Medien (heise online, Spiegel Online, Süddeutsche Zeitung etc.) präsent.

Mehr Erfahren ➡

SpendeUnterstützen

Die Arbeit von kuketz-blog.de wird zu 100% durch Spenden unserer Leserinnen und Leser finanziert. Werde Teil dieser Community und unterstütze auch du unsere Arbeit mit deiner Spende.

Folge dem Blog

Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:

Bleib aktuell ➡


Diskussion

59 Ergänzungen zu “Pi-hole: Schwarzes Loch für Werbung – Raspberry Pi Teil1”

  1. Comment Avatar Matthias sagt:

    Hallo Mike,

    Danke für den klasse Artikel! Ich nutze bereits den Pi-Hole, aber das mit den zusätzlichen Blockierlisten kannte ich noch nicht und habe es direkt umgesetzt.

    Gruß

    Matthias

  2. Comment Avatar Daniel sagt:

    Danke für die Anleitung, ich werde mich am Wochenende mal an die Umsetzung machen und freue mich auf die weiteren Artikel zum Raspi! :)

  3. Comment Avatar KuMB sagt:

    Danke, dies zum Thema gemacht zu haben!
    Man sollte auch die ständigen Einbau einer Google-Analytics-Software in Apps im Auge behalten.
    Dadurch erlangt Google unverhofft Informationen, die, wie routiniert üblich, wunderbar zu einem GANZEN zusammengelegt werden können.

  4. Comment Avatar Tim sagt:

    Wie sieht es denn mit der Performance aus? Der Pi hat ja eher schlechtes Ethernet, wie gut das eingebaute WLAN bei dem Pi3 ist weiß ich nicht. Ich könnte mir aber schon vorstellen, dass der Pi zwischen WLAN-Client und Router deutlich verlangsamt.

    • Comment Avatar Mike Kuketz sagt:

      Es ist bisher absolut nichts spürbar. Es handelt sich aber auch nur um DNS-Anfragen. Wir kopieren ja keine Dateien über die Netzwerkschnittstelle des Pi oder streamen Medien.

  5. Comment Avatar danonyb sagt:

    Tolles Projekt Mike,
    was sollte man tun, um das Blocken von Werbung rückgängig zu machen? Für den Fall, dass es zu Netzwerkfehler kommen kann. Reicht es den pi vom Router zu trennen?

    2.Frage
    Musst man den Pi neu konfigurieren, wenn man den Router aus-&eingeschaltet hat oder wird die Konfiguration permanent gespeichert?

    3.Kann man zukünftige ProjektE an den selben pi-Hardware anwenden oder ist das pi nur für ein EINZIGES Projekt anwendbar?

    • Comment Avatar Mike Kuketz sagt:

      1. Den Pi als DNS-Server wieder aus den Clients rausnehmen.
      2. Nein – ist permanent.
      3. Einfach die SD-Karte wechseln – schwups neues Projekt.

      • Comment Avatar danonyb sagt:

        Danke für die Antwort.

        Zu 3. Ich meine, ob man mehrere Projekte an den einen pi GLEICHZEITIG betreiben kann. (zB. den pi als PC verwenden während es als Adblocker, Firewall, Server, usw. im Hintergrund läuft)

        • Comment Avatar Mike Kuketz sagt:

          Wenn du dir selbst was bastelst geht das bestimmt. Aber die Projekte sind meist so ausgelegt, dass sie ein Image bereitstellen. Mit diesem überschreiben wir dann immer das »Vorgänger-Projekt«.

      • Comment Avatar Anonymous sagt:

        zu 2. Gilt das auch für den pi? Also wenn man es durch Ziehen des Steckers ausschaltet und später wieder verbindet. Muss man noch konfigurieren oder reicht es aus den pi an der Steckdose und am Router zu verbinden?

        Vielen Dank im Vorraus

        • Comment Avatar Mike Kuketz sagt:

          Im Normalfall sollte der Pi wieder hochfahren. Aber wenn man plötzlich den Strom trennt besteht es ein gewisses Restrisiko, dass bspw. das Dateisystem schaden nimmt. Ansonsten ist doch alles auf der SD-Karte gespeichert – das wird nicht auf magische Weise verschwinden. :)

    • Comment Avatar matit2000 sagt:

      Für Windows wie auch Android gibt es gute Möglichkeiten per Knopfdruck die DNS in den Netzwerkeinstellungen auf die PI oder eben andere DNS umzuschalten. In Windows nutze ich die Freeware NetSetMan für Android Macrodroid.

  6. Comment Avatar Carlos sagt:

    Wäre es nicht besser für den Upstream DNS Provider zumindest einen DNS-Server zu verwenden der DNSSEC zur Validierung nutzt (was der vom CCC nicht tut) oder vielleicht sogar DNSCrypt zu nutzen?

    • Comment Avatar Mike Kuketz sagt:

      Wäre an dieser zentralen Stelle sicherlich sinnvoll, da so alle Clients davon profitieren würden. Mach doch einfach einen Feature Request im Pi-hole GitHub auf.

      Edit: Der Request existiert schon.

      • Comment Avatar Frank sagt:

        DNSSEC is bereits in der aktuellen Version (v2.12.1) enthalten. Die Entwickler machen wirklich einen prima Job.

  7. Comment Avatar Kurt sagt:

    Nettes „Tutorial“, freue mich schon auf den Rest der Artikelserie!
    Habe letzte Woche ebenfalls Pi-Hole auf meinem Raspberry Pi der ersten Generation
    installiert und ins Netzwerk gehängt, funktioniert super in Kombination mit OpenWRT.
    Kann bisher keine Performanceeinbußen feststellen ;)

  8. Comment Avatar uwe sagt:

    Danke, wirklich schöner Artikel :)

  9. Comment Avatar Anonymous sagt:

    Ich hätte mal noch eine Frage: Wenn ich über Tor ins Netz gehe bringt mir Pi-Hole aber nichts, die Anfrage an den DNS-Server beinhaltet ja „nur“ den Entry-Node oder?

    Danke schonmal für die sehr wirkungsvollen aber einfachen Tutorials

    • Comment Avatar Mike Kuketz sagt:

      Genau. Wenn du über das Tor-Browser-Bundle surfst bringt dir das nichts. Aber Sinn und Zweck des Tor-Browser-Bundles ist ja nicht Werbung und Tracker zu umgehen, sondern mit anderen Tor-Usern in der Masse zu verschwinden. Der Pi-hole ist vor allem für Geräte interessant, auf denen sich kein zusätzlicher AdBlocker oder ähnliches installieren lässt.

  10. Comment Avatar D. H sagt:

    Ich habe bei mir die Adresse der Fritzbox als upstream-dns eingetragen, sonst konnten die lokale namen im Netzwerk nicht aufgelöst werden (z. B pi.fritz.box)
    Ist es im Sinne des Erfinders?

    So wie ich das verstehe, funktioniert die Lösung nicht, wenn Werbung direkt über IP-Adresse nachgeladen wird. Gibt es evtl. Auch hier Lösungsansätze?

  11. Comment Avatar Alex sagt:

    Hi Mike, merci, für den Artikel! Mein WE-Projekt steht ?
    Wo siehst du die technischen Unterschiede zum e-blocker? Den hatte ich bis jetzt im Einsatz, aber open source ist mir deutlich lieber.
    Schützt das Pi-Hole auch gegen canvas fingerprinting?

    • Comment Avatar Mike Kuketz sagt:

      Der Pi-hole blockt auf DNS-Ebene. Sofern Domains, die Fingerprinting durchführen in der Blockierliste enthalten sind, dann schützt der Pi-hole davor – ansonsten nicht. Wie auch im Text bereits erwähnt, solltet ihr nach wie vor uBlock Origin im Browser nutzen.

  12. Comment Avatar Anonymous sagt:

    Vielen Dank für den guten Artikel!

    In meinem Netz ist seit mehr als einem Jahr ein solcher pi-hole in Betrieb hinter dem DNS der Firewall, der dann DNSSEC beherrscht. Du schreibst:
    „Aktuell kann ich nicht abschätzen, ob auch ältere Raspberry Pi Modelle genügend Rechenleistung (vor allem RAM) mitbringen, um die von mir ins Auge gefassten Projekte zu begleiten“. – Nun, der Pi2 geht genauso gut wie der Pi3, der Pi1 mit einem 2A Netzteil stürzt beim Speichern der langen Blockierlisten regelmäßig ab und eignet sich nicht. – DM

    • Comment Avatar D.H sagt:

      Bei mir läuft pi-hole auf Pi1 ohne Probleme. Habe das Teil auf 900 Mhz übertaktet. Das Aufrufen von Web-Interface ist etwas träge, ich habe aber keine Vergleichswerte mit pi2/3.

  13. Comment Avatar Tebald sagt:

    Super Anleitung, danke dafür. Bin auch schon direkt am Umsetzen.

    Allerdings frage ich mich wie ich unter Windows das ssh auf der SD-Karte aktiviert bekomme. Klar ich könnte den Pi einfach an Monitor und Tastatur hängen und so ssh aktivieren, aber dafür müsste ich einiges abmonitieren und umschließen.

    • Comment Avatar Mike Kuketz sagt:

      Damit sollte es unter Windows funktionieren: Ext2Fsd Project (Open-Source) oder Alternativ ExtFS (Freeware).

      • Comment Avatar Tebald sagt:

        Hm, ok danke für die Links, verstehe aber wohl das Prozerdere nicht. Mit den Tools sehe ich doch auch nicht mehr als im Win 7 Explorer oder?
        Unter Linux würde ich einfach unter /boot mit touch ssh eine Datei desselben Names erstellen. Wie mir die verlinkten Tools unter Win 7 dabei helfen verstehe ich nicht.
        Zur Not schließe ich doch alles um.
        Danke trotzdem.

        • Comment Avatar Mike Kuketz sagt:

          Ich dachte das Problem unter Windows ist, dass du die ext4 Partition nicht lesen / beschreiben kannst. Aber das ist ja nicht das Problem, weil die Boot-Partition mit FAT geschrieben wird.

          Das heißt unter Windows: Einfach in den Rechner stecken und direkt auf die SD-Karte ins Hauptverzeichnis schieben. Wer dann auch noch Zugriff auf die andere Partition haben möchte, der muss sich die genannten ext4-Treiber installieren.

          • Comment Avatar Tebald sagt:

            Genau, ist FAT32. Die Frage unter Windows ist halt, was für ien Datei soll ich erzeugen. Rechtsklick „neue Datei“ gint es ja nicht. Zumindest mit einer .rtf-Datei in Kombination mit einer 16GB-SDKarte und nem Pi 1 512 MB ist der ssh Zugang nicht freigeschaltet.

            Habe es aber jetzt mit meinem Pi 3 umgesetzt. Habe doch schnell alles an den TV angeschlossen und wie beschrieben unter /boot mit „touch ssh“ eine Datei angelegt. Funktioniert alles wunderbar.

            Danke

          • Comment Avatar Mike Kuketz sagt:

            Eine Datei ohne Dateiendung. Vielleicht versteckt dein Windows diese und es wird in Wirklichkeit eine txt-Datei oder ähnliches angelegt?

        • Comment Avatar Anonymous sagt:

          Bei Verwendung eines „PL2303HX Konverter USB zu TTL UART RS232 COM Kabel“ kann man über die GPIO-Pins 6, 8 und 10 mit einem Temrinalprogramm eine serielle Verbindung zum RPi aufbauen und alle Netzwerk-Einstellungen machen ohne sich selbst versehentlich auzuschließen.

  14. Comment Avatar McTi. sagt:

    Unter Windows ist es aber nicht das Verzeichnis „boot“, sondern die Bootpartition, in welche ssh erzeugt werden muss.

  15. Comment Avatar Wolf sagt:

    Wow! Tolles Projekt! Gute Beschreibung. Die klang so einfach, dass ich es einfach ausprobieren musste. Hat nicht länger gedauert als den Artikel gründlich zu lesen (ok, ich lese langsam…). Und es läuft. Einfach so!
    Wow! Danke Mike. Ich freu mich schon auf die Fortsetzung.

  16. Comment Avatar Alexe sagt:

    a.) Du hast in deinen uBlockOrigin-Einstellungen auch Host-Files geladen (hpHosts und Peter Lowe’s Ad and tracking server list‎ ist eine Standardliste des Plugins) wenn diese nun zentral geblockt werden, ist es dann besser diese im Browser rauszunehmen (wird dieser dann vielleicht etwas schneller?)

    Beim drauf schauen auf deren Liste (https://github.com/pi-hole/pi-hole/wiki/Customising-sources-for-ad-lists) scheint es so als wären die Listen die auch im uBlockOrigin enthalten sind (aber nicht unbedingt aktiviert sind, allso Peter Lowe’s und MVPS HOSTS‎, leider aber über https ausgeliefert) beim Pi-hole nicht enthalten, ggf. sind diese Listen besser geeignet als die Easy*-Listen — einfach da es schon Host-Files sind)

    b.) Vielleicht auch ganz interessant für jene, die das Projekt nicht umsetzten im UbuntuUser-Wiki gibt’s auch eine schöne Anleitung (unten) wie man über einen Skript aus mehreren Hostfile-Quellen eine Gesamt-Host-File erstellt und diese dann über eine Cron-Job automatisch updaten kann https://wiki.ubuntuusers.de/hosts/

    Dort heißt es Das Skript ersetzt bei den zu blockierenden Einträgen die IP-Nummer 127.0.0.1 durch 0.0.0.0, da dadurch erhebliche Geschwindigkeitsvorteile.

    Beim Pi-Hole wird das nicht gemacht (https://github.com/pi-hole/pi-hole/issues/272#issuecomment-231583564), vielleicht wäre das für den ein oder anderen auch noch interessant.

    Ist das Projekt „Raspberry Pi als Tor-Relay/Tor-Router“ endgültig rausgeflogen?

  17. Comment Avatar McTi. sagt:

    Schöner Artikel und das meiste läuft es auch bei mir! :-)
    DANKE!

    Bei
    # Remove extra chars and put list under lighttpd web root
    sed ’s/[\|^]//g‘ /var/www/html/adblock.hosts

    bekomme ich allerdings ein permission denied
    Irgendeinen Tipp?

    • Comment Avatar Anonymous sagt:

      Zunächst solltest du dir die Liste adblock-sorted ansehen, ob das Skript wirkich alle Platzhalter entfernt hat, z.B. || oder ^. Entweder du lädst die Datei auf den Rechner oder bearbeitest sie mit dem Befehl nano adblock-sorted im Terminal. Wenn nicht alle Platzhalter entfernt sind (so wie bei mir), so besteht die Möglichkeit, die Datei händisch am Rechner zu bearbeiten, z.B. mittels Ersetzen. Danach muss die Datei wieder auf den Pi (Home-Verzeichnis) hochgeladen werden und umbenannt werden zu adblock.hosts. Nun folgende Befehle ausführen: sudo su. Dann cp adblock.hosts /var/www/html/adblock.hosts. Dann exit. Jetzt nachsehen unter sudo nano /etc/pihole/adlists.list, ob http://localhost/adblock.hosts bereits ergänzt wurde. Wenn nicht, einfügen. Speichern. Dann nochmal pihole -g. Fertig.

  18. Comment Avatar donyking sagt:

    Wie sieht es mit der dauerhaften Temperaturbelasung im 24h betrieb aus? Braucht man noch einen Kühlkörper?

    Mein raspberry pi 3 modell B: ca.50 Grad celsius (gemessen)

  19. Comment Avatar Anonymous sagt:

    Danke für die tolle Erklärung. Konnte Pi-Hole auf dem Beaglebone installieren. Läuft super.
    Ich frage mir lediglich, ob man durch die Verwendung des Pi-hole nicht wieder eindeutiger identifizierbar wird?

    • Comment Avatar Anonymous sagt:

      Kurze Antwort: Ja, da das blocken von einzelnen Adds insb. mit individuellen Listen dich unterscheitbar macht.

      Wenn Du aber das hier propagierte Drei-Browser-Prinzip nutzt surfst Du ohnehin auf den meisten Seiten mit dem tbb und wenn du dich irgendwo anmeldest ist vermutlich Javascript etc. aktiv und der Seiten betreiber speichert in einer Datenbank zu deinen Account alles was er hat.

      Der Vorteil wäre halt, dass die bekannten Third-Party-Tracker a la doubleclick geblockt werden, auch wenn du keinen Adblock nutzt weil z. B. deaktiviert oder die Installation nicht möglich ist.

      Deine IoTs etc über den selben Tor-Sockets5-Proxy (aber Socketisolation ist möglich und ein Tor-Prozess kann mehrere Sockets mit verschieden Exits anbieten) zusenden ist auch problematisch da diese IDs beinhalten können (und wenn das Gerät die echte IP kennt auch diese, hier wäre ggf. ein Transparenter-Proxy eine Möglichkeit). Viele Programme nutzen Sockets zum Bereistellen von „Konektivität“, d. h. Anonymität ist nicht das Ziel, sodass viele Programme DNS-Anfragen „leaken“.

  20. Comment Avatar Michael sagt:

    Hallo Mike,

    muss, denn das pi-hole zwangsweise auf einen Raspi laufen? Ich hätte hier noch einen betagten x86er der für diese Aufgabe zur Verfügung stehen würde.

    Ansonsten wieder eine Klasse Artikel!

    Grüße
    Michael

    • Comment Avatar Anonymous sagt:

      Warum nicht einfach nach suchen?

      https://discourse.pi-hole.net/t/hardware-software-requirements/273

      Hardware

      Pi-hole is very lightweight as it only handles DNS queries and returns a blank HTML file so it doesn’t need much processing power.

      ~52MB of free space
      512 MB RAM

      Software

      Pi-hole will run on most Debian-based distro’s and is the preferred platform for it.

      We officially support the following:

      Raspbian: Jessie (lite / with pixel)
      Ubuntu: 14.04 / 16.04 / 16.10
      Fedora: 24 / 25
      Debian: 8.6
      CentOS: 7.2.1511 / 7.3.1611

  21. Comment Avatar Johannes sagt:

    Hallo,
    danke für die sehr gute Beschreibung und das aufgreifen des Themas!
    Bei mir scheint des Chrome-Browser über Android nicht den pi-hole als DNS-Server zu akzeptieren. Ggf. kann ja somit auch jedes Programm/jede App ihren eigenen DNS-Server ansprechen, womit das Konzept von pi-hole ausgehebelt wird. Gibt es eine Möglichkeit, den raspi als DNS-Server zu „erzwingen“?
    Ich konnte auch den raspi aus den pi-hole Menü nicht neu-starten. Ist das dem Hardware-Design des Raspis geschuldet (oder ist eher meine pi-hole Installation defekt)?

    • Comment Avatar Anonymous sagt:

      Hast du die IP des DNS-Server explizit für das Wifi-Netz in Android gesetzt (und den secondary DNS-Server gelöscht) (ein loker DNS-Server macht natürlich für Mobiledaten auch keinen Sinn)?
      Der DNS-Server kann nur Werbung verbieten, die von externen Servern kommt.

      Hast du mal Webseiten zwischen PC und Handy (natürlich im Wifi) verglichen (mit deaktivierten Adblocker)?

      • Comment Avatar Anonymous sagt:

        Demnächst werde ich es mal testen, auf einem anderen PC habe ich die Fehlerquelle (manuaell geänderter DNS) schon eliminiert. Das Handy kommt als nächstes dran.
        Danke für deine Tipps!

  22. Comment Avatar Gerd sagt:

    Hallo,
    vielen Dank für die vielen und informativen Infos um den Pi und um Ads und Tracker. Nachdem ich bind und squid/squidguard nicht so zum laufen gebracht habe, wie ich es mir vorstellte, nun PiHole. Alles läuft sauber und war ne Sache von einer knappen Stunde (bin kein Linux Guru… :-) ).
    als nächstes folgt die Installation von Prosody.

    Besten Dank, ich schau nun regelmäßig „herein“.
    Grüße aus dem Norden von Gerd

  23. Comment Avatar mike sagt:

    Ich nutze eine Alternative zum Blocken von Werbung für das LAN:

    Alle Clients (WLAN oder LAN) angebunden bekommen via DHCP ihre IP Adresse und DNS Adresse von einem WLAN router.
    Dort wird die Werbung ausgefiltert.

    Das funktioniert durch einen Autausch der Router firmware.
    Empfehlenswert ist die sog. ‚Tomato‘ firmware.

    http://tomato.groov.pl/

    Unterstütze router:
    http://tomato.groov.pl/?page_id=69

    Läuft seit Jahren zuverlässig

  24. Comment Avatar Chris sagt:

    Hi Mike,

    toller Artikel. Den musste ich auch gleich umsetzen. Hat auch alles funktioniert, sogar dns-crypt mit der Anleitung von pi-hole funktioniert.

    Ich hab den Pi auch in meiner Fritz!Box als lokalen DNS-Server eingetragen, damit ich die lokalen Clients nicht alle anpassen muss und das tut. Der Hinweis von Dir unter Punkt 4.3 Variante #3 Router gibt laut Lesen der Hilfeseiten von AVM wohl nur Probleme, wenn man im lokalen Netz DNS Domänen betreibt. Die können aber in der Fritz!Box Konfiguration in einer Whitelist eingetragen werden und sollten dann uach kein Problem mehr darstellen. (Fritz!Box->Heimnetz->Heimnetzübersicht->Netzwerkeinstellungen, die Whitelist kann man ganz unten auf der Seite pflegen).

    Grüße
    Chris

  25. Comment Avatar 4ndr0 sagt:

    Warum nicht einfach DietPi als OS nehmen? Da kann man Pi-Hole einfach über den ncurses-Installer installieren.

  26. Comment Avatar cube sagt:

    Danke für den tollen Artikel! Gerade bin ich über Emoncms (Apache) gestolpert und würde gerne pi-hole (Lighttpd) auf einem RPI3 laufen lassen. Jedoch kommen sich die beiden Webserver in die Quere. Ein biscchen Recherche hat mich dahin gebracht, den Port vom Apache Server zu verschieben, aber pi-hole blockt dann nichts mehr. Hat jemand eine Idee?

  27. Comment Avatar Thomas sagt:

    Hallo Hr. Kuketz,

    vielen Dank für den Bericht, installation und einrichten hat ohne Probleme geklappt :)

    Gibt es evtl. eine Möglichkeit „Hosts“ Dateien automatisiert einzulesen? Leider kenne ich mich im Bereich scripting zu wenig aus. Ein Beispiel wäre http://winhelp2002.mvps.org/hosts.txt

    Vielen Dank!

    • Comment Avatar SemperQuaestio sagt:

      Moin Thomas, ja die gibt es:

      run `cp /etc/pihole/adlists.default /etc/pihole/adlists.list

      Dann

      /etc/pihole/adlists.list

      Und eigene Einträge hinzufügen. Wenn du ein cronjob eingerichtet hast, wird sie automatisch aktualisiert, ein initiierendes pihole -g liest sie schon einmal ein.

  28. Comment Avatar Anonymous sagt:

    Hallo, ein guter Artikel.
    Habe ihn als Einstieg in die Welt des RaspBerry Pi genutzt – bin quasi ein absoluter Anfänger.
    Bei meiner Netzkonstellation mit Fritzbox habe ich das Problem, dass mit aktivem PiHole und den genannten Konfigurationen als DNS-Server im (Fritz-) LAN, keinen Zugriff auf die Fritzbox selbst mehr habe. Internet geht alles nur die Webseite der Fritzbox kommt eine Fehlermeldung, der Webserver weist die Verbindung zurück.
    Gibt es da etwas, dass ich übersehe?
    Gruß A.W.

    • Comment Avatar Tom sagt:

      dnsmasq wandelt den Namen „fritz.box“ zu „fritz.box.fritz.box“ und löst gibt Deinem Rechner (momentan) die IP 127.0.53.53 zurück.
      Lösungen:
      A) wie bereits vorgeschlagen die Fritz Box mit IP Adresse ansprechen
      oder
      B) wie bereits vorgeschlagen dafür sorgen, dass Deine Fritz Box weiterhin lokale Namen auflöst / Pihole nicht Google sondern die Fritzbox nach allen Namen fragt: -> einfach in etc/dnsmasq.d/01-pihole.conf

      server=8.8.8.8
      server=8.8.4.4
      

      durch die IP Deiner Fritz Box ersetzen

      Oder – umständlicher aber IMHO sauberer:
      C) Dafür sorgen dass pi-hol lokale Namensanfragen an die fritz!box weiterschickt, aber externe Namensanfragen an die beim Setup angegebenen DNS Server (bspw. Google)

      Mehrere Möglichkeiten wie das geht ist in etc/dnsmasq.conf und in etc/dnsmasq.d/01-pihole.conf beschrieben.

      Ich habe eine neue Datei angelegt etc/dnsmasq.d/02-local.conf mit folgendem Inhalt:

      # Ergaenzung local network
      server=/fritz.box/192.168.178.1
      server=/178.168.192.in-addr.arpa/192.168.178.1

      Dann dnsmasq Neustart und fertig.

  29. Comment Avatar Christoph Müller sagt:

    Hallo,
    danke für den interessanten Artikel. Habe das Loch installiert und es ist saugt!

  30. Comment Avatar Anonymous sagt:

    Hallo,
    danke für die tolle Anleitung, hat alles auf Anhieb funktioniert und bin schlicht begeistert. Den Pi-hole habe ich dann noch durch DNScrypt ergänzt. Auch das hat super funktioniert.

    Wie ich bemerkte, wird bei einer VPN Verbindung zur FritzBox der Traffic aber nicht über den Pi-hole geleitet. Das ist schade, unterwegs werbefrei surfen und durch DNSSEC und DNScrypt geschützt hätte mir gefallen. Gibt es eine Möglichkeit die Anleitung entsprechend dieser Möglichkeit zu ergänzen oder Tipps/Links wie ich dies selbst bewerkstelligen könnte?

    Gruß F.L.

  31. Comment Avatar DJ sagt:

    Hallo.
    Habe die Mahakala Liste hinzu gefügt. Das sollen ja 1,6Mio Einträge sein.
    Zuerst hatte ich etwas um die 100.000 Einträge jetzt 280.000, sieht man ja im admin Bereich oben rechts das rote Banner.
    Außerdem wird mit der Liste der gesamte .com Bereich geblockt ? Das ist natürlich total unsinnig wie ich finde.
    Müsste ich mit dieser Liste also jede .com Seite die ich benutzen will, separat in der Whitelist erlauben ?

HilfeWenn du konkrete Fragen hast oder Hilfe benötigst, sind das offizielle Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-Forum

Abschließender Hinweis

Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.

Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.