View previous topic :: View next topic |
Author |
Message |
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5127 Location: Bavaria
|
Posted: Sun Dec 13, 2020 12:39 am Post subject: B6 Privacy mit unbound / DNS over TLS |
|
|
(Dieser Post ist Teil einer Installation-Anleitung. Falls nicht schon geschehen lies bitte: Installation Guide for Paranoid Dummies)
B.6 Privacy mit unbound / DNS over TLS
Auch wenn viele auf den "dnsmasq" schwören, ist m.M. der "unbound" für einen Desktop geeigneter. Falls Dir die Überschrift wenig sagt, lies doch:
https://de.wikipedia.org/wiki/DNS_over_TLS
Edit 2023-04-26: WikiPedia hat mal wieder umfangreich gelöscht. Die Liste mit den freien DNS-Servern ist weg ...
Hier findest Du auch öffentliche DNS-Server, die behaupten nicht zu zensieren und zu protokollieren. Im folgenden werde ich zwei Beispiel-Server daraus verwenden. Entscheide Dich selbst für Dir geeignet erscheinende DNS-Server. Ich habe unbound nicht als Ad-blocker konfiguriert, da ich dafür den privoxy verwende. Du kannst natürlich die Konfiguration von unbound entsprechend erweitern.
Der Artikel in unserem Gentoo Wiki ist (Stand:heute) noch etwas dürftig:
https://wiki.gentoo.org/wiki/Unbound
Dafür gebe ich Dir aber zwei hervorragende Links zum Thema:
https://www.privacy-handbuch.de/handbuch_93c.htm
https://dnsprivacy.org/
Wenn Du DHCP im Einsatz hast, konfiguriere es so, dass es die /etc/resolv.conf NICHT überschreibt ! Ich empfehle nach wie vor für private Zwecke eine statische IP-Adresse zu verwenden (macht das Leben einfacher).
Wenn Du eine FireWall im Einsatz hast, ergänze diese um folgende Freigaben (setze die IP-Adresse(-n) Deiner auserwählten DNS-Server ein):
Code: | ip_dnssec1="185.95.218.42" # free dns-server: Digitale Gesellschaft (CH)
ip_dnssec2="185.95.218.43" # free dns-server: Digitale Gesellschaft (CH)
[...]
# accept dnssec
iptables -A OUTPUT -d ${ip_dnssec1} -p tcp --dport 853 -j ACCEPT
iptables -A OUTPUT -d ${ip_dnssec2} -p tcp --dport 853 -j ACCEPT |
1. Wir holen uns den stable unbound:
Code: | # emerge -pv unbound |
2. Danach editierst Du die /etc/unbound/unbound.conf. Ich habe hier - beispielhaft - obige DNS-Server eingetragen. Ändere dies auf die von Dir gewünschten (ansonsten kannst Du einfach von hier rauskopieren).
Edit 2022-03-29: Falls "unbound" zentral für mehrere Clients im Einsatz ist, solltest Du die Option "num-threads: 2" prüfen und ggf. höher setzen. Für einen lokalen Einsatz genügt aber auch "num-threads: 1" vollkommen.
Code: | server:
verbosity: 1
num-threads: 2
interface: 127.0.0.1
port: 53
so-reuseport: yes
cache-min-ttl: 300
cache-max-ttl: 86400
do-ip4: yes
do-ip6: no
do-udp: yes
do-tcp: yes
use-systemd: no
do-daemonize: yes
# By default everything is refused, except for localhost.
# access-control: 127.0.0.0/8 allow
use-syslog: yes
# file to read root hints from.
# get one from https://www.internic.net/domain/named.cache
# root-hints: ""
hide-identity: yes
hide-version: yes
harden-short-bufsize: yes
harden-large-queries: yes
harden-glue: yes
harden-dnssec-stripped: yes
harden-below-nxdomain: yes
harden-referral-path: yes
harden-algo-downgrade: yes
qname-minimisation: yes
qname-minimisation-strict: no
aggressive-nsec: yes
use-caps-for-id: yes
prefetch: yes
rrset-roundrobin: yes
minimal-responses: yes
# File with trusted keys for validation. Specify more than one file
# with several entries, one file per entry.
# Zone file format, with DS and DNSKEY entries.
# Note this gets out of date, use auto-trust-anchor-file please.
# trust-anchor-file: "/etc/dnssec/root-anchors.txt"
tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"
remote-control:
control-enable: no
forward-zone:
name: "."
forward-tls-upstream: yes
forward-addr: 185.95.218.42@853
forward-addr: 185.95.218.43@853 |
3. Danach testen wir ob alles läuft. Zuerst machen wir eine herkömmliche Abfrage (bei mir ist momentan der Router als DNS-Server eingetragen) und danch eine über unbound. Diese wiederholen wir, um den Cache-Effekt zu sehen (Query Time):
Code: | # /etc/init.d/unbound start
# dig gentoo.org
; <<>> DiG 9.16.6 <<>> gentoo.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 544
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;gentoo.org. IN A
;; ANSWER SECTION:
gentoo.org. 5681 IN A 89.16.167.134
;; Query time: 10 msec
;; SERVER: 192.168.2.1#53(192.168.2.1)
;; WHEN: So Dez 13 00:42:32 CET 2020
;; MSG SIZE rcvd: 55
# dig @localhost gentoo.org
; <<>> DiG 9.16.6 <<>> @localhost gentoo.org
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8967
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;gentoo.org. IN A
;; ANSWER SECTION:
gentoo.org. 7200 IN A 89.16.167.134
;; Query time: 253 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: So Dez 13 00:43:14 CET 2020
;; MSG SIZE rcvd: 55
# dig @localhost gentoo.org
; <<>> DiG 9.16.6 <<>> @localhost gentoo.org
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16266
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;gentoo.org. IN A
;; ANSWER SECTION:
gentoo.org. 7193 IN A 89.16.167.134
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: So Dez 13 00:43:21 CET 2020
;; MSG SIZE rcvd: 55 |
Falls Du eine FW im Einsatz hast, solltest Du jetzt diese Pakete auch mit "iptables -L -v -n" sehen.
4. Wenn alles funktioniert hat, stellen wir unsere /etc/resolv.conf auf unseren unbound um:
Code: | nameserver 127.0.0.1
options trust-ad |
5. Falls Du D.) AppArmor einsetzt, kopiere gleich das entsprechende Profil für unbound aus D.6 in Dein /etc/apparmor.d Verzeichnis.
6. Aktiviere unbound für den nächsten Systemstart mit:
Code: | # rc-update add unbound default |
7. Führe einen Reboot durch und prüfe als erstes einen "normalen" dig. Wenn alles funktioniert, dann entferne in Deiner FireWall die bisherigen Freigaben für Port 53 ... da obsolet ...
.
Last edited by pietinger on Wed Apr 26, 2023 2:38 pm; edited 17 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5127 Location: Bavaria
|
Posted: Wed Dec 16, 2020 10:49 pm Post subject: Test it |
|
|
Ich vergaß ein paar Links damit Du das auch testen kannst (benötigt javascript):
Folgender Link sollte von Deinem Browser nicht mehr geöffnet werden können:
https://www.dnssec-failed.org
Hier kannst Du prüfen ob DNSSEC funktioniert (nur für IPv4 halt); Domain signature validation (DNSSEC) sollte ein grünes Häkchen haben:
https://internet.nl/connection
Zuletzt noch ein DNSSEC resolver algorithm test:
https://rootcanary.org/test.html
(Hier musst Du ein wenig warten; möglicherweise wird zuerst alles mit rot angezeigt; warte noch länger !)
Last edited by pietinger on Wed Dec 21, 2022 2:50 pm; edited 3 times in total |
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5127 Location: Bavaria
|
|
Back to top |
|
|
pietinger Moderator
Joined: 17 Oct 2006 Posts: 5127 Location: Bavaria
|
Posted: Sun Oct 16, 2022 8:42 pm Post subject: unbound im Server Einsatz |
|
|
unbound im Server Einsatz
Ein Freund fragte mich ob ich denn auch für seine Firewall ein Loopback NAT (*) konfigurieren könnte, da er einen Webserver hat, der auch vom Internet aus erreichbar ist. Wenn er aber intern (=von seinem LAN aus) im Browser diese (seine eigene) Seite (mit dem echten Namen) ansurft, geht das (natürlich) nicht, da unbound ihm ja die externe IP-Adresse liefert.
(* siehe kurz hier: https://en.wikipedia.org/wiki/Network_Address_Translation#NAT_hairpinning ; NEIN, ich empfehle das NICHT !)
Da er aber eh' unbound als zentralen caching DNS resolver nutzt, habe ich ihm stattdessen DNS spoofing empfohlen. Mir hat diese Seite dabei sehr geholfen:
https://dnswatch.com/dns-docs/UNBOUND/
Ich muß hinzufügen, es ist ein kleines Heim-Netzwerk. Für größere Netze emfehle ich das nicht. Hier sollte man eher ein Split DNS machen, oder in diese Richtung schauen (Nein, ich habe es mir nicht angetan):
https://unbound.docs.nlnetlabs.nl/en/latest/topics/filtering/rpz.html
Wenn Du also unbound zentral auf einem Server hast, der für mehre Kisten zuständig ist (und in den Clients die "resolv.conf auf diesen zeigst), dann kannst Du die Konfiguration vom ersten Post so erweitern/ergänzen (BEISPIEL):
Code: | server:
interface: 0.0.0.0
access-control: 10.0.0.0/8 allow
access-control: 172.16.0.0/12 allow
# access-control: 192.168.0.0/16 allow
access-control: 127.0.0.1 allow
access-control: 0.0.0.0 deny
private-address: 10.0.0.0/8
private-address: 172.16.0.0/12
# private-address: 192.168.0.0/16
private-domain: "mylan"
# "Abuse" unbound as DNS server
local-zone: "mylan." static
local-data: "firewall.mylan. IN A 10.0.0.1"
local-data: "laptop.mylan. IN A 10.0.0.2"
local-data: "desktop.mylan. IN A 10.0.0.3"
local-data: "intserver.mylan. IN A 172.16.0.2"
local-data: "webserver.mylan. IN A 172.16.0.3"
local-data-ptr: "10.0.0.1 firewall.mylan"
local-data-ptr: "10.0.0.2 laptop.mylan"
local-data-ptr: "10.0.0.3 desktop.mylan"
local-data-ptr: "172.16.0.2 intserver.mylan"
local-data-ptr: "172.16.0.3 webserver.mylan"
### If your webserver is reachable from outside and has a valid internet name use DNS spoofing
local-data: "realwebservername.realdomain.org. IN A 172.16.0.3" |
Meiner Meinung muss für so ein kleines Netz keine Optimierung der unbound-Konfiguration gemacht werden. Falls es bei Dir wirklich nötig sein sollte, hilft Dir diese Seite sicherlich weiter: https://unbound.docs.nlnetlabs.nl/en/latest/topics/performance.html
. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|