GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Schützen Sie Ihre DNS-Privatsphäre auf Ubuntu 20.04/18.04 (DNS über TLS)

Dieses Tutorial zeigt Ihnen, wie Sie Ihre DNS-Privatsphäre auf dem Ubuntu 20.04/18.04-Desktop mit DNS über TLS schützen . Wir werden ein Tool namens stubby verwenden um das zu erreichen. Aber zuerst möchte ich Ihnen sagen, warum DNS nicht sicher ist.

DNS-Schwachstelle

DNS ist unsicher, da DNS-Abfragen standardmäßig nicht verschlüsselt sind, was von mittleren Entitäten ausgenutzt werden kann. DNS-Cache-Gift ist einer der DNS-Missbräuche, der von der Great Firewall of China (GFW) weit verbreitet ist, um das chinesische Internet zu zensieren. GFW prüft jede DNS-Anfrage, die an einen DNS-Server außerhalb Chinas gesendet wird. Da das Klartext-DNS-Protokoll auf UDP basiert, einem verbindungslosen Protokoll, kann GFW sowohl die Client-IP als auch die Server-IP fälschen. Wenn GFW einen Domainnamen auf seiner Sperrliste findet, ändert es die DNS-Antwort. Wenn beispielsweise ein chinesischer Internetnutzer google.com besuchen möchte, gibt die Great Firewall of China an den DNS-Resolver statt der echten IP-Adresse von Google eine in China befindliche IP-Adresse zurück. Dann gibt der DNS-Resolver die gefälschte IP-Adresse an den Computer des Benutzers zurück.

Was ist DNS über TLS? Wie wird Ihre Privatsphäre geschützt?

DNS über TLS bedeutet, dass DNS-Abfragen über eine sichere Verbindung gesendet werden, die mit TLS verschlüsselt ist, der gleichen Technologie, die HTTP-Verkehr verschlüsselt, sodass Dritte Ihre DNS-Abfragen nicht sehen können. Zusammen mit HTTPS und verschlüsseltem SNI (Server Name Indication) ist Ihr Browserverlauf vollständig vor ISP-Spionage geschützt.

Stubby ist ein vom getdns-Team entwickelter Open-Source-DNS-Stub-Resolver. Es verwendet die getdns-Bibliothek. Ein Stub-Resolver ist ein kleiner DNS-Client auf dem Computer des Endbenutzers, der DNS-Anfragen von Anwendungen wie Firefox empfängt und Anfragen an einen rekursiven Resolver wie 1.1.1.1 oder 8.8.8.8 weiterleitet. Stubby ist insofern besonders, als es DNS über TLS unterstützt. Standardmäßig sendet es nur verschlüsselte DNS-Anfragen. Es gibt einen weiteren Open-Source-Stub-Resolver namens cloudflared das DNS über HTTPS unterstützt, aber Stubby ist bereits im Ubuntu 20.04/18.04-Repository enthalten und sehr einfach zu verwenden.

So installieren und verwenden Sie Stubby auf Ubuntu 20.04/18.04 Desktop

Stubby befindet sich im Ubuntu 20.04/18.04-Repository. Öffnen Sie ein Terminalfenster und führen Sie den folgenden Befehl aus, um es zu installieren.

sudo apt install stubby

Dadurch werden Stubby und getdns installiert Bücherei. Einmal installiert, läuft Stubby im Hintergrund. Sie überprüfen den Status mit:

systemctl status stubby

Stubby lauscht auf TCP- und UDP-Port 53 von localhost (127.0.0.1), wie Sie sehen können, wenn Sie diesen Befehl ausführen:

sudo netstat -lnptu | grep stubby

Der standardmäßige Stub-Resolver, der von systemd-resolved bereitgestellt wird lauscht auf TCP- und UDP-Port 53 von 127.0.0.53.

sudo netstat -lnptu | grep systemd-resolv

Hinweis:Wenn dnsmasq auf TCP-Port 53 von 127.0.0.1 lauscht, dann lauscht Stubby nur auf UDP-Port 53 von 127.0.0.1.

Die Hauptkonfigurationsdatei ist /etc/stubby/stubby.yml . Normalerweise müssen keine Änderungen daran vorgenommen werden, es sei denn, Sie möchten einen anderen oder Ihren eigenen rekursiven Resolver verwenden. Lassen Sie mich einige Standardkonfigurationen erläutern. Sie können die Datei öffnen mit:

sudo nano /etc/stubby/stubby.yml

Die folgende Zeile lässt stubby als Stub-Resolver statt als vollständig rekursiven Resolver laufen, weshalb es stubby heißt.

resolution_type: GETDNS_RESOLUTION_STUB

