GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Protégez votre confidentialité DNS sur Ubuntu 20.04/18.04 (DNS sur TLS)

Ce tutoriel vous montrera comment protéger votre confidentialité DNS sur le bureau Ubuntu 20.04/18.04 avec DNS sur TLS . Nous allons utiliser un outil appelé stubby pour y parvenir. Mais d'abord, laissez-moi vous expliquer pourquoi le DNS n'est pas sécurisé.

Vulnérabilité DNS

Le DNS n'est pas sécurisé car, par défaut, les requêtes DNS ne sont pas chiffrées, ce qui peut être exploité par des entités intermédiaires. Le poison du cache DNS est l'un des abus du DNS largement utilisé par le Grand pare-feu de Chine (GFW) pour censurer l'Internet chinois. GFW vérifie chaque requête DNS envoyée à un serveur DNS en dehors de la Chine. Étant donné que le protocole DNS en texte brut est basé sur UDP, qui est un protocole sans connexion, GFW peut usurper à la fois l'IP du client et l'IP du serveur. Lorsque GFW trouve un nom de domaine sur sa liste de blocage, il modifie la réponse DNS. Par exemple, si un internaute chinois souhaite visiter google.com, le Grand pare-feu de Chine renvoie au résolveur DNS une adresse IP située en Chine au lieu de la véritable adresse IP de Google. Ensuite, le résolveur DNS renvoie la fausse adresse IP à l'ordinateur de l'utilisateur.

Qu'est-ce que DNS sur TLS ? Comment protège-t-il votre vie privée ?

DNS sur TLS signifie que les requêtes DNS sont envoyées via une connexion sécurisée cryptée avec TLS, la même technologie qui crypte le trafic HTTP, afin qu'aucun tiers ne puisse voir vos requêtes DNS. Avec HTTPS et SNI crypté (indication du nom du serveur), votre historique de navigation est entièrement protégé contre l'espionnage des FAI.

Stubby est un résolveur de stub DNS open source développé par l'équipe getdns. Il utilise la bibliothèque getdns. Un résolveur de stub est un petit client DNS sur l'ordinateur de l'utilisateur final qui reçoit les requêtes DNS d'applications telles que Firefox et transmet les requêtes à un résolveur récursif comme 1.1.1.1 ou 8.8.8.8. Stubby est spécial en ce sens qu'il prend en charge DNS sur TLS. Par défaut, il n'enverra que des requêtes DNS cryptées. Il existe un autre résolveur de stub open-source appelé cloudflared qui prend en charge DNS sur HTTPS mais stubby est déjà dans le référentiel Ubuntu 20.04/18.04 et est très facile à utiliser.

Comment installer et utiliser Stubby sur le bureau Ubuntu 20.04/18.04

Stubby est dans le référentiel Ubuntu 20.04/18.04. Ouvrez une fenêtre de terminal et exécutez la commande suivante pour l'installer.

sudo apt install stubby

Cela installera stubby et le getdns bibliothèque. Une fois installé, stubby s'exécute en arrière-plan. Vous vérifiez son statut avec :

systemctl status stubby

Stubby écoute sur les ports TCP et UDP 53 de localhost (127.0.0.1), comme on peut le voir en exécutant cette commande :

sudo netstat -lnptu | grep stubby

Le résolveur de stub par défaut fourni par systemd-resolved écoute sur le port TCP et UDP 53 de 127.0.0.53.

sudo netstat -lnptu | grep systemd-resolv

Remarque :Si dnsmasq écoute sur le port TCP 53 de 127.0.0.1, Stubby n'écoutera que sur le port UDP 53 de 127.0.0.1.

Le fichier de configuration principal est /etc/stubby/stubby.yml . Normalement, il n'est pas nécessaire d'y apporter des modifications, sauf si vous souhaitez en utiliser un autre ou votre propre résolveur récursif. Laissez-moi vous expliquer quelques configurations par défaut. Vous pouvez ouvrir le fichier avec :

