Pi-hole, AdAway, NetGuard und Co.: Wie DNS-Blocking mit speziellen Domains leicht umgangen werden kann

Mein Toot über individuelle bzw. für Tracking-Kunden zugeschnittene Domains hat Verwirrung und Besorgnis hervorgerufen:

Blocking von Werbe- und Tracking-Domains auf DNS-Ebene wird immer schwieriger. Anbieter von Tracking-Lösungen vergeben ihren Kunden schon eigene Subdomains, die so in den Blocklisten nicht verzeichnet sind. Beispiel DB Navigator:

  • deutschebahn.sc.omtrdc.net (Adobe Analytics)
  • zn0lxkzethotizctx-bahn.siteintercept.qualtrics.com (Qualtrics)

Im vorliegenden Beitrag werde ich darauf nochmal genauer eingehen und aufzeigen, wo das Problem liegt – aber auch wie die Lösung aussehen kann.

1. Das Problem

Sofern ihr eine DNS-Blocking-Lösung wie Pi-hole, AdAway, NetGuard, RethinkDNS, AdGuard und Co. einsetzt, solltet ihr den folgenden Test machen. Öffnet zunächst euren Browser und deaktiviert euren Werbe- und Tracking-Blocker (bspw. uBlock Origin) temporär. Anschließend versucht ihr die Website

zn0lxkzethotizctx-bahn.siteintercept.qualtrics.com

zu öffnen. Es gibt nun zwei Möglichkeiten:

  • Die Website kann nicht geladen werden bzw. es erscheint in Firefox (bzw. eurem Browser) eine Meldung wie Seite wurde nicht gefunden
  • Die Website wird geladen und es erscheint ein Login zu einem Backend vom US-Tracking-Anbieter Qualtrics

Im zweiten Fall habt ihr ein kleines Problem, da eure DNS-Blocking-Lösung für Tracking-Kunden zugeschnittene Domains offenbar nicht blockiert. Die Gründe hierfür können unterschiedlich sein:

  • Ihr verwendet Filterlisten, die diese individuellen Subdomains (noch) nicht kennen
  • Ihr verwendet Filterlisten, die Wildcard-Domains blockieren, also bspw. *.qualtrics.com, eure DNS-Blocking-Lösung allerdings kein Wildcard-Domain-Filtering unterstützt

1.1 Nicht vollständige Filterlisten

Widmen wir uns zunächst dem ersten Problem:

Ihr verwendet Filterlisten, die diese individuellen Subdomains (noch) nicht kennen

Es wird niemals eine Filterliste geben, die alle individuellen Subdomains eines Tracking-Anbieters kennen wird. Also bspw.:

  • zn0lxkzethotizctx-bahn.siteintercept.qualtrics.com
  • zn0u4uhkzxfoylle1-vmware.siteintercept.qualtrics.com
  • zn1amgis3tmt5gckb-dropbox.siteintercept.qualtrics.com
  • zn3rhju8vo76txc85-microsoft.siteintercept.qualtrics.com
  • zn8chvercsgzwyi8z-sony.siteintercept.qualtrics.com
  • […]

Im Browser werden solche Tracking-Domains zuverlässig von uBlock Origin blockiert. Aber in Anwendungen und Smartphone-Apps der Deutschen Bahn, Dropbox oder Microsoft sind diese spezifischen Tracking-Domains enthalten und da hilft euch kein uBlock Origin – sondern ihr müsst euch auf euren DNS-Blocker verlassen. Genau hier liegt aber das Problem: Es wird keine Liste geben, die alle individuellen Subdomains eines Tracking-Anbieters kennt. Die Lösung kann also nicht sein, möglichst viele Filterlisten einzubinden, sondern Wildcard-Domain-Filtering einzusetzen. Das führt uns zum zweiten Problem:

Ihr verwendet Filterlisten, die Wildcard-Domains blockieren, also bspw. *.qualtrics.com, eure DNS-Blocking-Lösung allerdings kein Wildcard-Domain-Filtering unterstützt

1.2 Wildcard-Domain-Filtering

Der Schlüssel liegt also im Wildcard-Domain-Filtering. Die Frage ist nun:

  • Unterstützt eure DNS-Blocking-Lösung Wildcard-Domain-Filtering?
  • Falls ja, muss es noch aktiviert werden?
  • Falls ja, verwendet ihr passende Listen, die Wildcard-Domain-Filtering für eure Lösung ermöglichen?

Gehen wir auch hier wieder der Reihe nach vor und widmen uns zunächst der ersten Frage:

Unterstützt eure DNS-Blocking-Lösung Wildcard-Domain-Filtering?

Anbei eine nicht vollständige Liste:

  • Netzwerklösungen
    • Pi-hole: Ja
    • Adblock (OpenWrt): Ja
    • […]
  •  Android/iOS
    • AdAway (Android): Nein
    • NetGuard (Android): Nein
    • DNS66 (Android): Nein
    • Blokada (Android): Ja
    • RethinkDNS (Android): Ja
    • Blokada (iOS): Nein
    • AdGuard (iOS): Ja
    • […]

Zunächst solltet ihr euch also informieren, ob eure eingesetzte Lösung Wildcard-Domain-Filtering unterstützt. Die bekannte Firewall NetGuard für Android unterstützt es tatsächlich nicht. Die Begründung:

wildcards are not supported due to performance and battery usage reasons

