DNSCrypt in Debian einrichten

DNSCrypt ist ein Tool, das einen Sicherheitsgewinn durch Verhinderung von Man-In-The-Middle-Angriffen bei DNS-Abfragen verspricht. Dieser Artikel, wenn auch schon älter, umreißt das Thema ganz gut.

Installation

DNSCrypt lässt sich unter Debian folgendermaßen installieren und aktivieren:

# apt install dnscrypt-proxy
# systemctl enable dnscrypt-proxy.service

Konfiguration

Nun kann man sich einen der, in der Datei /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv gelisteten, Server aussuchen und in die Datei /etc/dnscrypt-proxy/dnscrypt-proxy.conf eintragen, z.B.:

ResolverName ns0.dnscrypt

Man kann auch random eintragen, dann wird ein zufälliger Resolver aus der Liste gewählt, der über IPv4 verfügbar ist, DNSSEC unterstützt und nicht loggt:

ResolverName random

Damit auch der installierte Proxy zur Auflösung von DNS-Anfragen genutzt wird muss die Datei /etc/resolv.conf editiert werden:

# Use dnscrypt-proxy
nameserver 127.0.2.1

DNSCrypt starten

Nun kann kann der DNSCrypt-Proxy gestartet werden:

# systemctl start dnscrypt-proxy.service

Troubleshooting

Da der NetworkManager diese Datei bei Nutzung von DHCP überschreibt muss, wie im Arch-Wiki beschrieben, in der Datei /etc/NetworkManager/NetworkManager.conf die Zeile dns=none im Bereich [main] eingetragen werden.

Bei mir war die Datei /etc/resolv.conf ein Link auf /var/run/NetworkManager/resolv.conf und ich musste den Link entfernen damit DNSCrypt funktionierte:

# ll /etc/resolv.conf      
lrwxrwxrwx 1 root root 35 Jul  7 02:04 /etc/resolv.conf -> /var/run/NetworkManager/resolv.conf
# rm /etc/resolv.conf

Danach habe ich die Datei neu angelegt, den oben beschriebenen Eintrag eingefügt und die Datei für alle Nutzer lesbar gemacht:

# nano /etc/resolv.conf
# chmod 644 /etc/resolv.conf
# ll /etc/resolv.conf
-rw-r--r-- 1 root root 42 Jul  7 15:07 /etc/resolv.conf

Nach einem Neustart des NetworkManagers funktioniert auch die Namensauflösung mit selbigem.

Im verlinkten Beitrag aus dem Arch-Wiki ist auch erklärt, wie man dhcpcd und netctl davon abhält die Datei resolv.conf zu überschreiben.

Erfolg testen

Man kann lokal testen ob die Anfragen auch vom DNSCrypt-Proxy beantwortet werden:

$ dig debian.org txt

; <<>> DiG 9.10.3-P4-Debian <<>> debian.org txt
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44884
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;debian.org.			IN	TXT

;; AUTHORITY SECTION:
debian.org.		600	IN	SOA	denis.debian.org. hostmaster.debian.org. 2017070811 1800 600 1814400 600

;; Query time: 192 msec
;; SERVER: 127.0.2.1#53(127.0.2.1)
;; WHEN: Sat Jul 08 09:32:22 CEST 2017
;; MSG SIZE  rcvd: 92

Die Zeile ;; SERVER: 127.0.2.1#53(127.0.2.1) zeigt, dass Anfragen durch DNSCrypt beantwortet werden.

Es gibt auch einen DNS Leak Test online.

[Update 2017-07-07]

Aufgrund dieses Kommentares habe ich den Server im Beispiel durch einen Server aus Island ersetzt, der DNSSEC unterstützt, nicht loggt und nicht zensiert:

ns0.dnscrypt.is,"ns0.dnscrypt.is in Reykjavík, Iceland","DNSSEC enabled, non-logging, uncensored. Sponsored by 1984 Hosting.","Reykjavík, Iceland",,https://dnscrypt.is,1,yes,yes,no,93.95.228.87,2.dnscrypt-cert.ns0.dnscrypt.is,EE41:6A83:451C:218F:37B2:B736:78C4:999F:7DE6:89D1:31D2:7866:7C8E:A8BB:1C95:B402,pubkey.ns0.dnscrypt.is

Ich habe auch die Konfiguration von DNSCrypt mit dem NetworkManager erweitern müssen.

[Update 2017-07-08]

Abschnitt “Erfolg testen” hinzugefügt.

[Update 2017-11-18]

Hinweis auf random und die Scripte dnscrypt-update-resolvers.sh und resolvers-check.sh vorgestellt.

[Update 2017-12-16]

Die URL der Scripte auf Github hat sich geändert und wurde angepasst.

[Update 2018-02-03]

Wie in diesem Kommentar richtig angemerkt gibt es die Scripte auf Github nicht mehr. Ich habe die Abschnitte dementsprechend entfernt.

Inhalt

Teilen: E-Mail

Hinterlasse einen Kommentar oder diskutiere im OSBN-Chat.


In den Kommentaren können folgende Formatierungen genutzt werden.