Passo 05 · Delega
Lo punti verso il server. Poi legga cosa ha appena pubblicato.
La delega in sé richiede due record e cinque minuti. Imposti i nameserver presso il registrar, crei un record di indirizzo per il server, attenda che la modifica si propaghi al registro, e la verifichi da fuori della sua stessa rete piuttosto che dalla macchina che già conosce la risposta. Ciò che merita i restanti quaranta minuti è tutto quello che la delega rende visibile in seguito.
dig +short NS example.com @1.1.1.1 # the delegation as the world sees it, not your cache
dig +short A app.example.com # must return the VPS address before you deploy anything
dig +short CAA example.com # empty today; step 05 fills it in
dig +short DS example.com # non-empty only if DNSSEC is actually signed
Sulla questione di chi gestisce i server autoritativi, la risposta onesta non è quella che il resto di questa serie offre di solito. Il DNS autoritativo self-hosted è l'unico componente in cui fare da sé è generalmente peggio: richiede due o più server su reti separate, deve continuare a funzionare esattamente durante l'interruzione che ha messo fuori uso il suo server principale, richiede una cura costante per evitare di essere sfruttato per amplificazione, e quando fallisce tutto fallisce con esso — incluso il rinnovo del certificato che le avrebbe permesso di risolvere la situazione. Crea anche una correlazione che stava cercando di evitare, perché un nameserver autogestito condiviso tra due progetti li collega pubblicamente nei dataset che chiunque può interrogare. Usi un operatore DNS con una rete anycast, lo scelga in base al fatto che richieda o meno un documento d'identità piuttosto che in base al suo elenco di funzionalità, e conservi un file di zona esportato, così un trasloco diventa un copia-incolla e non uno scavo archeologico. Questo è un compito diverso rispetto al resolver ricorsivo privato della serie, che sposta sulla sua macchina il log di ciò che lei stesso consulta, ed è un'operazione che vale la pena fare.
Ecco ora la fuga che vanifica configurazioni accurate più di qualsiasi altra cosa in questa pagina, perché agisce in silenzio e dopo che lei ha smesso di prestarci attenzione. Ogni certificato emesso da un'autorità pubblicamente attendibile viene inviato a log pubblici a sola aggiunta, e i browser rifiutano i certificati che non lo sono. I log esistono perché un'emissione indebita sia rilevabile, il che è realmente un bene, e sono indicizzati da interfacce di ricerca gratuite. La conseguenza è che ogni hostname per cui ha mai richiesto un certificato è a una ricerca per parola chiave di distanza, per chiunque, in modo permanente — incluse le voci staging., vpn., backup. e il nome amministrativo che pensava nessuno avrebbe indovinato.
# every certificate ever issued under the zone, and every hostname inside each one
curl -s 'https://crt.sh/?q=%25.example.com&output=json' | jq -r '.[].name_value' | sort -u
L'attenuazione consiste in un unico certificato wildcard per la zona, servito per ogni hostname interno sottostante. La voce di log registra allora che esiste un certificato per la zona, e nulla su ciò che vive al suo interno. Il costo è che un wildcard richiede la verifica basata su DNS invece della più semplice verifica basata su file, il che significa un token API per il suo operatore DNS sul server — dieci minuti di configurazione, a fronte di un elenco pubblico permanente del suo schema di denominazione interno. Emetta un unico wildcard, lo mantenga sul reverse proxy, e smetta di richiedere certificati per singolo hostname.
Due record completano il lavoro. Un record CAA stabilisce quali autorità di certificazione sono autorizzate a emettere certificati per il nome, cosicché un'emissione indebita da parte di qualsiasi altra autorità viene respinta alla fonte invece di essere scoperta in seguito. E DNSSEC, se sia il suo registro che il suo operatore DNS lo supportano, firma la delega in modo che un resolver possa distinguere una risposta falsificata da una autentica — è un semplice interruttore da attivare presso la maggior parte degli operatori e un record da impostare presso il registrar, e l'unica cosa di cui stare attenti è che una zona firmata le cui chiavi sono gestite male fallisce in modo chiuso, cioè completamente.
; in the zone — only this authority may issue, and tell us if anyone tries
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issuewild "letsencrypt.org"
example.com. IN CAA 0 iodef "mailto:abuse@example.com"
Infine, il livello di correlazione, il punto in cui due compartimenti stagni diventano uno solo senza che nessuno commetta un errore. I dataset di DNS passivo registrano quali nomi si sono risolti verso quali indirizzi e quando; un indirizzo condiviso, un insieme di nameserver condiviso o un mail exchanger condiviso bastano a unire due progetti che non hanno nulla altro in comune. Se due nomi devono restare scollegati, hanno bisogno di server separati, insiemi di nameserver separati e instradamento della posta separato — e lo stesso vale per i piccoli dettagli che nessuno considera, come un identificativo di analytics riutilizzato su entrambi i siti o un favicon identico, entrambi ricercabili su scala Internet da chiunque abbia voglia di farlo.