ADMIN
2021
12
2021-12-01T12:00:00
Small Business IT
PRAXIS
060
Sicherheit
Security-Tipp
DNS-Abfragen filtern mit Blocky
Geregelter Datenverkehr
von Dr. Matthias Wübbeling
Veröffentlicht in Ausgabe 12/2021 - PRAXIS
Das Domain Name System ist immer wieder Ziel von Attacken oder wird für Angriffe auf Unternehmensinfrastrukturen genutzt. DNS bietet aber auch Möglichkeiten, Unternehmensnetze vor Attacken und Schadsoftware zu schützen. Der Security-Tipp in diesem Monat stellt mit Blocky einen DNS-Server vor, der schnell aufgesetzt ist und sichere DNS-Abfragen sowie DNS-Filterung für Firmennetze ermöglicht.

Das Domain Name System (DNS) versetzt Sie als Administrator in die Lage, innerhalb Ihres Unternehmensnetzwerks die Verbreitung von Schadsoftware einzudämmen und verdächtige Aktivitäten zu unterbinden. Sie können mit entsprechenden Filtern in Ihrem DNS-Server auch Benutzertracker und Werbeeinblendungen auf Webseiten verhindern. Forscher der Universität Bonn haben gezeigt, dass fast 20 Prozent der HTTP-Anfragen Werbeinhalte laden und das Blockieren dieser Ads tatsächlich den Stromverbrauch der anzeigenden Geräte senkt [1].
Das vor gut drei Jahren veröffentlichte RFC 8484 [2] beschreibt die Vorgehensweise für "DNS Queries over HTTPS (DoH)". Die Idee hinter DoH besteht darin, die Privatsphäre der abfragenden Benutzer im Gegensatz zu DNS zu erhöhen. Durch die Verschlüsselung der HTTP-Abfrage mittels TLS werden angefragte Domains damit nicht mehr durch Mitlesen der unverschlüsselten DNS-Pakete offenbart. Im Gegensatz zu DNS over TLS (DoT), das in RFC 7858 [3] spezifiziert ist und wo die DNS-Pakete selbst mit TLS verschlüsselt sind, lässt sich mit DoH sogar die DNS-Abfrage als solche nicht mehr unmittelbar erkennen, wenn der DNS-Dienstleister über denselben Port auch klassische Webseiten ausliefert.
Blocky wird seit Januar 2020 vom deutschen Developer Dimitri Herzog aktiv entwickelt und steht in Gitlab [4] zur Verfügung. Von dort können Sie die Quellen in der Programmiersprache Go herunterladen und damit das Projekt selbst übersetzen. Um jedoch zunächst einen Blick auf Blocky zu werfen, ohne hierfür eine umfangreiche Go-Entwicklungsumgebung zu installieren, bietet sich alternativ das Binärprogramm des Tools an. Noch einfacher wird der Einsatz, wenn Sie das ebenfalls zur Verfügung gestellte Docker-Image verwenden und Blocky einfach in einem Container starten. Das Tool ermöglicht Ihnen das effektive Filtern von Domains auf Basis von Black- und Whitelists oder regulären Ausdrücken. Die Filter können dabei nach Gruppen in Ihrem lokalen Netzwerk unterschiedlich sein. So lassen sich etwa in unterschiedlichen Abteilungen verschiedene Filterregeln implementieren.
Das Domain Name System (DNS) versetzt Sie als Administrator in die Lage, innerhalb Ihres Unternehmensnetzwerks die Verbreitung von Schadsoftware einzudämmen und verdächtige Aktivitäten zu unterbinden. Sie können mit entsprechenden Filtern in Ihrem DNS-Server auch Benutzertracker und Werbeeinblendungen auf Webseiten verhindern. Forscher der Universität Bonn haben gezeigt, dass fast 20 Prozent der HTTP-Anfragen Werbeinhalte laden und das Blockieren dieser Ads tatsächlich den Stromverbrauch der anzeigenden Geräte senkt [1].
Das vor gut drei Jahren veröffentlichte RFC 8484 [2] beschreibt die Vorgehensweise für "DNS Queries over HTTPS (DoH)". Die Idee hinter DoH besteht darin, die Privatsphäre der abfragenden Benutzer im Gegensatz zu DNS zu erhöhen. Durch die Verschlüsselung der HTTP-Abfrage mittels TLS werden angefragte Domains damit nicht mehr durch Mitlesen der unverschlüsselten DNS-Pakete offenbart. Im Gegensatz zu DNS over TLS (DoT), das in RFC 7858 [3] spezifiziert ist und wo die DNS-Pakete selbst mit TLS verschlüsselt sind, lässt sich mit DoH sogar die DNS-Abfrage als solche nicht mehr unmittelbar erkennen, wenn der DNS-Dienstleister über denselben Port auch klassische Webseiten ausliefert.
Blocky wird seit Januar 2020 vom deutschen Developer Dimitri Herzog aktiv entwickelt und steht in Gitlab [4] zur Verfügung. Von dort können Sie die Quellen in der Programmiersprache Go herunterladen und damit das Projekt selbst übersetzen. Um jedoch zunächst einen Blick auf Blocky zu werfen, ohne hierfür eine umfangreiche Go-Entwicklungsumgebung zu installieren, bietet sich alternativ das Binärprogramm des Tools an. Noch einfacher wird der Einsatz, wenn Sie das ebenfalls zur Verfügung gestellte Docker-Image verwenden und Blocky einfach in einem Container starten. Das Tool ermöglicht Ihnen das effektive Filtern von Domains auf Basis von Black- und Whitelists oder regulären Ausdrücken. Die Filter können dabei nach Gruppen in Ihrem lokalen Netzwerk unterschiedlich sein. So lassen sich etwa in unterschiedlichen Abteilungen verschiedene Filterregeln implementieren.
Möchten Sie in Ihrem lokalen Netzwerk eigene Domainnamen verwenden, bietet Ihnen Blocky die Möglichkeit, selbst interne Namen aufzulösen oder entsprechende Anfragen an andere DNS-Server weiterzuleiten. Auch dabei können Sie je nach anfragendem Client unterschiedliche Upstream-Resolver konfigurieren oder Anfragen jedesmal an andere Resolver weiterleiten. Dabei sammelt Blocky standardmäßig keine Informationen über anfragende Clients oder Domainnamen.
Listing 1: config.yml
upstream:
default:
- 8.8.4.4
- 8.8.8.8
- 9.9.9.9
blocking:
blackLists:
ads:
- https://urlhaus.abuse.ch/downloads/hostfile/
clientGroupsBlock:
default:
- ads
port: 53
httpPort: 4000
Abfragen blockieren
Um Blocky zu testen, starten Sie auf einem verfügbaren Linux-Server den angebotenen Docker-Container und tragen diesen für Ihren Computer als DNS-Server ein. Vor dem Start müssen Sie eine einfache Konfigurationsdatei namens "config.yml" für Blocky vorbereiten. Richten Sie beispielsweise gängige DNS-Server als Upstream und die Domain-Blacklist von "abuse.ch" [5] wie in Listing 1 gezeigt ein. Starten Sie anschließend Blocky mit dem folgenden Kommando und denken Sie daran, dass die privilegierten Ports in der Regel nur vom root-Benutzer verwendet werden können:
docker run --name blocky -v ./config.yml:/app/config.yml -p 4000:4000 -p 53:53/udp spx01/blocky
Nach dem Start des Containers können Sie in Ihrem Browser die URL "http://localhost:4000" aufrufen und bekommen dort einen Link zur API-Dokumentation und zum Go-Profiler. Um den aktuellen Arbeitszustand von Blocky mittels API abzufragen, rufen Sie etwa mit Ihrem Browser die API-URL "http://localhost: 4000/api/blocking/status" auf. Als Ausgabe erhalten Sie einen JSON-String mit den gewünschten Informationen. Um die Funktion von Blocky zu testen, rufen Sie einfach eine URL aus der eingebundenen Blacklist auf. Die Adresse können Sie dabei im Browser eingeben, allerdings müssen Sie dann den DNS-Resolver des Browsers oder Ihres Systems ändern. Für einen schnellen Test setzen Sie stattdessen mittels dig einfach das folgende Kommando ab, wenn beispielsweise die Domain "6fz.one" auf Ihrer Blacklist steht:
dig 6fz.one @localhost
Als Ergebnis erwarten wir, wie in Listing 2 zu sehen, die "0.0.0.0" als IP-Adresse von Blocky zurück.
Listing 2: Ergebnis des dig-Befehls
; <> DiG 9.16.15 <> 6gz.one @localhost
;; global options: +cmd
;; got answer:
;; ->HEADER<- opcode: QUERY, status: NOERROR, id: 61020
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;6fz.one. IN A
;; ANSWER SECTION:
;;6fz.one 21600 IN A 0.0.0.0
;; Query time: 0msec
;; SERVER: ::1#53(::1)
;; WHEN: Do Sep 23 17:16:53 CEST 2021
;; MSG SIZE rcvd: 41
Vielseitige Konfiguration
Die Konfigurationsdatei von Blocky erlaubt Ihnen deutlich mehr als das, was wir Ihnen in diesem Security-Tipp zeigen können. So lassen sich TLS-Zertifikate angeben, damit Blocky auch Abfragen mittels DoH ohne Fehler bedienen kann. Die URL für DoH-Abfragen mit TLS-Zertifikat für Ihre Domain lautet dann "https://domain:4000/ dns-query". Durch die Angabe weiterer Gruppen ("default" ist die Gruppe für Clients, die in keiner anderen Gruppe enthalten sind) können Sie auch andere Upstream-DNS-Resolver für bestimmte Clients oder basierend auf der angefragten Domain verwenden. Darüber hinaus ändern Sie bei Bedarf die Standardantwort von "0.0.0.0" in "NXDOMAIN" ab, was dem Anfragenden signalisiert, dass die Domain über DNS gar nicht erreichbar ist.
Fazit
Blocky bietet viele Möglichkeiten zur Absicherung Ihres Netzwerks mittels DNS-Resolver. Der Security-Tipp hat gezeigt, wie Sie Blocky installieren. Die darüber hinaus sehr vielfältigen Konfigurationsmöglichkeiten finden Sie in der übersichtlichen Dokumentation von Blocky.
(dr)