Su Turbolab abbiamo già visto cosa sono i DNS, come possono essere utilizzati per tracciarci, come cambiarli (anche su Linux) per aggirare la censura e navigare più velocemente o per bloccare la pubblicità. Vediamo adesso come possiamo rendere le richieste DNS più sicure e non intercettabili.

Guida DNSCrypt: richieste DNS criptate anti-censura

Un limite del sistema DNS è quello di effettuare le richieste di "traduzione" del nome all'IP in chiaro. Questo le rende facilmente intercettabili (dal router o dall'ISP ma anche da qualche malintenzionato) e modificabili in modo da rispondere con un IP diverso da quello effettivamente appartenente ad un sito (in gergo si parla di DNS Spoofing, qui un test per verificare la vulnerabilità dei vostri DNS). Dato che questa vulnerabilità è ormai ben conosciuta si è pensato di porvi rimedio con una serie di specifiche, chiamate DNSSEC (Domain Name System Security Extensions) che consentono di validare la risposta del DNS; purtroppo questo sistema non è ancora molto diffuso (qui un test specifico per vedere se il vostro DNS supporta DNSSEC). Il DNSSEC, consente sì di validare la risposta del DNS ma non la richiesta, che viene comunque fatta in chiaro, e quindi sempre leggibile e intercettabile, per esempio, dal nostro ISP per censurare alcuni siti (bloccando completamente la risposta). Per ovviare anche a questo problema c'è solo una soluzione: criptare le richieste DNS ed è proprio quello che cosa fa DNSCrypt!

Questo si presenta come un programma (ci tengo a precisare, a sorgente aperto e disponibile per quasi ogni sistema operativo, sia esso Desktop, mobile o firmware di router!) e agisce come un proxy per le sole chiamate DNS, contattando un server abilitato a ricevere le richieste criptate (ce ne sono molti tra cui il famoso OpenDNS, qui la lista completa). Da notare che DNSCrypt non esclude DNSSEC ma anzi lo implementa, aumentando notevolmente la sicurezza di questo sistema!

Guida DNSCrypt: richieste DNS criptate anti-censura

Una funzione "collaterale" di DNSCrypt è la capacità di filtraggio attraverso una blacklist che può contenere, in distinti file di configurazione, una lista di IP (sia IPv4 che IPv6) o domini, questi ultimi identificabili anche solo da un pattern comune, senza quindi dover esplicare ogni singolo sotto dominio (come necessario per esempio con l'hosts file). È anche possibile inserire alcuni domini che non vogliamo far tradurre da DNSCrypt, funzione molto utile in caso di rete locale e tenere traccia di tutte le chiamate DNS o solo di quelle bloccate.

Vediamo ora come avvalerci di DNSCrypt nella maniera più semplice sui principali sistemi operativi.

WINDOWS

Guida DNSCrypt: richieste DNS criptate anti-censura - simplednscrypt_256

DNSCrypt si presenta come un'utility da riga di comando. È possibile scaricare l'eseguibile e, avviandolo da prompt dei comandi con le opportune opzioni, può essere installato come servizio di sistema. Ma il sistema più semplice per utilizzare DNSCrypt su Windows è quello di utilizzare un programma che, oltre ad avere il servizio integrato, comprenda anche una comoda interfaccia, permettendo così di gestire la configurazione nel modo più semplice possibile. Per questo consiglio Simple DNSCrypt davvero un semplice programma per gestire DNSCrypt!

Una volta scaricato il file di installazione e installato il programma tramite la solita procedura possiamo avviarlo.

Guida DNSCrypt: richieste DNS criptate anti-censura

Nella prima tab (Impostazioni standard) ci sono già tutte le principali opzioni disponibili: si vedono le interfacce di rete disponibile sulla macchina (e che dovremo selezionare!), poco sotto abbiamo la possibilità di scegliere due risolutori DNS e ci verrà subito mostrato se supportano DNSSEC e se rispettano la nostra privacy non registrando le richieste inoltrate e, in fondo, possiamo attivare i due servizi DNS scelti. Molto interessante il pulsante con l'icona di una sveglia/cronometro: cliccandolo, poco dopo avremo disponibili i tempi di latenza di ogni server presente nelle liste in modo da poter scegliere quello più veloce!

Guida DNSCrypt: richieste DNS criptate anti-censura

Nella tab Impostazioni avanzate abbiamo la possibilità di aggiornare la lista dei server DNS, di impostare Simple DNSCrypt come risolutore DNS per l'intera rete interna, di cambiare protocollo (i DNS solitamente utilizzano l'UDP e tale scelta è la migliore per via della velocità di trasmissione; questa impostazione non andrebbe toccata se non sapete cosa state facendo!). Infine, oltre alla possibilità di rimuovere i servizi installati, possiamo attivare alcuni plugin e molto utili sono quello per la disattivazione dell'IPv6 se la nostra rete non lo sfrutta e quello per la registrazione delle richieste (che ci consente anche di vedere nella tab Live Log, le richieste fatte in tempo reale dalle applicazioni che stiamo utilizzando).

Guida DNSCrypt: richieste DNS criptate anti-censura