Mit der folgenden Konfiguration werden Stubby-Send-DNS-Abfragen mit TLS verschlüsselt. Es werden keine Abfragen im Klartext gesendet.

dns_transport_list:
- GETDNS_TRANSPORT_TLS

Diese folgende Zeile erfordert ein gültiges TLS-Zertifikat auf dem rekursiven Remote-Resolver.

tls_authentication: GETDNS_AUTHENTICATION_REQUIRED

Die folgenden Zeilen legen die Empfangsadressen für den Stubby-Daemon fest. Standardmäßig sind sowohl IPv4 als auch IPv6 aktiviert.

listen_addresses:
- 127.0.0.1
- 0::1

Die folgende Zeile erstellt rekursive Resolver für Stubby-Abfragen im Round-Robin-Verfahren. Wenn auf 0 gesetzt verwendet Stubby nacheinander jeden Upstream-Server, bis er nicht mehr verfügbar ist, und verwendet dann den nächsten.

round_robin_upstreams: 1

Standardmäßig sind in der Stubby-Konfigurationsdatei 3 rekursive Resolver aktiviert. Sie werden von sturen Entwicklern betrieben und unterstützen DNS über TLS. Die vollständige Liste der empfohlenen Server finden Sie auf der DNS-Datenschutz-Website.

dnsovertls.sinodun.com     145.100.185.15
dnsovertls1.sinodun.com    145.100.185.16
getdnsapi.net              185.49.141.37

Es gibt andere DNS-Server in den Additional Servers Abschnitt, die standardmäßig deaktiviert sind.

dns.quad9.net
unicast.censurfridns.dk
dnsovertls3.sinodun.com (supporting TLS1.2 and TLS 1.3)
dnsovertls2.sinodun.com
dns.cmrg.net
dns.larsdebruin.net
......

Es gibt auch DNS-Server, die auf Port 443 lauschen. Wenn Port 853 in Ihrem Netzwerk blockiert ist, können Sie sie auskommentieren, um diese Server zu verwenden.

dnsovertls.sinodun.com
dnsovertls1.sinodun.com
dns.cmrg.net
dns.neutopia.org

Jetzt können Sie den Nano-Texteditor verlassen, indem Sie Ctrl+X drücken .

Zu Stubby wechseln

Bearbeiten der /etc/resolve.conf Datei zum Ändern des Nameservers wird nicht mehr empfohlen. Befolgen Sie die nachstehenden Anweisungen, um systemd-resolved zu erstellen DNS-Abfragen an Stubby senden.

GNOME-Desktop

Klicken Sie auf das Network Manager-Symbol in der oberen rechten Ecke Ihres Desktops. Wählen Sie dann kabelgebundene Einstellungen. (Wenn Sie Wi-Fi verwenden, wählen Sie Wi-Fi-Einstellungen.)

Klicken Sie auf das Zahnradsymbol.

Wählen Sie IPv4 und wechseln Sie dann in den DNS-Einstellungen zu Automatic auf OFF, wodurch verhindert wird, dass Ihr Ubuntu-System die DNS-Serveradresse von Ihrem Router erhält. Geben Sie 127.0.0.1 ein im DNS-Feld. Klicken Sie auf Apply Schaltfläche, um Ihre Änderungen zu speichern.

Starten Sie anschließend NetworkManager neu, damit die Änderungen wirksam werden.

sudo systemctl restart NetworkManager

Sobald Sie wieder verbunden sind, können Sie in den Details sehen, dass Ihr Ubuntu-System jetzt 127.0.0.1 als DNS-Server verwendet Registerkarte.

Unity-Desktop

Empfohlene Lektüre:So installieren Sie die Unity-Desktopumgebung unter Ubuntu 20.04/18.04.

Klicken Sie auf das Network Manager-Symbol in der oberen rechten Ecke Ihres Desktops und dann auf edit connections .

Wählen Sie Ihren Verbindungsnamen aus und klicken Sie auf das Zahnradsymbol.

Wählen Sie die Registerkarte IPv4-Einstellungen, ändern Sie die Methode von Automatic(DHCP) an Automatic(DHCP) addresses only , wodurch verhindert wird, dass Ihr Ubuntu-System die DNS-Serveradresse von Ihrem Router erhält. Geben Sie dann einen DNS-Server (127.0.0.1) an. Stubby hört auf 127.0.0.1.

Speichern Sie Ihre Änderungen. Starten Sie anschließend NetworkManager neu, damit die Änderungen wirksam werden.

sudo systemctl restart NetworkManager

Sobald Sie wieder verbunden sind, klicken Sie erneut auf das Network Manager-Symbol und wählen Sie connection information . Sie können sehen, dass Ihr Ubuntu-System jetzt 127.0.0.1 als DNS-Server verwendet.

