GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Proteggi la tua privacy DNS su Ubuntu 20.04/18.04 (DNS su TLS)

Questo tutorial ti mostrerà come proteggere la tua privacy DNS sul desktop Ubuntu 20.04/18.04 con DNS su TLS . Useremo uno strumento chiamato stubby per raggiungerlo. Ma prima lascia che ti spieghi perché il DNS non è sicuro.

Vulnerabilità DNS

Il DNS non è sicuro perché per impostazione predefinita le query DNS non sono crittografate, il che può essere sfruttato da entità intermedie. DNS cache poison è uno degli abusi DNS ampiamente utilizzato dal Great Firewall of China (GFW) per censurare Internet cinese. GFW controlla ogni query DNS inviata a un server DNS al di fuori della Cina. Poiché il protocollo DNS in testo normale si basa su UDP, che è un protocollo senza connessione, GFW può falsificare sia l'IP del client che l'IP del server. Quando GFW trova un nome di dominio nella sua lista di blocco, cambia la risposta DNS. Ad esempio, se un utente Internet cinese vuole visitare google.com, il Great firewall of China restituisce al risolutore DNS un indirizzo IP situato in Cina invece del vero indirizzo IP di Google. Quindi il risolutore DNS restituisce l'indirizzo IP falso al computer dell'utente.

Cos'è il DNS su TLS? Come protegge la tua privacy?

DNS su TLS significa che le query DNS vengono inviate tramite una connessione sicura crittografata con TLS, la stessa tecnologia che crittografa il traffico HTTP, in modo che nessuna terza parte possa vedere le tue query DNS. Insieme a HTTPS e SNI (Server Name Indication) crittografato, la cronologia di navigazione è completamente protetta dallo spionaggio dell'ISP.

Stubby è un risolutore stub DNS open source sviluppato dal team getdns. Utilizza la libreria getdns. Un risolutore stub è un piccolo client DNS sul computer dell'utente finale che riceve richieste DNS da applicazioni come Firefox e inoltra le richieste a un risolutore ricorsivo come 1.1.1.1 o 8.8.8.8. Stubby è speciale in quanto supporta DNS su TLS. Per impostazione predefinita, invierà solo richieste DNS crittografate. C'è un altro risolutore di stub open source chiamato cloudflared che supporta DNS su HTTPS ma stubby è già nel repository Ubuntu 20.04/18.04 ed è molto facile da usare.

Come installare e utilizzare Stubby su Ubuntu 20.04/18.04 Desktop

Stubby è nel repository Ubuntu 20.04/18.04. Apri una finestra di terminale ed esegui il seguente comando per installarlo.

sudo apt install stubby

Questo installerà stubby e getdns biblioteca. Una volta installato, stubby viene eseguito in background. Ne controlli lo stato con:

systemctl status stubby

Stubby è in ascolto sulla porta TCP e UDP 53 di localhost (127.0.0.1), come si può vedere eseguendo questo comando:

sudo netstat -lnptu | grep stubby

Il risolutore stub predefinito fornito da systemd-resolved è in ascolto sulla porta TCP e UDP 53 di 127.0.0.53.

sudo netstat -lnptu | grep systemd-resolv

Nota:se dnsmasq è in ascolto sulla porta TCP 53 di 127.0.0.1, Stubby ascolterà solo sulla porta UDP 53 di 127.0.0.1.

Il file di configurazione principale è /etc/stubby/stubby.yml . Normalmente non è necessario apportare modifiche a meno che non si desideri utilizzare un altro o il proprio risolutore ricorsivo. Lascia che ti spieghi alcune configurazioni predefinite. Puoi aprire il file con:

sudo nano /etc/stubby/stubby.yml

La riga seguente fa eseguire stubby come risolutore stub invece che come risolutore ricorsivo completo, motivo per cui è chiamato stubby.

resolution_type: GETDNS_RESOLUTION_STUB

La configurazione seguente rende stubby invia query DNS crittografate con TLS. Non invierà query in testo normale.

dns_transport_list:
- GETDNS_TRANSPORT_TLS

Questa riga seguente richiede un certificato TLS valido sul risolutore ricorsivo remoto.

tls_authentication: GETDNS_AUTHENTICATION_REQUIRED

Le righe seguenti impostano gli indirizzi di ascolto per il demone stubby. Per impostazione predefinita, IPv4 e IPv6 sono entrambi abilitati.

listen_addresses:
- 127.0.0.1
- 0::1

La riga seguente crea risolutori ricorsivi di query stubby in modo round-robin. Se impostato su 0 , Stubby utilizzerà ciascun server upstream in sequenza fino a quando non sarà più disponibile, quindi passerà a utilizzare il successivo.

round_robin_upstreams: 1

