Stand Ende 2018

DNS - Übertragung sicherer machen

DNS Datenschutzalptraum entschärfen - wie es einfach geht   

Problem:

Jeder DNS-Anbieter bekommt von seinem Kunden (also: Du!) eine vollständig detaillierte,  chronologische Aufstellung aller online - Aktivitäten frei Haus.
Das ist der feuchte Traum jedes Datenkriminellen (a.k.a. Amazon, NSA, Google, BND, Facebook, GHCQ, GRU, ...). Täglich frei Haus.

Ausführlicher Hintergrund bei der IETF.

Anmerkungen:

Deine anfragende Adresse (MAC,  IP) ist ziemlich konstant. Sie führt leicht auf Deine Person zurück.
Deine angefragten Adressen (MAC & IP) kann jeder Server loggen (und zusammenschreiben).
Alle Typen, d.h. Browser und Email nebeneinander, ebenso alle anderen Aktivitäten mit Zugriff auf Server-Namen (z.B. wget) lieferst Du.
Das totale Kriegen der Metadaten!


Muss DNS ein Alptraum sein?
Nein. 

Idee


Aktion

  1. DNS - Übertragung sicherer machen
    1. Problem:
      1. Anmerkungen:
    2. Idee
    3. Aktion

    4. Lösungsansatz Teil 1
        1. Aktion
    5. Lösungsansatz Teil 2
      1. DNS-over-TLS
      2. DNSSEC
      3. Anleitungen
    6. Lösungskonfiguration
      1. Vorarbeit:
        1. DNS
        2. Link resolv.conf
      2. Einschalten DNS-over-TLS:
        1. DNSSEC einschalten
    7. Bilanz
        1. Einschränkung:
    8. Nachprüfung
        1. DNS Server
        2. Tatsächlich benutzter DNS
        3. DNS-over-TLS prüfen


Lösungsansatz Teil 1

Wenn DNS-Server hoch sensible Daten protokollieren, kann man
DNS-Anfragen verteilen ist möglich, aber ziemlich aufwändig. Die anfragende ID (IP, MAC) permanent wechseln, ist für die MAC einfach und ratsam.

Simpel ist es, einen ziemlich vertrauensvollen DNS-Server zu benutzen.
Auch für v6.
Digitalcourage ist IMHO ein glaubwürdiger Anbieter.
Weitere Suchwörter findest Du bei DNS Privacy org und beispielsweise Uncensored DNS in DK.

Aktion

different MAC
      addresses Nun haben wir vertrauenswürdige DNS eingerichtet und die überwachen nicht.
Gut so!?
Nee, gar nicht.

Der Provider macht selbst eine DNS-Umleitung, das ahnt der Kunde nicht.
Transparent DNS proxies heißt die Schweinerei und baut ein schwer erkennbares Problem auf.
Wie dagegen absichern?

Lösungsansatz Teil 2


DNS - Abfragen beim unzensierten, unprotokollierten Server geringsten Misstrauens sollte man absichern!
Zwei eng verwandte Stufen stehen zur Verfügung:

DNS-over-TLS

DNS-over-TLS verschlüsselt die Abfrage ("DoT"; siehe RFC7858) .
Es ist also eine verschlüsselte Verbindung.
Vorteil: Dritte können nicht einfach mitlesen und darin herumpfuschen und Phishing unterschieben.

DNS-over-TLS ist 100% performant und 100% alltagstauglich!
Eine wünschenswerte Basis wie https gerade wurde.

Dazu wird der DNS-Verkehr mit DNS-over-TLS abgesichert. Das ist nicht Standard bei DNS-Servern.
Der Digitalcourage  Server kann DNS-over-TLS. 

Das Verfahren kann leicht und problemlos aktiviert werden!
In Lösungskonfiguration wird es gezeigt.

DNSSEC

prüft das DNS Zertifikat, es ist eine Prüfung, ob die erhaltenen DNS-Zonendaten auch tatsächlich identisch sind mit denen, die der Ersteller der Zone autorisiert hat und sichert die Übertragung von Resource Records durch digitale Signaturen ab. Das funktioniert im praktischen Leben meistens gut und ausreichend performant. Leider sind erstaunlich viele Server unzureichend konfiguriert, sodass DNSSEC momentan (2018) IMHO nur begrenzt massentauglich ist.
Man kann es einfach mal probieren und ggf. abschalten.

Anleitungen

