Sicurezza Informatica

Il DNS

Guida tecnica approfondita all'analisi e all'audit di tutti i principali record DNS, con mappatura dei Resource Record e diagnostica tramite Google Admin Toolbox Dig e CLI.

Anatomia di un Resource Record DNS (RFC 1035)

Tag: Struttura RR   |   Tag: Standard RFC


file di zona e resourse record

Il Domain Name System (DNS) organizza le proprie informazioni all'interno di tabelle gerarchiche denominate file di zona. Ogni voce del file di zona è un Resource Record (RR). Prima di procedere a qualsiasi attività di audit o vulnerabilty assessment, è indispensabile comprendere la grammatica con cui ciascun record viene espresso sulla rete.

Nel formato testuale standard definito dalla RFC 1035, un generico Resource Record presenta la seguente struttura a cinque campi.

[NAME/OWNER]    [TTL]    [CLASS]    [TYPE]    [RDATA]
www.example.com. 3600     IN         A         93.184.216.34
Campo Significato Ruolo Tecnico nell'Audit
NAME / OWNER Nome a dominio o FQDN L'oggetto a cui si riferisce il record. Se termina con il punto finale (.) è un Fully Qualified Domain Name (FQDN) assoluto; se privo di punto, il name server appende il nome della zona corrente.
TTL Time To Live (secondi) Intervallo di validità in cui i resolver ricorsivi possono trattenere il record in cache prima di rieseguire la query autoritativa. Valori sproporzionati (troppo alti) bloccano le modifiche di emergenza; valori troppo bassi sovraccaricano i server autoritativi.
CLASS Classe di rete Quasi universalmente impostato su IN (Internet). Altre classi storiche (CH per Chaosnet, HS per Hesiod) sono in disuso, salvo l'uso di CH txt version.bind per verificare la versione del software DNS.
TYPE Tipo di record Identifica la funzione logica e il formato dei dati contenuti nel campo RDATA (es. A, AAAA, MX, NS, SOA, TXT).
RDATA Resource Data Il payload vero e proprio: un indirizzo IP per i record A/AAAA, un hostname prioritario per MX, parametri numerici per SOA, o stringhe arbitrarie per TXT.

Guida Completa ai Resource Record: Ruolo e Diagnosi

Tag: Catalogazione Record   |   Tag: Analisi Dettagliata

Esaminiamo in modo analitico tutti i record che un amministratore o un security auditor incontra durante la valutazione di un dominio pubblico.

A e AAAA Indirizzamento Host IPv4 e IPv6

A che servono: Risolvono un nome simbolico (FQDN) nel corrispondente indirizzo IP numerico (record A a 32 bit per IPv4; record AAAA a 128 bit per IPv6).

Esempio di sintassi:

webserver.example.com.  3600  IN  A     198.51.100.25
webserver.example.com.  3600  IN  AAAA  2001:db8:85a3::8a2e:370:7334

Cosa verificare in audit:

  • Verificare che nessun sottodominio punti a subnet private (RFC 1918 come 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) o interfacce di loopback (127.0.0.1), a meno che non si tratti di reti interne isolate.
  • Controllare l'allineamento con i record AAAA per garantire piena compatibilità dual-stack IPv6.
CNAME Canonical Name (Alias)

A che serve: Crea un alias simbolico da un hostname verso il suo vero nome canonico (un altro FQDN). Consente di reindirizzare servizi senza dover duplicare o gestire più indirizzi IP statici.

Esempio di sintassi:

blog.example.com.   1800  IN  CNAME  example.github.io.

Cosa verificare in audit (Regola aurea RFC 1912 & Takeover):

  • Violazione CNAME Apex: Se per un nome esiste un record CNAME, non può coesistere nessun altro record con lo stesso nome. Pertanto, è vietato inserire un CNAME sulla radice della zona (es. su example.com.), poiché sulla radice devono obbligatoriamente coesistere i record SOA e NS.
  • Dangling CNAME: Se il servizio cloud di destinazione (es. AWS S3, Heroku, Azure, GitHub Pages) viene disattivato ma il record CNAME rimane attivo nel DNS, un attaccante può registrare quell'identificativo sul provider cloud e impersonare legittimamente il sottodominio aziendale (Subdomain Takeover).
NS Name Server (Delega di Zona)

A che serve: Indica quali server DNS sono autoritativi per la gestione della zona, ovvero quali macchine custodiscono il database originale dei record e rispondono con autorità ai client.