sudo nano /etc/stubby/stubby.yml

La ligne suivante fait fonctionner stubby comme un résolveur de stub au lieu d'un résolveur récursif complet, c'est pourquoi il est nommé stubby.

resolution_type: GETDNS_RESOLUTION_STUB

La configuration suivante permet à stubby d'envoyer des requêtes DNS chiffrées avec TLS. Il n'enverra pas de requêtes en texte brut.

dns_transport_list:
- GETDNS_TRANSPORT_TLS

La ligne suivante nécessite un certificat TLS valide sur le résolveur récursif distant.

tls_authentication: GETDNS_AUTHENTICATION_REQUIRED

Les lignes suivantes définissent les adresses d'écoute pour le démon stubby. Par défaut, IPv4 et IPv6 sont tous deux activés.

listen_addresses:
- 127.0.0.1
- 0::1

La ligne suivante crée des résolveurs récursifs de requêtes tronquées de manière circulaire. Si défini sur 0 , Stubby utilisera chaque serveur en amont de manière séquentielle jusqu'à ce qu'il devienne indisponible, puis passera à l'utilisation du suivant.

round_robin_upstreams: 1

Par défaut, 3 résolveurs récursifs sont activés dans le fichier de configuration stubby. Ils sont gérés par des développeurs tronqués et prennent en charge DNS sur TLS. Vous pouvez consulter la liste complète des serveurs recommandés sur le site Web DNS Privacy.

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

Il existe d'autres serveurs DNS dans les Additional Servers section qui sont désactivées par défaut.

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
......

Il existe également des serveurs DNS qui écoutent sur le port 443. Si le port 853 est bloqué sur votre réseau, vous pouvez les décommenter pour utiliser ces serveurs.

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

Vous pouvez maintenant quitter l'éditeur de texte nano en appuyant sur Ctrl+X .

Passer à Stubby

Modification du /etc/resolve.conf fichier pour changer de serveur de noms n'est plus recommandé. Suivez les instructions ci-dessous pour rendre systemd-resolved envoyer des requêtes DNS à stubby.

Bureau GNOME

Cliquez sur l'icône Network Manager dans le coin supérieur droit de votre bureau. Sélectionnez ensuite les paramètres filaires. (Si vous utilisez le Wi-Fi, sélectionnez Paramètres Wi-Fi.)

Cliquez sur le bouton d'engrenage.

Sélectionnez IPv4 puis dans les paramètres DNS, basculez sur Automatic sur OFF, ce qui empêchera votre système Ubuntu d'obtenir l'adresse du serveur DNS de votre routeur. Saisissez 127.0.0.1 dans le champ DNS. Cliquez sur Apply bouton pour enregistrer vos modifications.

Redémarrez ensuite NetworkManager pour que les modifications prennent effet.

sudo systemctl restart NetworkManager

Une fois que vous êtes reconnecté, vous pouvez voir que votre système Ubuntu utilise maintenant 127.0.0.1 comme serveur DNS dans les Details onglet.

Bureau Unity

Lecture recommandée :comment installer l'environnement de bureau Unity sur Ubuntu 20.04/18.04.

Cliquez sur l'icône Network Manager dans le coin supérieur droit de votre bureau, puis cliquez sur edit connections .

Sélectionnez votre nom de connexion et cliquez sur l'icône d'engrenage.

Sélectionnez l'onglet Paramètres IPv4, changez la méthode de Automatic(DHCP) vers Automatic(DHCP) addresses only , ce qui empêchera votre système Ubuntu d'obtenir l'adresse du serveur DNS de votre routeur. Spécifiez ensuite un serveur DNS (127.0.0.1). Stubby écoute sur 127.0.0.1.

Enregistrez vos modifications. Redémarrez ensuite NetworkManager pour que les modifications prennent effet.

