Absicherung des DNS-Verkehrs im Heimnetz mit DNS-Proxy auf einem Raspberry Pi

Autor : Gerd Raudenbusch
Stand : 06.06.2024

Inhalt

Motivation

Das "Internet der Dinge" (IoT, Internet of Things) wird zunehmend Alltag in jedem Haushalt : Saugroboter, Rasenmäher, Fernseher, Glühbirnen, Kameras; alles, was man heute kauft, läßt sich über eine App steuern und braucht einen Zugang zum Internet.

Das Problem : Zunächst befinden sich diese Geräte im Regelfall im gleichen Netz, wie unsere Rechner, welche sensible Daten enthalten. Außerdem sammeln diese Geräte jede Menge Daten über ihre Umwelt und darüber, wie wir sie verwenden. Es wäre eine aufrichtige Welt, wenn sie es nicht täten - die Wahrheit sieht leider ganz anders aus !

Ein neues, handelsübliches Smart TV, beispielsweise, kommuniziert intensivst mit dem Hersteller, den Diensten der TV-Sender, und auch ein paar Werbetrackern, außerdem leuchtet es - oft ungefragt - den Rest des eigenen Heim-Netzes aus. Dabei will man doch eigentlich nur fern sehen und vielleicht ein paar Apps benutzen. Stattdessen hagelt es Cookie-Banner und benötigte Zustimmungen, um dieses erniedrigende Trauerspiel der Hersteller zu legalisieren ! Über die Hälfte des Datenverkehrs ist reiner Müll.

Wer nicht darauf warten möchte, bis wir durch gesetzliche Regulierungen bei Produkten ankommen, welche ein menschenwürdiges Kommunikationsverhalten aufweisen, der kann durch diese Lösung für 30€ mit ziemlicher Sicherheit alle Geräte im Haus sauber halten.

Übersicht

Die vorgestellte Problemlösung ermöglicht die volle Kontrolle des DNS-Verkehrs, indem man :

  1. Entweder am Router den Upstream-DNS-Server durch den eigenen DNS-Proxy ersetzt, um damit sämtliche DNS-Anfragen des Routers zu verarbeiten
  2. oder den DHCP-Server des Routers die IP-Adresse des DNS-Proxys als DNS-Serveradresse an alle Geräte im Haus verteilen lässt
  3. oder auf ausgewählten Geräten im Haushalt manuell den DNS-Proxy als DNS-Server in den Netzwerk-Einstellungen konfiguriert
  4. oder für alle Geräte im Haus den DHCP-Server des DNS-Proxys verwendet

Raspberry Pi

Den Raspberry Pi kann man im Shop bei rasppishop.de mit Zubehör erwerben. Dies umfasst :

Inbetriebnahme des Raspi 4B

Man braucht :

Micro-SD-Karte des Raspi 4B bespielen

Oftmals bekommt man beim Erwerb eines Raspberry die Micro-SD-Karte bereits mit dem Betriebssystem darauf befindlich geliefert. Man kann, z. B. im Falle einer defekten oder bereits vorhandenen, eigenen Micro-SD-Karte, das Betriebssystem auch selbst auf die Micro-SD-Karte spielen, indem man mit der dafür vorgesehenen Software, dem Imager, das Betriebssystem-Image (.xz) am PC auf die Micro-SD-Karte spielt.

Peripherie anschließen

Konfiguration des Raspi 4B

Nach dem Einschalten sollte die Power-LED am Raspi leuchten. Nach dem Hochfahren folgt man den Dialogen :

Am Ende kann man die Platine ins Gehäuse stecken :

Inbetriebnahme des Raspberry Zero W

Dieser Raspi hat keinen Ethernet-Anschluss. Sein Einsatz setzt eine stabile WLAN-Verbindung voraus. Nachdem man die beiden Plastik-Blenden um die Platine geschraubt hat, kann man sich der SD-Karte widmen.

SD-Karte des Raspi Zero W bespielen

Das Tool zum Bespielen der SD-Karte beinhaltet inzwischen die Auswahl das Herunterladen und die und Konfiguration des Images für die SD-Karte. Das Lite-Image ohne Desktop reicht völlig aus. Bestimmte Dinge muss man nochmals vorher prüfen :