Esempio di sintassi:

example.com.    86400  IN  NS  ns1.dnsprovider.net.
example.com.    86400  IN  NS  ns2.dnsprovider.net.

Cosa verificare in audit:

  • Ridondanza minima: Devono esistere almeno due server autoritativi indipendenti.
  • Diversificazione di rete: Devono trovarsi su prefissi di routing (/24 IPv4) e Autonomous System (AS) differenti per resistere a incidenti infrastrutturali o blackout di connettività.
  • Lame Delegation: Verificare che i server indicati nei record NS rispondano effettivamente come autoritativi per quella zona (flag AA attivo), altrimenti le query andranno incontro a ritardi o fallimenti casuali.
SOA Start of Authority (Parametri della Zona)

A che serve: Rappresenta il primo record assoluto di qualsiasi file di zona autoritativo. Fornisce l'identificatore del server primario, l'indirizzo email del responsabile tecnico e i parametri temporali di replicazione tra Primary e Secondary DNS.

Esempio di sintassi:

example.com.  86400  IN  SOA  ns1.example.com. admin.example.com. (
                              2026091901 ; Serial (formato YYYYMMDDnn)
                              7200       ; Refresh (intervallo controllo modifiche)
                              3600       ; Retry (tentativo in caso di errore)
                              1209600    ; Expire (tempo limite di validità dati secondari)
                              300        ; Minimum TTL (Negative Caching TTL)
                              )
Nota sintattica sull'email del SOA: Nel record SOA la chiocciola (@) dell'indirizzo email dell'amministratore viene sostituita da un punto. Dunque admin.example.com. corrisponde alla casella admin@example.com.

Cosa verificare in audit:

  • Serial Number: Deve seguire una convenzione coerente (consigliato AAAAMMGGnn) e incrementarsi a ogni modifica; in caso contrario, i server secondari non sincronizzeranno mai gli aggiornamenti di zona.
  • Negative Cache TTL (Minimum): Stabilisce per quanti secondi i resolver intermedi memorizzano l'errore NXDOMAIN (dominio/host inesistente). Valori troppo elevati prolungano il disservizio durante la creazione di nuovi host.
MX Mail Exchanger (Instradamento Posta)

A che serve: Definisce i mail server SMTP preposti alla ricezione dei messaggi indirizzati agli utenti del dominio (es. per recapitare posta a user@example.com).

Esempio di sintassi:

example.com.  3600  IN  MX  10 aspmx.l.google.com.
example.com.  3600  IN  MX  20 alt1.aspmx.l.google.com.

Cosa verificare in audit:

  • Priorità metrica: Il numero intero che precede l'hostname indica la priorità (valore numerico più basso = priorità più alta). I mail server mittenti tenteranno sempre di contattare prima la priorità 10, passando a 20 solo in caso di irraggiungibilità.
  • Target FQDN: Il record MX deve puntare esclusivamente a un record A o AAAA. Puntare un MX a un record CNAME viola esplicitamente la RFC 2181 e causa il rigetto o il loop delle email da parte dei Relay SMTP conformi.
TXT Text String (Metadati, SPF, DKIM, DMARC)

A che serve: Inizialmente concepito per associare commenti leggibili dall'uomo, è divenuto il canale d'elezione per inserire metadati crittografici, token di proprietà del dominio e policy di sicurezza antispam per la posta elettronica.

Sottotipi fondamentali da esaminare in un audit:

  • SPF (Sender Policy Framework): Pubblicato sul dominio radice, esprime quali host o indirizzi IP hanno facoltà di emettere posta.
    example.com.  3600  IN  TXT  "v=spf1 ip4:198.51.100.10 include:_spf.google.com -all"
  • DKIM (DomainKeys Identified Mail): Pubblicato su un sottodominio selettore (selettore._domainkey.dominio.tld), espone la chiave crittografica pubblica per validare le firme digitali apposte alle email.
    google._domainkey.example.com.  3600  IN  TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQE..."
  • DMARC: Pubblicato su _dmarc.dominio.tld, definisce la policy di enforcement (rigetto o quarantena) applicata dai server terzi se SPF o DKIM falliscono.
    _dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=reject; rua=mailto:reports@example.com"
Regola di coerenza SPF: Non deve mai esistere più di un record TXT con prefisso v=spf1 per lo stesso dominio. Se ne vengono rilevati due, i server mittenti interpretano la configurazione come errore permanente (PermError), disattivando di fatto la protezione.
PTR Pointer (Risoluzione Inversa / Reverse DNS)

