Come ottenere privacy e autenticità con DNS?

8

Uso pfSense (Unbound) come risolutore locale. Storicamente l'ho indicato alla risoluzione ricorsiva della radice, perché ho percepito la mia principale minaccia come attendibilità e recency dei dati (DNS avvelenato / non valido) e localizzazione DNS dell'ISP locale. (Non so se sia così, ma ho sentito che un server DNS di root all'estero potrebbe essere meno connesso a me personalmente e avere meno interesse in tutte le query che ho generato.) Uso principalmente IPv4 che potrebbe essere rilevante.

Con tutta l'attenzione sul tracciamento DNS, sono emerse alcune preoccupazioni e percezioni:

  • Devo utilizzare un tipo di metodo di firma o encoding DNS, per la privacy / certezza? Non sto utilizzando DNSSEC o altre estensioni, quindi le mie query DNS sono "in chiaro". Sono guardabili da qui e dai vari server DNS, e non c'è sicuramente una manipolazione eccessiva "on the wire" (meno probabile ma notato). Ma che cosa usare e in che misura aiuterà, perché non è supportato da tutti.
  • Devo usare un resolver esterno invece di interrogare i root server? Sto interrogando i root server fin dall'inizio, quindi sto inviando molte query dai root server alla sottorete attuale di interesse, invece di usare una voce precaricata su alcuni resolver / cache DNS esistenti. Ma ogni server DNS vede solo un componente del dominio, non riescono a vedere l'intero obiettivo. Se utilizzo un risolutore intermedio, specialmente uno con firma / crittografia, invio molte meno richieste DNS e quello che faccio è sempre crittografato e firmato. Ma richiede un intermediario scelto con notevole affidabilità (memorizzazione nella cache, ecc.) E non incide sul rischio di intercettazione.
  • Devo indirizzare il DNS su un qualche tipo di proxy anonimo? È più lento per le prime richieste, ma Unbound memorizzerà nella cache eventuali risposte localmente e richiederà anche dati di aggiornamento prima che scadano i dati in cache, e suppongo che Si applica la regola 80/20 (la maggior parte delle query riguarderà lo stesso sottoinsieme di domini in cui ho già dati memorizzati nella cache), quindi non sono troppo preoccupato per l'aspetto della velocità. Ma quanto è pratico questo? Il metodo di anonimizzazione più importante è tor. Tor non esegue UDP, quindi gestisce il DNS chiedendo al nodo di uscita di eseguire una query DNS e si fida del risultato. Potrei configurare Unbound per eseguire query su DNS solo su TCP e instradare tramite tor locale, se questo lo risolvesse (= se la maggior parte dei nodi di uscita consentirà la porta 53 e se la maggior parte I server DNS parlano TCP). Sono anche felice di eseguire un nodo di anonimizzazione DNS se esiste un equivalente tor specifico per DNS, se aiuterà gli altri (questo potrebbe permettermi di unire il mio traffico con le query DNS generali) ma esiste una cosa del genere?

Quindi il mio attuale modello di rischio è probabilmente qualcosa di simile -

  • Dati avvelenati / non validi ;
  • Registrazione / monitoraggio sul server (i) e modifica / monitoraggio "sul cavo";
  • Legare le query all'anonimizzazione IP / DNS di origine
    Se non utilizzo DNS proxy / anonimizzazione, ci sono solo 2 opzioni. Posso risolvere tutto da solo dai root server, nel qual caso confido che ogni server DNS su ogni dominio non effettui il log delle query che è improbabile, ma identificare gli obiettivi delle query è meno facile poiché le query di sottodominio risultanti sono distribuite molto ampiamente. Se uso un risolutore pubblico inserisco "tutte le mie uova in un unico paniere" poiché vedono l'intero dominio di destinazione, non solo parti di esso, e mi sto fidando che non vengano registrate, il che potrebbe anche non essere realistico. Quindi l'anonimizzazione DNS sembra necessaria, ma non è chiaro se è realistico.

Sono felice di mettere il lavoro per risolvere questo, e sono sicuro di poter migliorare su quello che sto facendo. Ma occorreranno soluzioni alternative, dal momento che il DNS è fondamentalmente insicuro.

Dato lo stato attuale del DNS e lo stato attuale delle tecnologie di anonimizzazione, qual è il mio miglior approccio alla mitigazione delle minacce per le query DNS?

    
posta Stilez 17.04.2018 - 10:08
fonte

1 risposta

1

In breve, installa un risolutore abilitato DNSSEC con minimizzazione QNAME ( RFC 7816 ) sul tuo computer o usa DNS su TLS ( RFC 7858 ) verso un server remoto di cui ti fidi / controlli.

Ora più in dettaglio, dato che il precedente setup si rivolge a casi diversi e può anche essere combinato in qualche modo.

Il primo DNSSEC non è qualcosa che puoi semplicemente usare al tuo fianco per essere applicato ovunque, e non è qualcosa che ti aiuterà per la privacy. Per le zone che sono abilitate DNSSEC (che hanno firme), se il resolver le convalida, allora hai la garanzia di autenticità (non puoi ottenere dati falsi) e integrità (le cose non possono essere cambiate o declassate). Questo è utile e risolve alcuni problemi ma:

  1. non tutti i nomi di dominio sono abilitati DNSSEC, anche lontani da
  2. non impedisce a nessuno di leggere il tuo traffico DNS poiché rimane chiaro, sia la richiesta che le risposte

Quindi, se lo fai, devi fidarti del tuo ISP o di chiunque sulla rete per non annusare il tuo traffico. Chiunque sarà in grado di guardare i tuoi messaggi DNS e modificare quello non abilitato DNSSEC.

L'altra opzione è quella di connettersi con TLS ad un server DNS remoto che parla questo nuovo protocollo. Questo ti dà due vantaggi:

  1. nessuno potrà snoopare, né cambiare, i tuoi messaggi DNS in quanto tutti sono protetti da TLS, e questo vale sia per i domini DNSSEC che per quelli non DNSSEC
  2. i server dei nomi autorevoli che invii vedranno solo l'altro IP del server dei nomi e mai il tuo.

Ovviamente l'alternativa di un uomo povero sarebbe quella di fare un tunnel IPSEC o SSH, per ottenere quasi gli stessi benefici, ma non senza alcune complessità, poiché è necessario gestire sia l'UDP che il TCP. O un proxy SOCKS. Ma dal momento che DNS over TLS è uno standard ora (almeno un RFC), potrebbe invece essere più sensato proseguire in questo modo.

Ho detto che devi fidarti / controllare questo server DNS remoto perché ovviamente vedrà tutto il tuo traffico DNS. Quindi dipende da te definire chi puoi fidarti o meno. Alcuni provider DNS aperti pubblici forniscono anche DNS su TLS al giorno d'oggi, ad esempio CloudFlare: link ma puoi trovarne molti altri qui: link

Se hai bisogno di utilizzare tali server dei nomi che non controlli completamente, alcuni potrebbero consigliarti di impostare le cose in modo tale che ne usi più e di diffondere le tue query tra loro, in modo che nessuno possa ricostruire tutta la tua sessione DNS. Un po 'più complicato da implementare in quanto questo non è il modo standard in cui un elenco di nameserver opera per impostazione predefinita.

Come nota a margine, lo standard di DNS su HTTPS è attualmente in fase di cottura e dovrebbe arrivare "presto". Immagino che molti provider offriranno questo servizio, quindi avrai gli stessi dilemmi di oggi con i provider VPN (a chi fidarsi, ecc.)

Hai anche detto "Ma ogni server DNS vede solo un componente del dominio, non riesce a vedere l'intero target". che è sbagliato in pratica oggi. Il protocollo lo consente, ma per vari motivi, poiché nessuno ricorda quando, i server dei nomi ricorsivi inviavano l'intero nome (ogni etichetta) a ciascun server dei nomi autorevole ad ogni passaggio. È solo ora con lo standard di minimizzazione QNAME (RFC 7816) che i resolver possono eseguire l'attraversamento inviando una sola etichetta ogni volta. Questo non è senza problemi, poiché alcuni nameserver non lo fanno (quindi alcuni ricorsivi hanno implementato una strategia di fallback: prima prova con la minimizzazione di QNAME e se fallisce ricomincia con il nome completo come prima)

    
risposta data 19.04.2018 - 09:06
fonte

Leggi altre domande sui tag