country=DE
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
ap_scan=1
network={
  scan_ssid=1
  ssid="wlanname"
  psk="unserpasswort"
  key_mgmt=WPA-PSK
}

DNS-Proxy

Der Begriff "Proxy" stammt von dem englischen Wort "proxy", was "Stellvertreter" bedeutet. Er wurde von William R. Cheswick geprägt und leitet sich vom lateinischen "Procuratorem" ab, was "für etwas sorgen" bedeutet).

Ein Proxy-Server fungiert als Vermittler zwischen Client, dem anfragenden und Server, dem antwortenden Dienst. Anstatt sich direkt mit einem Server zu verbinden, wird die Anfrage vom Client über den Proxy als Zwischenstation geleitet, der sie filtern und verändern kann, bevor er sie an den tatsächlichen Server weiterleitet.

Zusammenfassend kann man sagen, daß Adguard bedienerfreundlicher erscheint. Adguard bringt bereits einen DoH-Client mit, dafür kann es aktuell die Clients nicht so einfach wie Pi-Hole voneinander unterscheiden, was für den Betrieb im ganzen Haushalt essentiell ist. Und obwohl die Adguard-home-Konfiguration in einer einzigen yaml-Datei steckt, kann diese nicht wie bei Pi-Hole über die GUI migriert werden. Ansonsten leisten beide DNS-Proxies das gleiche.

Vorbereitung

Der Raspi muss nun vorab eine feste IP-Adresse im Heimnetz bekommen. Üblicherweise läßt man dazu die DHCP-Einstellung bestehen, um Konflikte zu vermeiden und konfiguriert die feste IP-Adresse stattdessen auf dem Router. Dort kann man bestimmen, daß bestimmte Geräte immer die gleiche IP-Adresse zugewiesen bekommen sollen. Man kann auf dem Raspi aber auch mit nmtui die Netzwerk-Parameter ändern.

Verwendung von Pi-Hole

Bei Pi-Hole handelt es sich um eine freie Software, die es auf komfortable Weise ermöglicht, den DNS-Verkehr zu überwachen. Sie stellt dazu eine Weboberfläche bereit, die man im Heimnetz über jeden Browser erreichen kann. Für iOS gibt es auch eine App für Pi-Hole.

Installation von Pi-Hole

Die Installation ist sehr einfach. In der Kommandozeile gibt man folgenden Befehl ein :

git clone --depth 1 https://github.com/pi-hole/pi-hole.git Pi-hole && cd "Pi-hole/automated install/" && sudo bash basic-install.sh

Sollte das Initialpasswort am Ende nicht angezeigt werden, kann man es mit dem Befehl sudo pihole -a -p vergeben. Anschließend sollte die Pi-Hole-Oberfläche im Browser unter http://<raspi-ip-adresse>/admin erreichbar sein.

Konfiguration von Pi-Hole

Neben dem dedizierten Blocken von eigens bestimmten URLs gibt es auf Github gepflegte Pi-Hole- Blocklisten aller Art. Im Pi-Hole kann man einfach URLs von Blocklisten hinterlegen, welche dieser anwendet und regelmäßig auf Neuheiten überprüft. Durch gemeinsamen, weltweiten Zusammenhalt halten wir uns somit all den Dreck vom Leibe, mit dem aggressive Vermarkter, kontrollsüchtige Hersteller und Krimminelle uns bewerfen.

DNS-Crypt

Obwohl Pi-Hole auch wunderbar ohne DNS-Crypt funktioniert, sollte man diesen Schritt ernst nehmen, der dafür sorgt, daß der gesamte DNS-Verkehr verschlüsselt wird. Ansonsten sind die DNS-Pakete nämlich lesbar und veränderbar, und zwar auf dem gesamten Weg durch das Internet ! Auch dnscrypt-proxy ist eine freie Open Source Software.