A che serve: Esegue la risoluzione inversa, convertendo un indirizzo IP numerico nel rispettivo nome di dominio. Risiede nelle zone speciali in-addr.arpa (per IPv4) e ip6.arpa (per IPv6), dove l'indirizzo IP viene scritto a blocchi ottetto invertiti.

Esempio di sintassi:

# Per l'IP 198.51.100.25:
25.100.51.198.in-addr.arpa.  3600  IN  PTR  mail.example.com.

Cosa verificare in audit (FCrDNS - Forward-Confirmed reverse DNS):

  • I server SMTP che inviano email nel mondo devono possedere un record PTR valido che corrisponda al nome con cui si presentano nel comando EHLO/HELO.
  • L'host indicato nel record PTR deve a sua volta risolvere (tramite record A) verso lo stesso identico IP di partenza. In assenza di corrispondenza bidirezionale, i maggiori provider (Gmail, Outlook, Yahoo) bocciano la connessione SMTP.
CAA Certification Authority Authorization

A che serve: Definito nella RFC 6844, specifica quali Certification Authority (CA) sono autorizzate a emettere certificati TLS/SSL per conto del dominio.

Esempio di sintassi:

example.com.  3600  IN  CAA  0 issue "letsencrypt.org"
example.com.  3600  IN  CAA  0 iodef "mailto:security@example.com"

Cosa verificare in audit:

  • In assenza di record CAA, qualsiasi CA riconosciuta a livello globale può rilasciare certificati validi per il dominio.
  • La presenza del tag issue delimita espressamente le sole CA fidate, mentre il tag iodef notifica gli amministratori in caso di richieste di certificazione fraudolente o anomale.
SRV Service Locator

A che serve: Definisce porta di ascolto, protocollo di trasporto e peso relativo di uno specifico servizio applicativo di rete (es. VoIP SIP, XMPP, Microsoft Active Directory / LDAP).

Esempio di sintassi:

# _servizio._protocollo.dominio.  TTL  IN  SRV  [Priority] [Weight] [Port] [Target]
_sip._tcp.example.com.             3600 IN  SRV   10         60       5060   sipserver.example.com.

Cosa verificare in audit:

  • Garantire che le porte indicate corrispondano a servizi effettivamente attivi e sicuri.
  • Verificare che il Target finale sia un FQDN canonico (Record A/AAAA) e mai un CNAME.

Come Eseguire l'Interrogazione: Confronto Dig Web vs CLI

Tag: Strumenti Operativi   |   Tag: Metodologia di Risoluzione

Per ispezionare questi record possiamo ricorrere a due ambienti complementari: la suite web Google Admin Toolbox Dig e l'utility shell standard dig (Domain Information Groper).

Google Admin Toolbox Dig (Ambiente Web)

Disponibile all'indirizzo: https://toolbox.googleapps.com/apps/dig/

Vantaggi didattici e operativi:

  • Assenza di bias locali: Interroga direttamente i resolver mondiali 8.8.8.8 e 8.8.4.4, neutralizzando server proxy scolastici, blocchi firewall o cache DNS dell'OS locale.
  • Filtri immediati con un clic: Dispone di pulsanti preconfigurati per ciascun tipo di record: ANY, A, AAAA, CNAME, MX, NS, PTR, SOA, SRV, TXT, CAA.
  • Trasparenza del raw output: Restituisce il payload originario completo generato da BIND/Unbound, comprensivo di Header Flags, Question Section, Answer Section e Authority Section.

Di seguito una matrice rapida di corrispondenza tra l'uso dei filtri nell'interfaccia web e i comandi CLI equivalenti da shell:

Obiettivo Audit Interfaccia Google Dig Web Comando da Terminale (Linux/macOS)
Mappare Name Server Nome dominio + pulsante NS dig @8.8.8.8 example.com NS +noall +answer
Audit Mail Server Nome dominio + pulsante MX dig @8.8.8.8 example.com MX +noall +answer
Ispezione SPF del dominio Nome dominio + pulsante TXT dig @8.8.8.8 example.com TXT +short
Ispezione Record DMARC _dmarc.example.com + pulsante TXT dig @8.8.8.8 _dmarc.example.com TXT +short
Verifica Autorizzazioni CA Nome dominio + pulsante CAA dig @8.8.8.8 example.com CAA +noall +answer
Controllo Reverse DNS (PTR) 25.100.51.198.in-addr.arpa + PTR dig @8.8.8.8 -x 198.51.100.25 +short
Ispezione Parametri SOA Nome dominio + pulsante SOA dig @8.8.8.8 example.com SOA +noall +answer