NetGuard ist in erster Linie auch eine Firewall und kein DNS-Adblocker. Fairerweise sollte man das erwähnen. Bei NetGuard gibt es für das Wildcard-Problem aber eine andere Lösung, die ich demnächst in einem Blog-Beitrag skizzieren werde.

Nun zur zweiten Frage:

Falls ja, muss es noch aktiviert werden?

Bei den oben aufgelisteten Lösungen, die mit Ja gekennzeichnet sind, gibt es nur eine Ausnahme: Blokada in der Version 4.x. Dort muss Wildcard-Domain-Filtering manuell aktiviert werden:

Blokada 4 supports wildcards for a long while now. It needs to be manually activated under the Advanced Adblocking option menu. It supports adding blocklists with wildcards, or even adding your own entries with wildcards. Learn more about advanced adblocking here.

Und nun zur letzten Frage:

Falls ja, verwendet ihr passende Listen, die Wildcard-Domain-Filtering für eure Lösung ermöglichen?

Das ist auch wieder individuell und die Filterlisten müssen für die unterschiedlichen Lösungen tatsächlich anders aussehen bzw. von den Lösungen korrekt als Wildcard-Liste eingebunden/konvertiert werden. Anbei einige Regel-Beispiele bzw. Befehle für die Kommandozeile, um die Domain facebook.com bzw. alle Subdomains wie graph.facebook.com zu blockieren.

Pi-hole (Kommandozeile):

pihole --wild facebook.com

Adblock (OpenWrt mit dnsmasq):

address=/facebook.com

Blokada (Android):

*.facebook.com

RethinkDNS (Android):

facebook.com

AdGuard (iOS):

||facebook.com^

2. Mögliche Lösungen

Das Problem sollte nun klar sein. Wie aber kann eine Lösung aussehen? Das kommt ganz darauf an, welche DNS-Blocking-Lösung ihr verwendet. Nachfolgend meine Erfahrungswerte für einige DNS-Blocker:

  • Adblock (OpenWrt): Adblock für OpenWrt implementiert seit der Version 2.4.0 die Funktion tld compression. Dabei werden Domains einer Filterliste komprimiert bzw. auf die Top-Level-Domain reduziert. Aus »super.tracking.com« und »all-in.tracking.com« wird dann tracking.com. Das bedeutet: Das Adblock-Add-On für OpenWrt nimmt die Konvertierung selbst vor und blockiert Domains dann nach dem Wildcard-Prinzip. Genauer gesagt: dnsmasq oder ein anderer DNS-Forwarder wie unbound oder kresd beantwortet auf Basis der Adblock-Regeln die DNS-Anfragen anschließend.
  • RethinkDNS (Android): Bei RethinkDNS werden einige Listen bereits als Wildcard-Listen behandelt. Allerdings noch nicht alle. Aktuell existiert ein Issue, das es eventuell ermöglichen soll, eine Filterliste so zu importieren, dass diese nach dem Wildcard-Prinzip gefiltert wird. Damit die Domain »zn0lxkzethotizctx-bahn.siteintercept.qualtrics.com« blockiert werden kann, muss bei den Blocklisten unter Privacy -> Agressive ausgewählt sein. Damit wird eine Filterliste (Developer: Dan) importiert, die unter anderem die Domain »zn0lxkzethotizctx-bahn.siteintercept.qualtrics.com« blockiert. Soweit ich das beurteilen kann, bietet RethinkDNS die Möglichkeit für Wildcard-Filterlisten, aber noch keine Möglichkeit, alle bzw. ausgewählte Filterlisten als Wildcard-Filterliste zu behandeln. Wildcard-Blocking funktioniert (aktuell) daher nur für wenige Domains.
  • AdGuard (iOS): Das AdGuard-Projekt bietet zahlreiche Filterlisten, die man für AdGuard verwenden kann. Darunter sind ebenfalls Filterlisten, die Wildcard-Blocking-Regeln wie diese beinhalten ||qualtrics.com^. Mit dieser Regel wird die Domain qualtrics.com und alle Subdomains wie »zn0lxkzethotizctx-bahn.siteintercept.qualtrics.com« blockiert. AdGuard bietet ebenfalls eine Syntax für DNS-Filter-Regeln.
  • NetGuard (Android): NetGuard unterstützt kein Wildcard-Blocking. Bei NetGuard muss man sich daher anders behelfen. Grundsätzlich empfehle ich die Nutzung von NetGuard nach dem Whitelist-Prinzip. Es werden in jeder App also nur jene Verbindungen freigegeben, die für die Funktion notwendig sind. Am Beispiel der DB-Navigator-App (Deutsche Bahn) habe ich das bereits skizziert. Demnächst werde ich das in einem längeren Blog-Beitrag ausführlich behandeln.

Bei einem Pi-hole konnte ich das Verhalten leider nicht prüfen – eventuell kann mir jemand dazu seine Erfahrungswerte mitteilen. Ansonsten freue ich mich über Einsendungen zum Thema.

Update 04.03.2022

Einige Leser berichten von folgendem Verhalten auf einem Pi-hole:
  • Standardmäßig wird die Adresse »zn0lxkzethotizctx-bahn.siteintercept.qualtrics.com« nicht blockiert
  • Erst durch das manuelle Einfügen eines Wildcard-Eintrags in der Blocklist, wird diese Subdomain dann blockiert:
    • (\.|^)qualtrics\.com
Der Kuketz-Blog ist spendenfinanziert! Mitmachen ➡