Per impostazione predefinita ci sono 3 risolutori ricorsivi abilitati nel file di configurazione stubby. Sono gestiti da sviluppatori tozzi e supportano DNS su TLS. Puoi vedere l'elenco completo dei server consigliati sul sito Web DNS Privacy.

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

Ci sono altri server DNS nei Additional Servers sezione disabilitata per impostazione predefinita.

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

Ci sono anche server DNS in ascolto sulla porta 443. Se la porta 853 è bloccata nella tua rete, puoi rimuovere il commento per utilizzare questi server.

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

Ora puoi uscire dall'editor di testo nano premendo Ctrl+X .

Passaggio a Stubby

Modifica del /etc/resolve.conf file per cambiare name server non è più raccomandato. Segui le istruzioni di seguito per rendere systemd-resolved invia query DNS a stubby.

Desktop GNOME

Fare clic sull'icona Network Manager nell'angolo in alto a destra del desktop. Quindi seleziona le impostazioni cablate. (Se utilizzi il Wi-Fi, seleziona Impostazioni Wi-Fi.)

Fai clic sul pulsante a forma di ingranaggio.

Seleziona IPv4 scheda, quindi nelle impostazioni DNS, cambia Automatic su OFF, che impedirà al tuo sistema Ubuntu di ottenere l'indirizzo del server DNS dal tuo router. Inserisci 127.0.0.1 nel campo DNS. Fai clic su Apply pulsante per salvare le modifiche.

Quindi riavvia NetworkManager per rendere effettive le modifiche.

sudo systemctl restart NetworkManager

Una volta riconnesso, puoi vedere che il tuo sistema Ubuntu ora sta usando 127.0.0.1 come server DNS in Details scheda.

Unity Desktop

Letture consigliate:come installare l'ambiente desktop Unity su Ubuntu 20.04/18.04.

Fai clic sull'icona Network Manager nell'angolo in alto a destra del desktop, quindi fai clic su edit connections .

Seleziona il nome della tua connessione e fai clic sull'icona a forma di ingranaggio.

Seleziona la scheda Impostazioni IPv4, cambia metodo da Automatic(DHCP) a Automatic(DHCP) addresses only , che impedirà al tuo sistema Ubuntu di ottenere l'indirizzo del server DNS dal tuo router. Specificare quindi un server DNS (127.0.0.1). Stubby ascolta su 127.0.0.1.

Salva le modifiche. Quindi riavvia NetworkManager per rendere effettive le modifiche.

sudo systemctl restart NetworkManager

Dopo esserti riconnesso, fai nuovamente clic sull'icona Network Manager e seleziona connection information . Puoi vedere che il tuo sistema Ubuntu ora utilizza 127.0.0.1 come server DNS.

Cambia il server DNS dalla riga di comando

Puoi utilizzare il metodo seguente per modificare il server DNS purché il tuo ambiente desktop utilizzi NetworkManager.

Apri una finestra di terminale e vai alla directory del profilo connessioni di Network Manager.

cd /etc/NetworkManager/system-connections/

Quindi elenca i nomi di connessione disponibili sul tuo sistema.

ls

Come puoi vedere, ho diverse connessioni sul mio sistema, una delle quali è cablata. Alcuni sono connessioni wireless e uno è la connessione VPN. Poiché il mio computer desktop è collegato al mio router tramite un cavo Ethernet, devo modificare il profilo di connessione cablata con nano editor di testo della riga di comando.

sudo nano 'Wired connection 1'

Se il tuo computer è connesso tramite Wi-Fi, devi modificare il profilo di connessione wireless. In questo file, trova il [ipv4] configurazioni. Per impostazione predefinita, dovrebbe apparire così:

[ipv4]
dns-search=
method=auto

Per fare in modo che il tuo sistema utilizzi Stubby, modifica le configurazioni come segue.

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

Per salvare il file nell'editor di testo Nano, premi Ctrl+O , quindi premere Invio per confermare. Premi Ctrl+X uscire. Quindi riavvia Network Manager per rendere effettive le modifiche.

sudo systemctl restart NetworkManager

Ora puoi controllare il tuo attuale server DNS eseguendo il seguente comando:

systemd-resolve --status

Esempio di output:

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

Se 127.0.0.1 è elencato come server DNS, il tuo sistema sta usando Stubby.

Ignora le impostazioni DNS fornite dal server DHCP

Se utilizzi Edizione Ubuntu server , puoi configurare systemd per ignorare le impostazioni DNS fornite dal server DHCP, in modo che il tuo sistema non utilizzi accidentalmente il server DNS sbagliato.

Innanzitutto, controlla lo stato della tua interfaccia di rete.

networkctl status enp5s0

Ti mostrerà il file di rete per questa interfaccia. Modifica questo file di rete.

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

Trova il [DHCP] sezione e aggiungi la riga seguente.

UseDNS=false

In questo modo:

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