Checklist Operativa per un Audit DNS Completo

Tag: Procedura Guidata   |   Tag: Laboratorio Audit

Durante il laboratorio pratico, ogni studente deve condurre l'audit sul dominio assegnato seguendo rigorosamente questa sequenza logica di 6 fasi:

  1. Fase 1: Ispezione SOA e NS (Infrastruttura di base)
    Verificare la presenza di almeno due NS ridondati. Controllare nel SOA che il serial sia aggiornato e che il timer di expire sia superiore a 7 giorni (604800s).
  2. Fase 2: Analisi Risoluzione Host (A e AAAA)
    Verificare l'esistenza sia del record per la radice (apex/naked domain) che per il sottodominio comune www. Verificare che l'IP non appartenga a classi RFC 1918.
  3. Fase 3: Ispezione MX (Flusso Posta)
    Controllare i pesi di priorità. Assicurarsi che ogni record MX punti a un record A valido e mai a un CNAME.
  4. Fase 4: Bonifica CNAME (Prevenzione Subdomain Takeover)
    Cercare sottodomini che puntano a servizi terzi dismessi. Se un CNAME verso azienda.s3.amazonaws.com restituisce errore HTTP 404 (NoSuchBucket), il record è orfano e va eliminato immediatamente.
  5. Fase 5: Sicurezza Email (SPF, DKIM, DMARC)
    Verificare che esista un unico record SPF terminante con ~all o -all. Interrogare _dmarc.dominio per verificare la presenza di una policy di scarto (p=reject o p=quarantine).
  6. Fase 6: Policy di Certificazione (CAA)
    Verificare se sono definiti record CAA che impediscono l'emissione non autorizzata di certificati digitali da parte di CA compromesse.
Regola di interpretazione dei flag DNS: Nel raw output di Dig, osservare sempre il campo flags nell'header di risposta:
  • qr: Query Response (la risposta è arrivata).
  • aa: Authoritative Answer (il server interrogato è il detentore primario della zona).
  • ra: Recursion Available (il server interrogato supporta ed esegue la ricorsione).
In Sintesi
  • I Resource Record (RR) sono le unità fondamentali di informazione del DNS, strutturate in 5 campi (Name, TTL, Class, Type, RDATA).
  • I record A e AAAA associano i nomi agli IP; i CNAME creano alias, ma non possono mai trovarsi sull'apex del dominio né rimanere orfani.
  • Il record SOA stabilisce l'autorità e i timer di sincronizzazione, mentre i record NS garantiscono la ridondanza autoritativa di zona.
  • I record MX governano l'instradamento della posta mediante valori numerici di priorità e devono puntare solo a record A.
  • I record TXT sono il fulcro della sicurezza email moderna: ospitano le dichiarazioni autorizzative di SPF, le chiavi pubbliche DKIM e le regole DMARC.
  • I record PTR consentono la risoluzione inversa (indispensabile per il protocollo SMTP), mentre i record CAA restringono le Certification Authority autorizzate a emettere certificati TLS.
  • Google Admin Toolbox Dig fornisce un banco di prova ideale, neutrale e indipendente dalla cache per verificare tutti i record di zona.
Cosa hai imparato
  • A identificare il ruolo, i vincoli RFC e la sintassi di tutti i principali record DNS (A, AAAA, CNAME, NS, SOA, MX, TXT, PTR, CAA, SRV).
  • A condurre un'indagine sistematica tramite interfaccia web su Google Admin Toolbox Dig e riga di comando shell.
  • A riconoscere le vulnerabilità di sicurezza correlate a record DNS mal configurati (Subdomain Takeover, SPF PermError, assenza di FCrDNS).
  • A redigere un report di conformità strutturato per l'infrastruttura DNS di un dominio internet.

Parole chiave

I termini principali introdotti in questa guida sono:

Resource Record (RR) Record A e AAAA CNAME e Subdomain Takeover Start of Authority (SOA) Name Server (NS) Mail Exchanger (MX) TXT (SPF, DKIM, DMARC) Reverse DNS (PTR) CAA Record Google Admin Toolbox Dig