DNS-Server über die Befehlszeile ändern

Sie können die folgende Methode verwenden, um den DNS-Server zu ändern, solange Ihre Desktop-Umgebung NetworkManager verwendet.

Öffnen Sie ein Terminalfenster und wechseln Sie zum Network Manager-Verbindungsprofilverzeichnis.

cd /etc/NetworkManager/system-connections/

Listen Sie dann die auf Ihrem System verfügbaren Verbindungsnamen auf.

ls

Wie Sie sehen können, habe ich mehrere Verbindungen auf meinem System, von denen eine eine Kabelverbindung ist. Einige sind drahtlose Verbindungen und eine ist eine VPN-Verbindung. Da mein Desktop-Computer über ein Ethernet-Kabel mit meinem Router verbunden ist, muss ich das kabelgebundene Verbindungsprofil mit dem nano bearbeiten Befehlszeilen-Texteditor.

sudo nano 'Wired connection 1'

Wenn Ihr Computer über Wi-Fi verbunden ist, müssen Sie das Profil der drahtlosen Verbindung bearbeiten. Suchen Sie in dieser Datei den [ipv4] Konfigurationen. Standardmäßig sollte es so aussehen:

[ipv4]
dns-search=
method=auto

Damit Ihr System Stubby verwendet, ändern Sie die Konfigurationen wie folgt.

[ipv4]
dns=127.0.0.1;
dns-search=
ignore-auto-dns=true
method=auto

Um die Datei im Nano-Texteditor zu speichern, drücken Sie Ctrl+O , und drücken Sie dann zur Bestätigung die Eingabetaste. Drücken Sie Ctrl+X beenden. Starten Sie dann Network Manager neu, damit die Änderungen wirksam werden.

sudo systemctl restart NetworkManager

Sie können jetzt Ihren aktuellen DNS-Server überprüfen, indem Sie den folgenden Befehl ausführen:

systemd-resolve --status

Beispielausgabe:

Link 2 (enp5s0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 127.0.0.1

Wenn 127.0.0.1 als DNS-Server aufgeführt ist, verwendet Ihr System Stubby.

Ignorieren Sie die vom DHCP-Server bereitgestellten DNS-Einstellungen

Wenn Sie Ubuntu Server Edition verwenden , können Sie systemd konfigurieren um die vom DHCP-Server bereitgestellten DNS-Einstellungen zu ignorieren, damit Ihr System nicht versehentlich den falschen DNS-Server verwendet.

Überprüfen Sie zuerst den Status Ihrer Netzwerkschnittstelle.

networkctl status enp5s0

Es zeigt Ihnen die Netzwerkdatei für diese Schnittstelle. Bearbeiten Sie diese Netzwerkdatei.

sudo nano /run/systemd/network/10-netplan-enp5s0.network

Suchen Sie den [DHCP] Abschnitt und fügen Sie die folgende Zeile hinzu.

UseDNS=false

So:

[DHCP]
RouteMetric=100
UseMTU=true
UseDNS=false

Speichern und schließen Sie die Datei. Starten Sie dann systemd-netweorkd.service neu damit die Änderung wirksam wird.

sudo systemctl restart systemd-networkd

Führen Sie den folgenden Befehl aus, um die DNS-Server für jede Netzwerkschnittstelle zu überprüfen. Wenn alles korrekt ist, sehen Sie den von Ihrem DHCP-Server bereitgestellten DNS-Server nicht.

resolvectl status

Änderungen in der Netzwerkdatei können durch eine neue Paketaktualisierung überschrieben werden. Wenn Ihr Server netplan verwendet Um die Netzwerkverbindung zu verwalten, können Sie Netplan auch so konfigurieren, dass die DHCP-DNS-Einstellungen ignoriert werden.

sudo nano /etc/netplan/50-cloud-init.yaml

Fügen Sie der Datei die folgenden zwei Zeilen hinzu.

       dhcp4-overrides:
           use-dns: no

So:

network:
    ethernets:
        eth0:
            dhcp4: true
            dhcp4-overrides:
                use-dns: no
            optional: true
            set-name: eth0
            nameservers:
               search: [ invalid ]
               addresses: 127.0.0.1
    version: 2

Speichern und schließen Sie die Datei. Wenden Sie dann die Änderungen an.

sudo netplan apply

So überprüfen Sie, ob Ihr DNS-Verkehr verschlüsselt ist

Wir können WireShark verwenden, um den DNS-Verkehr zu überwachen. Installieren Sie WireShark aus dem Ubuntu 20.04/18.04-Repository.

sudo apt install wireshark

Wenn Sie gefragt werden „Sollten Nicht-Superuser in der Lage sein, Pakete zu erfassen?“, antworten Sie mit Ja. Führen Sie nach der Installation den folgenden Befehl aus, um Ihr Benutzerkonto zur Wireshark-Gruppe hinzuzufügen, damit Sie Pakete erfassen können.

sudo adduser your-username wireshark

Melden Sie sich ab und wieder an, damit die Änderungen wirksam werden. Öffnen Sie dann WireShark über Ihr Anwendungsmenü und wählen Sie Ihre Netzwerkschnittstelle in WireShark aus. Beispielsweise lautet der Name meiner Ethernet-Schnittstelle enp5s0. Geben Sie dann port 853 ein als Fangfilter. Dadurch erfasst WireShark nur Datenverkehr auf Port 853, dem Port, der von DNS über TLS verwendet wird.

Klicken Sie auf die Schaltfläche in der oberen linken Ecke, um mit der Aufnahme zu beginnen. Führen Sie danach im Terminalfenster den folgenden Befehl aus, um den Domänennamen mit dig abzufragen Nützlichkeit. Beispielsweise kann ich den A-Eintrag meines Domainnamens abfragen.

dig A linuxbabe.com

Jetzt können Sie den erfassten DNS-Verkehr in WireShark sehen. Wie Sie sehen können, wurde meine DNS-Anfrage an 185.49.141.37 gesendet , 145.100.185.15 und 145.100.185.16 , das sind die 3 Standard-DNS-Resolver, die in der Stubby-Konfigurationsdatei definiert sind. Verbindungen wurden über TCP hergestellt und mit TLS verschlüsselt, was ich will.

Wenn DNS-Anfragen unverschlüsselt gesendet werden, würde der Computer den DNS-Server auf Port 53 kontaktieren. Sie können Pakete erneut mit port 53 erfassen als Erfassungsfilter, aber Sie sehen keine Pakete in WireShark, was bedeutet, dass Stubby Ihre DNS-Abfragen verschlüsselt.

So fügen Sie CloudFlare DNS zu Stubby hinzu

Ich habe festgestellt, dass zwischen meinem Computer und den 3 Standard-DNS-Servern eine hohe Latenz (über 200 ms) besteht, während CloudFlare-DNS-Server (1.1.1.1, 1.0.0.1) mir eine sehr geringe Latenz (unter 20 ms) bieten. CloudFlare unterstützt auch DNS über TLS. Bearbeiten Sie die Stubby-Konfigurationsdatei, um den CloudFlare-DNS-Server hinzuzufügen.

sudo nano /etc/stubby/stubby.yml

Scrollen Sie nach unten zu upstream_recursive_servers: Abschnitt und fügen Sie den folgenden Text über anderen DNS-Servern hinzu.

#CloudFlare servers
  - address_data: 1.1.1.1
    tls_auth_name: "cloudflare-dns.com"
  - address_data: 1.0.0.1
    tls_auth_name: "cloudflare-dns.com"

Suchen Sie dann die folgende Zeile:

round_robin_upstreams: 1

Ändern Sie 1 auf 0 . Dadurch verwendet Stubby immer den CloudFlare-DNS-Server. Wenn CloudFlare nicht verfügbar ist, verwendet Stubby andere DNS-Server. Speichern Sie die Datei und starten Sie Stubby neu, damit die Änderungen wirksam werden.

sudo systemctl restart stubby

DNS über HTTPS-Unterstützung

Stubby wird DNS über HTTPS in Version 0.3 unterstützen. Ubuntu 20.10 wird mit Version 0.2.6 ausgeliefert. Führen Sie

aus, um die Stubby-Version zu überprüfen
stubby -V

Ubuntu
  1. So installieren Sie Kodi Media Center 19.0 in Ubuntu 20.04/18.04

  2. Wein 6.15 veröffentlicht! So installieren Sie es in Ubuntu 20.04/21.04/18.04

  3. 12 einfache Tools zum Schutz Ihrer Privatsphäre

  4. Zurücksetzen des MySQL/MariaDB-Root-Passworts in Ubuntu 16.04/18.04

  5. So installieren Sie Flatpak unter Ubuntu 20.04/18.04

So installieren Sie Lightzone Photo Editor unter Ubuntu 20.04/18.04

So installieren Sie den GNOME-Desktop auf einem Ubuntu 20.04/18.04-Linux-Server

So installieren Sie die Cinnamon Desktop-Umgebung auf Ubuntu 20.04/18.04 LTS

So installieren Sie ifconfig in Ubuntu 20.04/18.04 oder älteren Versionen

So installieren Sie Plex Media Server unter Ubuntu 20.04/18.04

So installieren Sie Jenkins unter Ubuntu 20.04/18.04