Installation von DNS-Crypt
  • Um die neuste Version zu installieren (dazu muss man wissen : Alle Raspis haben einen ARM-11 Prozessor, dies entspricht der Plattformbezeichnung arm bzw. arm_64 im Archivnamen), benutzt man den Befehl : sudo wget https://github.com/DNSCrypt/dnscrypt-proxy/releases/download/2.1.5/dnscrypt-proxy-linux_arm64-2.1.5.tar.gz && sudo tar xf dnscrypt-proxy-linux_arm64-2.1.5.tar.gz && sudo rm dnscrypt-proxy-linux_arm64-2.1.5.tar.gz && sudo mv linux-arm64 dnscrypt-proxy && cd dnscrypt-proxy && sudo cp example-dnscrypt-proxy.toml dnscrypt-proxy.toml
Konfiguration von DNS-Crypt

Im Wesentlichen muss man folgende Einstellungen in der Datei dnscrypt-proxy.tomlmachen :

  • Da Pi-Hole den Port 53 verwendet, konfigurieren wir dnscrypt-proxy auf Port 54, durch Anpassung dieser Zeile :

    listen_addresses = ['127.0.0.1:54','[::1]:54']
    
  • Nun muss der Upstream-Resolver konfiguriert werden. Mit dem Befehl ./dnscrypt-proxy --list im Installationsverzeichnis kann man sich ansehen, welche sicheren externen DNS-Resolver bereits unterstützt werden. Daraus kann man z. B. diese konfigurieren :

    server_names = ['doh.ffmuc.net', 'doh.ffmuc.net-2', 'quad9-dnscrypt-ip4-nofilter-pri', 'nextdns', 'cloudflare']
    
  • Nun kann man den Dienst scharf schalten, sodaß er automatisch beim Hochfahren des Raspis startet : sudo ./dnscrypt-proxy -service install && sudo ./dnscrypt-proxy -service start

  • Zuletzt muss man Pi-Hole so umkonfigurieren, daß er dnscrypt-proxy auch verwendet. In der Admin-Konsole entfernt man unter Settings → DNS sämtliche Häkchen der Upstream-Server und setzt es stattdessen bei 'Custom 1 (IPv4)'. In das Eingabefeld trägt man ein : 127.0.0.1#54.

  • Ein abschließender Test mit dig @127.0.0.1 -p 54 example.com sollte erfolgreich verlaufen.

Optional zur Konfiguration mit Pi-Hole und dnscrypt-proxy kann man auch eine Konfiguration mit Pi-Hole, dnscrypt-proxy und OpenVPN-Server verwenden, wenn man erwägt, aus dem öffentlichen Netz zuzugreifen.

Verwendung von Adguard Home

Ebenso wie Pi-Hole handelt es sich bei Adguard home um eine freie Software, die es auf komfortable Weise ermöglicht, den DNS-Verkehr zu überwachen und dazu eine Weboberfläche bereitstellt, die man im Heimnetz über jeden Browser erreichen kann. Für iOS gibt es auch eine App für Adguard home.

Vorbereitung

Der Raspi muss nun vorab eine feste IP-Adresse im Heimnetz bekommen. Üblicherweise läßt man dazu die DHCP-Einstellung bestehen, um Konflikte zu vermeiden und konfiguriert die feste IP-Adresse stattdessen auf dem Router. Dort kann man bestimmen, daß bestimmte Geräte immer die gleiche IP-Adresse zugewiesen bekommen sollen.

Installation von Adguard home

Die Installation ist sehr einfach. In der Kommandozeile gibt man folgenden Befehl ein :

curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

Anschließend kann man die Adguard-Oberfläche im Browser über die IP-Adresse erreichen, um die Software einzurichten.

Ausblick

Ein DNS-Filter ist keine Firewall ! Es gibt Geräte (z. B. Smartphones) , aber auch vereinzelt IoT-Geräte, welche beim Ansprechen ihrer Hersteller auf DNS verzichten und direkt deren IP-Adressen verwenden. Zur Kontrolle dieser Kommunikation empfiehlt sich z. B. der Einsatz der Firewall-Software pfsense auf einer Netgate-Hardware für aktuell 189€ oder der Einsatz von OpenWRT auf einer Fritz!Box 4040 für aktuell 87€.


Zurück zur Hauptseite