Es gibt für Ubuntu ab den 16er Versionen nur eine mir bekannte Anleitung von TechRepublic (ueber DNS over TLS mittels Stubby) im Internet - und die ist viel zu kompliziert. Denn Ubuntu hat mehrere Paradigmenwechsel in den Versionen 17, 18 und 19 untergebracht, die praktisch kaum dokumentiert sind. Beispielsweise benutzt  Ubuntu 18+ NetworkManager gesteuert durch Netplan, insbes. bei Neuinstallationen. Faktisch kaum dokumentiert.  Systemd-resolvd ist exklusiv im Einsatz; man darf nicht mehr die 127.0.0.53 töten.
Siehe auch die grossartige Dokumentation bei Arch über DNS over TLS unter systemd-resolved.

Wie es funktioniert, habe ich zuerst bei Askubuntu beschrieben, einschl. dreckiger Lösung mittels fixierter /etc/resolv.conf 
Hier folgt eine verbesserte Version:

Lösungskonfiguration

Vorarbeit:

DNS

Zensurfreien DNS eintragen,
Adresse:
46.182.19.48   bzw.   2a02:2970:1002::18
hier für v4:
Screenshot DNS setzen im
      NetworkManager Ubuntu19.04

Link resolv.conf

Darauf achten, dass unbedingt  die /etc/resolv.conf einen Link beschreibt auf  /run/resolvconf/resolv.conf !
Zielzustand:
lrwxrwxrwx 1 root root 39 Apr 28 14:16 /etc/resolv.conf -> /run/resolvconf/resolv.conf
Im Zweifel umbenennen und neu anlegen mit
  sudo ln -s /run/resolvconf/resolv.conf   /etc/resolv.conf
Das ist zwingend erforderlich und wird sogar abgefragt.
Siehe auch Rel.-Notes Ubuntu 14.04.6 LTS unter Networking.    
# \|/ to be reviewed #

Einschalten DNS-over-TLS:

Editiere /etc/systemd/resolved.conf
Ändere den Eintrag von DNSOverTLS zu 
DNSOverTLS=opportunistic
ergänze den DNS-Server oben (ab U19 existiert ein Dummyeintrag): 
DNS=46.182.19.48
Beispiel:
[Resolve]
#DNS=
DNS=46.182.19.48
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
DNSOverTLS=opportunistic
#DNSSEC=no
#DNSOverTLS=no
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes


Optional:

DNSSEC einschalten

DNSSEC ist komplett vorkonfiguriert, man braucht es nur einschalten.
Editiere /etc/systemd/resolved.conf,
ändere den Eintrag von
    DNSSEC=
auf
    DNSSEC=yes
(default ist immer DNSSEC=no)

Deaktivieren umgekehrt mit
    DNSSEC=no 
oder einfach DNSSEC= auskommentieren.

Bilanz

Alles gut jetzt?
Nein. 
"DNSOverTLS=opportunistic" bietet keine allzeit verlässliche Sicherheit in allen Situationen.

Aber:

Einschränkung:

Da resolvd nur den opportunistic - mode kennt, schaltet das System ggf. das DNSOverTLS ungefragt ab, um weiter DNS-Auflösung liefern zu können.
Im Heimnetz kein Problem,
Laptops mit WLAN haben es schwerer: Eine Fahrt im ICE-WLAN zeigt das Sicherheitsproblem voll auf (zwangsweise unsicheres DNS / siehe Dnsleaktest.com).
Ratsam ist dann die Nutzung eines eigenen Internet-Modems oder eine full-blow Lösung mit z.B. Stubby. Die Angaben zur Konfiguration seines Servers in Stubby liefert Digitalcourage  vollständig und zutreffend.

Nachprüfung

DNS Server

Welcher DNS von systemd-resolved benutzt wird:
resolvectl status
Ob resolvectl mit dem DNS auflöst:
resolvectl query archlinux.org 


Nachprüfbar ist die Nutzung des zensurfreien Servers hier:
    https://dnsleaktest.com/
leaktest-Screenshot

Das heisst, protokolliere mich nicht, das heisst aber nicht, dass auch DNS-over-TLS eingeschaltet ist. 

Tatsächlich benutzter DNS

durch den systemd-resolved:
resolvectl status


DNS-over-TLS prüfen

Die Nutzung des DNSOverTLS lässt sich einfach mit Wireshark prüfen:
Es darf nichts Wesentliches von der Schnittstelle (WLAN, Ethernet) mehr über Port 53 gehen, aller Internet-traffic muss über Port 853 gehen. 





Lizenz:  CC BY 4.0

ipv6 test