Nella tab Blocco e lista nera, due campi per bloccare i domini e gli IP. Per quanto riguarda i domini, è possibile scaricare una lista precompilata tra le tante disponibili su internet.

MAC OSX

Anche per Mac abbiamo a disposizione un programma semplice, con una curata interfaccia, per la gestione di DNSCrypt e dal nome piuttosto scontato: DNSCrypt-OSXClient.

Scarichiamo il file dmg, montiamolo e facciamo doppio click sul file .pkg per iniziare l'installazione. Seguiamo la semplice procedura, ad un certo punto un avviso ci informerà della necessità di riavviare per completare l'installazione.

Guida DNSCrypt: richieste DNS criptate anti-censura

Una volta riavviato, possiamo trovare il programma in Preferenze di sistema; apriamolo e passiamo alla configurazione; nella prima tab General possiamo scegliere il server che desideriamo dal menù a tendina sulla destra che contiene tutte le possibile opzioni e poi possiamo attivare DNSCrypt mettendo la spunta su Enable DNSCrypt. Se la nostra connessione non utilizza gli IPv6, possiamo rendere più veloce la consultazione dei DNS selezionando anche Disable IPv6 to reduce IPv4 latency.

Guida DNSCrypt: richieste DNS criptate anti-censura

Nella tab Advanced invece abbiamo la possibilità di attivare la funzione di Log delle richieste DNS (tutte oppure solo quelle bloccate), di indicare un server DNS da utilizzare quando DNSCrypt non è attivo e di configurare le blacklist (inserendo nella colonna di sinistra gli IP e nella colonna centrale i domini da bloccare) e i domini che DNSCrypt non deve tradurre (colonna di destra).

Guida DNSCrypt: richieste DNS criptate anti-censura

LINUX

Ogni distro linux ormai ha DNSCrypt nei propri repository, già configurato al meglio per cui dobbiamo solo installarlo con i consueti modi. In questo caso non si hanno interfacce grafiche disponibili per la configurazione rapida ma dobbiamo andare ad editare a mano il file /etc/dnscrypt-proxy.conf. Detto file è molto ben commentato ed è il caso di leggerlo attentamente perché qui potremo cambiare (o inserire, se mancasse) il server che vogliamo contattare specificando ResolverName nomedelserver (il nome del server possiamo trovarlo nel file /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv, nella colonna NAME). Possiamo specificare più server aggiungendo più righe in modo che se il primo server dovesse essere irraggiungibile verrà contattato il secondo.

Per le blacklist sarà sufficiente aggiungere gli IP da bloccare nel file /etc/dnscrypt-blacklist-ips.txt o i domini da bloccare nel file /etc/dnscrypt-blacklist-domains.txt. A questo punto non ci rimane che avviarlo e abilitarlo all'avvio automatico:

  • sudo systemctl start dnscrypt-proxy
  • sudo systemctl enable dnscrypt-proxy

Ancora non abbiamo finito: dobbiamo specificare l'indirizzo del risolutore che sarà il nostro host locale (127.0.0.1, dove appunto è in ascolto il demone appena avviato di dnscrypt-proxy). Per fare questo dobbiamo editare il file /etc/resolv.conf specificando la seguente riga:

  • nameserver 127.0.0.1

Se abbiamo una configurazione di rete dinamica, gestita da DHCP, il demone di questo servizio potrebbe sovrascrivere questo file. Per ovviare a questo, nella maggior parte dei casi, è sufficiente aggiungere la seguente riga al file /etc/dhcpd.conf:

  • nohook resolv.conf

Se invece il nostro sistema utilizza systemd-resolved dovremo editare il file /etc/systemd/resolved.conf specificando l'indirizzo 127.0.0.1 alla voce DNS= e rimuovendo l'eventuale simbolo di commento (il cancelletto #) davanti a questa voce.

ANDROID e iOS

È possibile installare DNSCrypt proxy anche su dispositivi Android o iOS, tuttavia la procedura "ufficiale" richiede rispettivamente root e jailbrake motivo per cui non verrà riportata qui (chi è interessato può trovarla sul sito ufficiale di DNSCrypt). In caso di problemi potete utilizzare i commenti qui sotto per chiedere aiuto al forum!

COME VERIFICARE CHE TUTTO FUNZIONI CORRETTAMENTE?

Per verificare quale DNS è in funzione possiamo visitare uno dei tanti siti che consentono di ricavare questa informazione (come questo, per esempio). Se però vogliamo essere certi che le chiamate DNS sono criptate possiamo farlo facilmente solo se abbiamo scelto i dns di OpenDNS. Con questi, infatti, la verifica si fa facilmente tramite terminale (anche su Windows 10 con l'installazione del WLS), digitando il seguente comando:

  • drill txt debug.opendns.com

tale comando dovrebbe riportare un risultato come quello dell'immagine sotto, dove si può leggere chiaramente dnscrypt enabled.

Guida DNSCrypt: richieste DNS criptate anti-censura

Se utilizziamo un diverso server DNS, la verifica è molto più complessa; per avere la certezza che le chiamate DNS siano criptate, occorre monitorare il traffico di rete con programmi come Wireshark.