PIHOLE mit RaspberryPi aufsetzen

Last Updated on: 8th März 2022, 02:50 pm

Wer sein Netzwerk schützen möchte, braucht mittlerweile etwas mehr als nur einen Virenscanner. Das Problem der (oft nervigen Werbung) in Webseiten ist längst bekannt. Allzu oft finden sich darin nämlich auch BitCoin Miner und anderer „Unrat“, den man in seinem Netzwerk nicht möchte. Die Werbeindustrie verspricht zwar, die schwarzen Schafe auszusortieren, klappen tut es in im wahren Leben aber nur mäßig. Darüber hinaus versuchen auch Apps auf dem Handy gerne mit Trackingservern und anderen neugierigen Gesellen zu kommunizieren. Spätestens jetzt reicht es nicht mehr einen Browser zu haben, der Werbung blockt, weil dieser für die Kommunikation gar nicht benötigt wird.

Auch Microsoft hat empfindlich gezuckt als klar war, dass das Erheben von Metadaten in dem von MS angedachten Umfang nicht mit europäischem Datenschutzrecht in Einklang zu bringen war. Die Datenschutzkommission sah sich sogar veranlasst, ein Prüfschema für den Betrieb von Windows 10 zu entwickeln und zu veröffentlichen. Ein Pihole hilft hier ein gutes Stück weiter, weil er die Erreichbarkeit der Microsoft-Server blockiert. Allerdings funktioniert dies nur zuverlässig, wenn die Domains auch entsprechend in der Sperrliste gepflegt werden. Ich versuche dies in meiner eigenen blacklist so gut es geht zu gewährleisten, die ich nicht mehr öffentlich zur Verfügung stellen möchte.

Um dem ungebremsten Abfluss von Daten aus dem eigenen Netz zu begrenzen, wurde das Projekt PiHOLE geschaffen. Hier findet sich eine Anleitung wie dieser aufgesetzt und genutzt werden kann. Benötigt wird ein Raspberry PI Version 3B+ oder besser und eine SD-Karte. Die Anleitung bezieht sich auf Linux (Ubuntu Mate 20.04 in meinem Fall).

*****UPDATE 12.02.2021*****

Ich habe nicht tiefer nachgeforscht, wann es genau passiert ist. Dennoch gibt es eine für mich durchaus besorgniserregende Entwicklung bei Raspian. So wurden ohne weitere Kommunikation Repos von Microsoft ins Betriebssystem aufgenommen, die scheinbar MS Visual Studio Code beinhalten. Das alleine wäre vielleicht noch kein so großes Drama. Aber es wurden auch direkt die passenden Sicherheitszertifikate für verschlüsselte Kommunikation dazu gelegt. Und das auf einem Image, das für einen Kleincomputer mit geringer Leistung entwickelt wurde? Ich kann diesen Code nicht gebrauchen und viele Linux-User ärgern sich darüber ebenfalls.

Warum wurde der Code dann eingebaut?

Wie es scheint, hat die RPi Foundation nun scheinbar beschlossen, die Microsoft IDE offiziell zu empfehlen und entsprechend die IDE gleich mit dazugelegt. Viele Der Linuxer benutzen den RPi aber gar nicht als Entwicklungsumgebung, sondern haben – wie in dem nachfolgenden Beispiel – einen PiHole DNS-Blocker installiert, betreiben ein Wiki darauf oder ein GIT-Repository. Also ein klassischer „headless server“. Entsprechend ist diese Installation der MS-Komponenten gar nicht unmittelbar von Nöten. Es würde reichen, wenn man diese nachinstallieren kann. Durch das Rollout auf alle Distributionen wird nun aber mein RPi von Microsoft mitüberwacht:

  • durch die Installation von Software mittels „apt install whatever“ bekomme ich eine von Microsoft angepasste Version der Software. Auch, wenn diese vielleicht nicht böses tut, will ich nicht, dass sie überhaupt von MS verändert wurde.
  • Linux-User wie ich werden niemals darauf vertrauen, das Raspian oder Microsoft „heimlich“ etwas installieren, was dann für uns alle gut sein soll.
  • Jedes „apt install“ führt zwangsläufig ein pingback aus und verrät meine Nutzerdaten an Microsoft (mindestens die IP-Adresse und ggf Metadaten).
  • Bei der Verwendung des RPi als gemeinsamen Server für die Familie wird es ebenfalls dazu kommen, das auch Daten über diese Personen an MS gesendet werden (zumindest Meta-Daten, siehe Oben).

Wenn Sie das alles nicht stört, ist es okay das nachfolgende Tutorial so zu verwenden wie beschrieben. Ansonsten gibt es hier eine Anleitung wie man es zumindest im Nachhinein bereinigen kann.

*****ENDE UPDATE 12.02.2021 *****

Mit der SD-Karte geht es nun los. Zunächst laden wir das Betriebssystem (ebenfalls Linux) RaspianOS Lite ohne Desktop herunter und entpacken dies.

wget https://downloads.raspberrypi.org/raspios_lite_armhf_latest

unzip ./2020-05-27-raspios-buster-lite-armhf.zip

1.) SD-Karte vorbereiten

Wenn das gelungen ist, sollte sich auf der Festplatte ein Image befinden, zu erkennen an der Endung .img
Dieses image wird nun mit dem Tool dd auf die SD-Karte geschrieben. Damit wir nicht die eigene Festplatte schrotten, bitte unbedingt genau darauf achten, dass wir das richtige Device erwischen.