sudo systemctl restart NetworkManager

Une fois reconnecté, cliquez à nouveau sur l'icône Network Manager et sélectionnez connection information . Vous pouvez voir que votre système Ubuntu utilise maintenant 127.0.0.1 comme serveur DNS.

Modifier le serveur DNS à partir de la ligne de commande

Vous pouvez utiliser la méthode ci-dessous pour changer de serveur DNS tant que votre environnement de bureau utilise NetworkManager.

Ouvrez une fenêtre de terminal et accédez au répertoire des profils de connexion de Network Manager.

cd /etc/NetworkManager/system-connections/

Répertoriez ensuite les noms de connexion disponibles sur votre système.

ls

Comme vous pouvez le voir, j'ai plusieurs connexions sur mon système, dont une est une connexion filaire. Certaines sont des connexions sans fil et une est une connexion VPN. Parce que mon ordinateur de bureau est connecté à mon routeur via un câble Ethernet, je dois donc modifier le profil de connexion filaire avec le nano éditeur de texte en ligne de commande.

sudo nano 'Wired connection 1'

Si votre ordinateur est connecté via Wi-Fi, vous devez modifier le profil de connexion sans fil. Dans ce fichier, recherchez le [ipv4] configurations. Par défaut, cela devrait ressembler à ceci :

[ipv4]
dns-search=
method=auto

Pour que votre système utilise Stubby, modifiez les configurations comme suit.

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

Pour enregistrer le fichier dans l'éditeur de texte Nano, appuyez sur Ctrl+O , puis appuyez sur Entrée pour confirmer. Appuyez sur Ctrl+X pour quitter. Redémarrez ensuite Network Manager pour que les modifications prennent effet.

sudo systemctl restart NetworkManager

Vous pouvez maintenant vérifier votre serveur DNS actuel en exécutant la commande suivante :

systemd-resolve --status

Exemple de sortie :

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

Si 127.0.0.1 est répertorié comme serveur DNS, votre système utilise Stubby.

Ignorer les paramètres DNS fournis par le serveur DHCP

Si vous utilisez l'édition serveur Ubuntu , vous pouvez configurer systemd pour ignorer les paramètres DNS fournis par le serveur DHCP, afin que votre système n'utilise pas accidentellement le mauvais serveur DNS.

Tout d'abord, vérifiez l'état de votre interface réseau.

networkctl status enp5s0

Il vous montrera le fichier réseau pour cette interface. Modifiez ce fichier réseau.

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

Trouvez le [DHCP] section et ajoutez la ligne suivante.

UseDNS=false

Comme ceci :

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

Enregistrez et fermez le fichier. Redémarrez ensuite systemd-netweorkd.service pour que le changement prenne effet.

sudo systemctl restart systemd-networkd

Exécutez la commande suivante pour vérifier les serveurs DNS pour chaque interface réseau. Si tout est correct, vous ne verrez pas le serveur DNS fourni par votre serveur DHCP.

resolvectl status

Les modifications apportées au fichier réseau peuvent être remplacées par une nouvelle mise à jour du package. Si votre serveur utilise netplan pour gérer la connexion réseau, vous pouvez également configurer netplan pour ignorer les paramètres DNS DHCP.

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

Ajoutez les deux lignes suivantes au fichier.

       dhcp4-overrides:
           use-dns: no

Comme ceci :

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

Enregistrez et fermez le fichier. Appliquez ensuite les modifications.

sudo netplan apply

Comment vérifier si votre trafic DNS est chiffré

Nous pouvons utiliser WireShark pour surveiller le trafic DNS. Installez WireShark à partir du référentiel Ubuntu 20.04/18.04.

sudo apt install wireshark

Si on vous demande « Les non-superutilisateurs devraient-ils pouvoir capturer des paquets ? », répondez Oui. Une fois installé, exécutez la commande suivante pour ajouter votre compte d'utilisateur au groupe wireshark afin de pouvoir capturer des paquets.

