DNS over HTTPS

Siamo abituati a ritenere che la risoluzione dei nomi avvenga tramite una richiesta in chiaro con protocollo UDP sulla porta 53 di uno dei server specificati nella configurazione dell’host. Per estensione, siamo abituati a credere che se si controllano in un qualche modo i server DNS impostati in un host, si può controllare il modo in cui l’host accede a determinati nomi a dominio.

DoH (DNS over HTTPS) potrebbe cambiare le regole del gioco e le nostre granitiche certezze.

DoH è documentato in RFC8484 e permette di eseguire una richiesta (query) ad un server DNS attraverso un URI trasmesso via HTTPS con metodo GET o POST; il server risponderà con l’indirizzo IP richiesto.

Ad esempio il browser esegue un GET sul server che supporta DoH con questo URI:

https://doh.server.org/dns-query?dns=xxxxxxxxxxxxxxxxxx

dove al posto della fila di x c’è la query in formato base64url.

Il server risponderà con il risultato della query identificato da un content type application/dns-message.

Questa tecnologia permette di rendere completamente anonimi gli accessi a Internet. Con il protocollo DNS normale le query viaggiano in chiaro e sono facilmente intercettabili. Con questo sistema anche le richieste ai DNS sono cifrate e il provider o chi per lui non ha traccia dei nomi a dominio di cui un utente ha chiesto la risoluzione.

I vecchi trucchi di invalidazione di un nome a dominio potrebbero non funzionare più. Fin’ora se un’organizzazione in cui tutti gli host erano forzati ad usare un server DNS voleva impedire facilmente l’accesso a PIPPO.COM creava una zona autoritaria di PIPPO.COM nel proprio server DNS sovrascrivendo di fatto la vera zona di PIPPO.COM e bloccando l’accesso al sito.

Di contro, gli autori dei malware potrebbero utilizzare questo protocollo per evadere i blocchi come quello descritto sopra.

Per abilitare DoH in Firefox è necessaria almeno la versione 62 del programma, quindi scrivere nella barra dell’URL about:config per accedere ai parametri di configurazione.

Nel campo di ricerca scrivere network.trr per visualizzare solamente le impostazioni DoH (trr sta per Trusted Recursive Resolver).

Il campo network.trr.mode indica lo stato di DoH e può essere 0 (disabilitato di default), 1 (Firefox decide se usare DoH o DNS a seconda delle performance), 2 (usa DoH come metodo principale, ma passa a DNS se questo non funziona), 3 (usa solamente DoH) o 5 (DoH disabilitato in maniera esplicita). Per usare DoH assegnare a questo campo 2 o 3.

Verificare che network.trr.uri sia impostato a https://mozilla.cloudflare-dns.com/dns-query e chiudere la pagina.

Per verificare che Firefox stia effettivamente utilizzando DoH visitare la pagina https://www.cloudflare.com/ssl/encrypted-sni/ in cui Secure DNS deve risultare attivo. In alternativa si può visitare https://1.1.1.1/help e verificare che DoH sia attivo.

A fine aprile 2019 Chrome non supporta ancora DoH.

Al momento solamente Cloudflare e Google offrono un servizio pubblico di risoluzione nomi attraverso HTTPS.

Autore: Luigi Rosa

Consulente IT, sviluppatore, SysAdmin, cazzaro, e, ovviamente, geek.

4 pensieri riguardo “DNS over HTTPS”

  1. Due domande:
    – non sarebbe stato meglio usare DNS over SSL?
    – come vengono gestiti i root servers? Ovvero, la prima risoluzione come viene fatta? Perche’ se devo specificare un url con un dominio, devo poi anche poterlo raggiungere senza DNS. O no?

    1. Per la prima domanda: il bello degli standard è che ce ne sono tanti tra cui scegliere 🙂 Credo che uno degli scopi di DOH sia quello di rendere indipendente il browser dalla configurazione dello stack IP e anche di mascherare il più possibile la risoluzione dei nomi, impedendo che questa venga in qualche modo impedita con dei filtri.

      Per la sdeconda: di fatto DoH fa un inoltro della query ad un DNS il quale ascolta la quesry DoH del client, poi risolve il nome nel modo canonico e restituisce la risposta al client DoH. Di fatto è come configurare il DNS DoH come DNS primario nello stack IP. Va detto che DoH è un protocollo per gli endpoint, non si sostituisce ai dialoghi tra DNS server.

  2. Le prestazioni non ne risentono ? Non c’è molto piu carico sui server rispetto ad una classica richiesta dns ?

    1. I server sono quelli di Google o Cloudflare in questo caso, non credo ceh loro abbiano problemi di prestazioni.
      Non è lo stesso server che ti serve le pagine HTTPS a servirti via HTTPS la risoluzione dei nomi, è un server differente.

Spazio per un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.