lsblk -p
.
.
/dev/mmcblk0                            179:0    0  14,9G  0 disk  
├─/dev/mmcblk0p1                        179:1    0   1,5G  0 part  
├─/dev/mmcblk0p2                        179:2    0     1K  0 part  
├─/dev/mmcblk0p5                        179:5    0    32M  0 part  /media/dhahn/SETTINGS
├─/dev/mmcblk0p6                        179:6    0    66M  0 part  /media/dhahn/boot
└─/dev/mmcblk0p7                        179:7    0  13,2G  0 part  /media/dhahn/root

Meine SD-Karte hat hier die Bezeichnung /dev/mmcblk0 . Die kann aber auch /dev/sdX oder anders heissen. Daher ggf mal die SD Karte entfernen und erneut schauen, ob das fragliche Device noch gelistet wird.

Steht das Zieldevice zweifelsfrei fest, kann das Image auf die SD-Karte geschrieben werden. Dazu muss zunächst die Karte unmounted (also ausgehängt) werden. Ich habe fünf Partitionen der SD-Karte eingehängt wir man oben sieht (die Karte war schon mal verwendet). Alle fünf hänge ich zunächst aus:

sudo umount /dev/mmcblk0p1
sudo umount /dev/mmcblk0p2
sudo umount /dev/mmcblk0p5
sudo umount /dev/mmcblk0p6
sudo umount /dev/mmcblk0p7

Anschließend schreiben wir nun das Image auf die SD-Karte. Wir adressieren dabei das Device, nicht eine einzelne Partition mittels des sehr leistungsstarken tools dd (disk dump):

sudo dd bs=4M if=2020-08-20-raspios-buster-armhf-lite.img of=/dev/mmcblk0 status=progress conv=fsync

> 440+0 Datensätze ein
> 440+0 Datensätze aus
> 1845493760 Bytes (1,8 GB, 1,7 GiB) kopiert, 161,663 s, 11,4 MB/s

sudo sync

Jetzt einmal die SD-Karte entfernen und neu einlegen. Danach sollten dann die Partitionen boot und rootfs gemoutet werden.
Auf der Partition root legen wir im obersten Verzeichnis die Datei >>>ssh<<< an.Dadurch ist der Raspberry gleich direkt über ssh im Netzwerk erreichbar.

touch /media/[uername]/boot/ssh

2.) Raspberry starten und einrichten

Jetzt stecken wir die Karte in den Raspberry, verbinden ihn mit dem Netzwerk und starten ihn. Anschließend loggen wir uns via ssh auf der Kiste ein. Die IP kann man im Router ermitteln oder via nmap.

nmap 192.168.178.0/24

>Nmap scan report for raspberrypi.fritz.box (192.168.178.2)
>Host is up (0.021s latency).
>Not shown: 999 closed ports
>PORT   STATE SERVICE
>22/tcp open  ssh

Entsprechend loggen wir uns auf der IP 192.168.178.2 ein.

ssh -l pi 192.168.178.2

Das Standardpasswort ist raspberry und sollte geändert werden.

passwd
>Enter new UNIX password:
>Retype new UNIX password:
>passwd: password updated successfully

Ich ziehe es sogar vor, den ganzen user pi von dem Raspberry zu werfen und stattdessen einen eigenen User anzulegen, mit dem in den PiHole administriere.

sudo useradd -m USERNAME

Der Parameter -m sorgt dafür, dass auch ein home-directory angelegt wird.Dann müssen wir diesem ein Passwort und noch das Recht für sudo und ssh-Zugriff geben:

sudo passwd USERNAME
>New password: 
>Retype new password: 
>passwd: password updated successfully

sudo usermod -aG sudo USERNAME

Testen, ob der neue User jetzt sudo werden kann:

su USERNAME
>USERNAME@raspberrypi:/home/pi $ exit
>pi@raspberrypi:~ $

Hat also geklappt. Jetzt können wir uns mit dem neuen Benutzer per ssh anmelden und den Benutzer pi vom Server werfen … er verabschiedet sich mit großem Bahnhof:

sudo deluser --remove-home pi
>We trust you have received the usual lecture from the local System
>Administrator. It usually boils down to these three things:
>
>    #1) Respect the privacy of others.
>    #2) Think before you type.
>    #3) With great power comes great responsibility.
>
>[sudo] password for USERNAME: 
>Looking for files to backup/remove ...
>Removing files ...
>Removing user `pi' ...
>Warning: group `pi' has no more members.
>Done.

3.) Installation der PiHole-Software

Es gibt mittlerweile mehrere Wege, die Software zu installieren. Ich bevorzuge die mittels curl.

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

Im folgenden kommen dann einige Fragen wie der PiHole aufgesetzt werden soll. Ich empfehle hier unbedingt eine statische IP zu nehmen, damit Geräte im Netzwerk diesen auch immer direkt ansprechen und nicht erst ihre Netzwerkinfo aktualisieren müssen, bevor sie ins Netz kommen. Auch das Passwort sollte unbedingt notiert werden, sonst kommt man nicht auf die Oberfläche.

Jetzt muss im Router der PiHole nur noch als Nameserver eingetragen werden. In der Fritz!Box funktioniert das unter HEIMNETZ->Netzwerk Reiter: [Netzwerkeinstellungen]. Dann auf IP v4 Adressen bzw IP v6 Adressen klicken und unter Nameserver die IP des PiHole eintragen. Das sollte es gewesen sein.

Wer jetzt möchte, kann sich über den Browser an der Admin-Oberfläche anmelden. Einfach die IP des PiHole in den Browser eingeben.

Wer das Passwort lästig findet, kann es auf der Konsole abschalten. Dazu wieder per ssh anmelden und dann mittels folgendem Befehl abschalten:

pihole -a -p 
>Enter New Password (Blank for no password): 
>  [✓] Password Removed

 

Schreibe einen Kommentar