sudo adduser your-username wireshark

Déconnectez-vous et reconnectez-vous pour que les modifications prennent effet. Ouvrez ensuite WireShark à partir du menu de votre application, sélectionnez votre interface réseau dans WireShark. Par exemple, le nom de mon interface Ethernet est enp5s0. Saisissez ensuite port 853 comme filtre de capture. Ainsi, WireShark ne capturera que le trafic sur le port 853, qui est le port utilisé par DNS sur TLS.

Cliquez sur le bouton dans le coin supérieur gauche pour commencer la capture. Après cela, dans la fenêtre du terminal, exécutez la commande suivante pour interroger le nom de domaine en utilisant le dig utilitaire. Par exemple, je peux interroger l'enregistrement A de mon nom de domaine.

dig A linuxbabe.com

Vous pouvez maintenant voir le trafic DNS capturé dans WireShark. Comme vous pouvez le voir, ma requête DNS a été envoyée au 185.49.141.37 , 145.100.185.15 et 145.100.185.16 , qui sont les 3 résolveurs DNS par défaut définis dans le fichier de configuration stubby. Les connexions ont été établies via TCP et chiffrées avec TLS, ce que je veux.

Si les requêtes DNS sont envoyées sans cryptage, l'ordinateur contactera le serveur DNS sur le port 53. Vous pouvez à nouveau capturer des paquets avec le port 53 comme filtre de capture, mais vous ne verrez aucun paquet dans WireShark, ce qui signifie que stubby chiffre vos requêtes DNS.

Comment ajouter un DNS CloudFlare à Stubby

J'ai constaté qu'il y a une latence élevée (plus de 200 ms) entre mon ordinateur et les 3 serveurs DNS par défaut, alors que les serveurs DNS CloudFlare (1.1.1.1, 1.0.0.1) me donnent une latence très faible (inférieure à 20 ms). CloudFlare prend également en charge DNS sur TLS. Pour ajouter un serveur DNS CloudFlare, modifiez le fichier de configuration stubby.

sudo nano /etc/stubby/stubby.yml

Faites défiler jusqu'à upstream_recursive_servers: section et ajoutez le texte suivant au-dessus des autres serveurs DNS.

#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"

Recherchez ensuite la ligne suivante :

round_robin_upstreams: 1

Modifier 1 à 0 . Cela obligera Stubby à toujours utiliser le serveur DNS CloudFlare. Si CloudFlare n'est pas disponible, stubby utilisera d'autres serveurs DNS. Enregistrez le fichier et redémarrez stubby pour que les modifications prennent effet.

sudo systemctl restart stubby

Support DNS sur HTTPS

Stubby prendra en charge DNS sur HTTPS dans la version 0.3. Ubuntu 20.10 est livré avec la version 0.2.6. Pour vérifier la version de Stubby, exécutez

stubby -V

Ubuntu
  1. Comment installer Kodi Media Center 19.0 dans Ubuntu 20.04/18.04

  2. Vin 6.15 est sorti ! Comment l'installer dans Ubuntu 20.04/21.04/18.04

  3. 12 outils simples pour protéger votre vie privée

  4. Réinitialisation du mot de passe root MySQL/MariaDB dans Ubuntu 16.04/18.04

  5. Comment installer Flatpak sur Ubuntu 20.04/18.04

Comment installer l'éditeur Lightzone Photo sur Ubuntu 20.04/18.04

Comment installer le bureau GNOME sur le serveur Linux Ubuntu 20.04/18.04

Comment installer l'environnement Cinnamon Desktop sur Ubuntu 20.04/18.04 LTS

Comment installer ifconfig dans Ubuntu 20.04/18.04 ou des versions antérieures

Comment installer Plex Media Server sur Ubuntu 20.04/18.04

Comment installer Jenkins sur Ubuntu 20.04/18.04