Skip to main content
  1. Blog/

Anatomia di una query DNS

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

TL;DR
  • Prima di mandare qualsiasi pacchetto in rete, il sistema cerca la risposta in cache - browser, OS, /etc/hosts
  • Se non trova niente, chiede al resolver ISP (es. 8.8.8.8) che fa il lavoro sporco
  • Il resolver risale la gerarchia: Root Server → TLD Server → Nameserver autoritativo
  • La risposta torna con un TTL - un timer che dice quanto tenerla in cache prima di richiederla
$ history
  • nslookup example.com
  • nslookup -type=MX example.com
  • dig example.com
  • dig +trace example.com
  • dig -x 8.8.8.8

Ogni volta che scrivi un dominio nel browser e premi invio, parte una catena di eventi che la maggior parte delle persone non vede mai. Il risultato finale è un indirizzo IP - ma il percorso per arrivarci attraversa cache locali, server distribuiti in tutto il mondo e una gerarchia precisa.

Anatomia di una Query DNS: dal browser all'indirizzo IP


Il ciclo di vita di una query
#

1. Controllo della cache locale
#

Prima di uscire in rete, il sistema cerca la risposta in casa. L'ordine è preciso:

  1. Cache del browser - Chrome, Firefox e Safari tengono una cache DNS propria. Se hai visitato quel dominio di recente, la risposta è già lì.
  2. Cache del sistema operativo - se il browser non ha niente, chiede all'OS.
  3. /etc/hosts - file locale che mappa domini a IP senza passare per nessun server. Ha la precedenza su tutto il resto.

Solo se tutte e tre restituiscono vuoto, la query esce dalla macchina.

2. Il resolver ISP
#

La prima tappa esterna è il resolver ricorsivo - di solito fornito dall'ISP, oppure uno pubblico come 8.8.8.8 (Google) o 1.1.1.1 (Cloudflare).

Il resolver è un intermediario: riceve la domanda, si ricorda la risposta per i prossimi che la chiedono, e se non ce l'ha in cache inizia la scalata gerarchica per conto tuo.

3. La scalata gerarchica
#

Se il resolver non ha la risposta in cache, risale la gerarchia DNS dal basso verso l'alto:

Root Server  →  TLD Server  →  Nameserver autoritativo
     .         es. .it / .com     ns1.example.com

Root Server - ci sono 13 indirizzi root nel mondo (con centinaia di istanze fisiche tramite anycast). Sanno solo una cosa: dove sono i server TLD.

TLD Server - gestisce un dominio di primo livello (.it, .com, .net). Sa dove sono i nameserver di ogni dominio sotto di lui.

Nameserver autoritativo - è il server che conosce la risposta vera. Contiene la zona DNS del dominio: tutti i record, tutti gli IP.

4. La risposta autoritativa
#

Il nameserver risponde con il record richiesto - di solito un record A (IPv4) o AAAA (IPv6). La risposta torna al resolver, che la mette in cache e la passa al client.


TTL - il timer della cache
#

Ogni risposta DNS porta un campo TTL (Time To Live), espresso in secondi. Dice a chi riceve la risposta per quanto tempo può tenerla in cache prima di dover fare una nuova query.

example.com.  300  IN  A  93.184.216.34
           TTL: 300 secondi = 5 minuti

TTL basso → aggiornamenti veloci, più query, più carico sui server. TTL alto → meno query, cache più lunga, propagazione più lenta in caso di cambio IP.


I record DNS fondamentali
#

RecordSignificato
ADominio → IPv4
AAAADominio → IPv6
CNAMEAlias di un altro dominio
MXServer di posta con priorità
TXTTesto libero - usato per SPF, DKIM, verifica dominio
PTRIP → Dominio (reverse DNS)

Angolazione Blue Team - i rischi DNS
#

Il DNS è un protocollo vecchio, progettato senza sicurezza in mente. Tre rischi da tenere sul radar:

DNS Hijacking - l'attaccante modifica le risposte DNS, reindirizzando il traffico verso server controllati da lui. Può avvenire a livello di resolver, di registrar o tramite malware che modifica /etc/hosts.

DNS Cache Poisoning - l'attaccante inietta risposte false nella cache di un resolver. Chi chiede quel dominio riceve l'IP sbagliato senza saperlo. DNSSEC è la contromisura principale.

DNS Tunneling - il protocollo DNS viene usato come canale di comunicazione nascosto. I dati vengono codificati nei nomi di dominio delle query e nelle risposte. Difficile da bloccare perché il DNS deve passare quasi ovunque.


exit 0
#

Il DNS sembra semplice dall'esterno - digiti un dominio, ottieni un IP. Sotto ci sono cache stratificate, una gerarchia globale di server e un protocollo di 40 anni che regge buona parte di internet. Capire come funziona è il primo passo per capire come si rompe.


Concetti correlati: tcp-udp · networking

Related