fbpx

Cyber Security – pimp my pi

Veröffentlicht von Stefan Schreiner am

Auch wenn die Kinder vom Schuster meist die schlechtesten Schuhe haben, habe ich mir meinen Artikel in Bezug auf DNS Sicherheit zu Herzen genommen. Dazu betreibe ich in meinem Netz einen eigenen DNS (vgl.: Domain Name Service) auf Basis Pi-Hole. Erweitert habe ich Pi-Hole, um die Funktionalität DoH (vgl.: DNS over HTTPS & RFC 8484) für die Verwendung als rekursiven DNS, ergänzt um etliche frei erhältliche Filterlisten und einen sogenannten Phishing Catcher.

Schritt eins

Die Installation setzt auf einem frisch installierten Raspbian Buster auf. Hardwarebasis ist ein Raspberry Pi 3B+. IP Adresse für die Ethernetschnittstelle ist fest zugewiesen. Die WLAN Schnittstelle ist deaktiviert. Im Netzwerk sind nur IP v4 Adressen in Verwendung und zulässig. Es werden mehrere Möglichkeiten für die Installation von Pi-Hole angeboten. Die erste Installationsvariante ist für Personen mit großem Vertrauen und wenig Zeit. Das Installationsskript wird direkt vom Webserver abgerufen und an die lokale Shell zur Ausführung übergeben. Die Standardkonfiguration ist in den meisten Fällen passend. Im Abschluss der Installation wird das Passwort für den Admin Benutzer automatisch gesetzt und auf dem Bildschirm ausgegeben. Das sollte man sich notieren, oder gleich ein neues selber setzen. Ein Passwort für die Pi-Hole Administrationsoberfläche lässt sich auf der Konsole mit „pihole -a -p“ setzen. Die Verwaltung kann sowohl über eine Textkonsole, wie auch eine Webseite erfolgen. Die Webseite ist erreichbar unter http://<IP Adresse>/admin 

Schritt zwei

Als zweiten Schritt DNSSEC aktivieren – die Option ist unter Konfiguration DNS im Webinterface zu finden. Speichern der Änderung löst ein Update aus.

Auf der Textkonsole erfolgt die Aktivierung von DNSSEC über die Konfigurationsdatei setupVars.conf. “DNSSEC=true” ist zu setzen. Danach reicht ein schlichtes „pihole restartdns“ und diese Änderung wird übernommen.

Schritt drei

Für zusätzliche Filterlisten empfiehlt sich eine Webseite, wie Firebog. Je nach Wartungsaufwand und Willen Whitelisteinträge zu pflegen empfiehlt es sich die Anzahl der Listen zu bestimmen. Je mehr Listen, desto eher und mehr wird Aufwand zur Anpassung zu treiben sein.

Schritt vier

Für die Einrichtung von DoH liegt eine aktuelle Beschreibung sogar in der Pi-Hole Dokumentation vor. Zu erreichen hier. (Anm.: Natürlich habe ich die Anleitung erst danach gefunden… RTFM).

Schritt fünf

In einem letzten Schritt habe ich dann noch Certstream via deren API eingebunden. Als Vorlage habe ich mich des Skripts Phishing Catcher bedient. Certstream setzt auf dem Google Certificate Transparency Projekt auf. Eine genauere Beschreibung kann auch dort nachgelesen werden. Es geht darum Phishing zu unterbinden bevor die möglichen Angreifer überhaupt mit Ihren Angriffen beginnen. Umgesetzt habe ich das mittels eines Python Scripts, dass die Information über die benannte Schnittstelle von Certstream abgreift, eine Bewertung anhand des Zertifikatsnamen durchführt und potentielle Phishing Domänen in eine lokale Log-Datei einträgt. Einträge werden konsolidiert und gegen bestehende Einträge der Datenbank abgeglichen. Die Datenbank enthält die Zusammenfassung aller Listeneinträge. Diese Log-Datei wird täglich gelöscht, denn bis dahin sollten diese Einträge sich auf anderen Listen auch wiederfinden und die Einträge selbst stehen bereits in der Datenbank.

Die Anzahl der positiv bewerteten Domänen hält sich in Grenzen, somit auch der I/O Aufwand auf der SD Karte des Raspberry Pi (Anm.: Schwachstelle des Pi). Von den zwischen 20 bis 50 pro Sekunde registrierten Zertifikaten bleiben am Ende des Tages rund 3.000 übrig. Viel mehr fällt ins Gewicht, dass das Skript nicht über alle Rechenkerne des Raspberry Pi skaliert. Das Skript lastet einen Kern zu 100 Prozent durchgängig aus. Damit steigt auch die Temperatur des Raspberry Pi und es empfiehlt sich diesen zu kühlen, sonst wird die Taktung heruntergesetzt und er wird damit zu einer möglichen Fehlerquelle.

Erkenntnisse

  • Hostnamen aus lokalen Netzen sind nicht auflösbar. (Anm.: Raspberry wird nicht als DHCP eingesetzt und es gibt mehrere Segmente) -> ToDo: dnsmasq, registrieren von Clients im DNS….
  • VPN Client DHCP Option setzen für Search Domain und DNS
  • Whitelisting der internen Domänen und Clients. Ein Abruf via IP Adresse ist möglich, Hostnamen wahrscheinlich nicht.
  • Je mehr Listen zur Anwendung kommen, des höher wird der Aufwand zur Wartung von Ausnahmen dazu.