Salva e chiudi il file. Quindi riavvia systemd-netweorkd.service affinché la modifica abbia effetto.

sudo systemctl restart systemd-networkd

Eseguire il comando seguente per controllare i server DNS per ciascuna interfaccia di rete. Se tutto è corretto, non vedrai il server DNS fornito dal tuo server DHCP.

resolvectl status

Le modifiche al file di rete possono essere sovrascritte da un nuovo aggiornamento del pacchetto. Se il tuo server utilizza netplan per gestire la connessione di rete, puoi anche configurare netplan in modo che ignori le impostazioni DNS DHCP.

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

Aggiungi le seguenti due righe al file.

       dhcp4-overrides:
           use-dns: no

In questo modo:

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

Salva e chiudi il file. Quindi applica le modifiche.

sudo netplan apply

Come verificare se il tuo traffico DNS è crittografato

Possiamo usare WireShark per monitorare il traffico DNS. Installa WireShark dal repository Ubuntu 20.04/18.04.

sudo apt install wireshark

Se ti viene chiesto "I non superutenti dovrebbero essere in grado di acquisire pacchetti?", rispondi Sì. Una volta installato, esegui il comando seguente per aggiungere il tuo account utente al gruppo wireshark in modo da poter acquisire i pacchetti.

sudo adduser your-username wireshark

Esci e riconnettiti per rendere effettive le modifiche. Quindi apri WireShark dal menu dell'applicazione, seleziona la tua interfaccia di rete in WireShark. Ad esempio, il nome della mia interfaccia Ethernet è enp5s0. Quindi inserisci port 853 come filtro di acquisizione. Ciò consentirà a WireShark di acquisire solo il traffico sulla porta 853, che è la porta utilizzata da DNS su TLS.

Fare clic sul pulsante nell'angolo in alto a sinistra per avviare l'acquisizione. Dopodiché, nella finestra del terminale, esegui il seguente comando per interrogare il nome di dominio usando il dig utilità. Ad esempio, posso interrogare il record A del mio nome di dominio.

dig A linuxbabe.com

Ora puoi vedere il traffico DNS catturato in WireShark. Come puoi vedere, la mia query DNS è stata inviata a 185.49.141.37 , 145.100.185.15 e 145.100.185.16 , che sono i 3 resolver DNS predefiniti definiti nel file di configurazione stubby. Le connessioni sono state effettuate su TCP e crittografate con TLS, che è quello che voglio.

Se le query DNS vengono inviate senza crittografia, il computer contatterà il server DNS sulla porta 53. Puoi acquisire nuovamente i pacchetti con port 53 come filtro di acquisizione, ma non vedrai alcun pacchetto in WireShark, il che significa che stubby sta crittografando le tue query DNS.

Come aggiungere CloudFlare DNS a Stubby

Ho scoperto che c'è un'elevata latenza (oltre 200 ms) tra il mio computer e i 3 server DNS predefiniti, mentre i server DNS CloudFlare (1.1.1.1, 1.0.0.1) mi danno una latenza molto bassa (inferiore a 20 ms). CloudFlare supporta anche DNS su TLS. Per aggiungere il server DNS CloudFlare, modifica il file di configurazione stubby.

sudo nano /etc/stubby/stubby.yml

Scorri verso il basso fino a upstream_recursive_servers: sezione e aggiungi il testo seguente sopra altri server 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"

Quindi trova la seguente riga:

round_robin_upstreams: 1

Modifica 1 a 0 . Questo farà sì che Stubby utilizzi sempre il server DNS CloudFlare. Se CloudFlare non è disponibile, stubby utilizzerà altri server DNS. Salva il file e riavvia stubby per rendere effettive le modifiche.

sudo systemctl restart stubby

Supporto DNS su HTTPS

Stubby supporterà DNS su HTTPS nella versione 0.3. Ubuntu 20.10 viene fornito con la versione 0.2.6. Per controllare la versione Stubby, esegui

stubby -V

Ubuntu
  1. Come installare Kodi Media Center 19.0 in Ubuntu 20.04/18.04

  2. Vino 6.15 Rilasciato! Come installarlo in Ubuntu 20.04/21.04/18.04

  3. 12 semplici strumenti per proteggere la tua privacy

  4. Reimpostazione della password di root MySQL/MariaDB in Ubuntu 16.04/18.04

  5. Come installare Flatpak su Ubuntu 20.04/18.04

Come installare l'editor di foto di Lightzone su Ubuntu 20.04/18.04

Come installare il desktop GNOME sul server Linux Ubuntu 20.04/18.04

Come installare l'ambiente Cinnamon Desktop su Ubuntu 20.04/18.04 LTS

Come installare ifconfig in Ubuntu 20.04/18.04 o versioni precedenti

Come installare Plex Media Server su Ubuntu 20.04/18.04

Come installare Jenkins su Ubuntu 20.04/18.04