Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
B6 Privacy mit unbound / DNS over TLS
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation
View previous topic :: View next topic  
Author Message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 5234
Location: Bavaria

PostPosted: Sun Dec 13, 2020 12:39 am    Post subject: B6 Privacy mit unbound / DNS over TLS Reply with quote

(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 ... :evil:

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
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 5234
Location: Bavaria

PostPosted: Wed Dec 16, 2020 10:49 pm    Post subject: Test it Reply with quote

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
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 5234
Location: Bavaria

PostPosted: Thu Jan 21, 2021 12:14 pm    Post subject: Reply with quote

Aktuell wurden Sicherheitslücken im DNSMASQ gefunden: https://www.jsof-tech.com/disclosures/dnspooq/ und https://www.jsof-tech.com/wp-content/uploads/2021/01/DNSpooq_Technical-Whitepaper.pdf

(Deutsch: Heise -> https://www.heise.de/news/DNSpooQ-Sicherheitsluecken-im-DNS-DHCP-Server-Dnsmasq-entdeckt-5030266.html )

Das könnte aber jedem DNS-Server passieren - auch dem von uns verwendeten unbound. Deshalb möchte ich noch einmal eindringlich auf das AA-Profil für unbound in D.6 hinweisen.
Back to top
View user's profile Send private message
pietinger
Moderator
Moderator


Joined: 17 Oct 2006
Posts: 5234
Location: Bavaria

PostPosted: Sun Oct 16, 2022 8:42 pm    Post subject: unbound im Server Einsatz Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Deutsche Dokumentation All times are GMT
Page 1 of 1

 
Jump to:  
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