Domanda:
Perché le cache DNS del browser non mitigano gli attacchi DDOS ai provider DNS?
aeb0
2016-10-23 06:25:37 UTC
view on stackexchange narkive permalink

Perché il recente attacco DDoS contro il provider DNS Dyn e altri attacchi simili hanno avuto successo? Sicuramente un attacco DDoS può far cadere un'entità e se quell'entità controlla i server DNS, le query a quei server dei nomi falliranno ei domini elencati in quei server dei nomi non saranno raggiungibili da nessun host che non dispone già di informazioni IP per loro.

Ma poiché i browser memorizzano nella cache i record DNS, molti host avranno già le informazioni IP per quei domini (almeno fino alla scadenza delle loro voci nella cache) e quindi il fatto che i server dei nomi siano inattivi non dovrebbe avere importanza per gli host con cache . Ma non sembra essere così: durante l'attacco di ieri non sono riuscito ad accedere a github, npm, ecc.

Sebbene la maggior parte delle risposte qui stia parlando di cache del browser, sono interessato anche alle cache intermedie (come il tuo ISP).Quando apporto una modifica al DNS, spesso mi viene detto che può volerci un giorno prima che la modifica si propaghi su Internet.Perché quelle cache DNS intermedie non aiutano?
Sei risposte:
Shackledtodesk
2016-10-23 06:55:17 UTC
view on stackexchange narkive permalink

Hai ragione sul fatto che la cache DNS mitigherebbe la mancata disponibilità di un server dei nomi. È estremamente comune avere un TTL di 5 minuti o inferiore. Quindi, 5 minuti dopo che l'attacco DDOS ha bloccato Dyn, la tua cache non sarebbe stata valida e non saresti stato in grado di colpire GitHub, ecc.

Con quale frequenza cambiano gli indirizzi IP di tali siti importanti?Avrei pensato che la cache sarebbe durata almeno alcuni giorni, forse settimane.
@AlexanderMomchliov Il TTL viene scelto per la latenza piuttosto che per la frequenza.Se il tuo indirizzo IP viene cambiato, non devi aspettare settimane prima che le persone possano usarlo di nuovo.
Per curiosità ... il bilanciamento del carico round-robin guidato dal DNS e il failover (che di solito vengono eseguiti in modo completamente diverso!) Messi da parte, qual è la logica per rendere la cache così inutilmente di breve durata?Non è che la voce DNS di un sito dovrebbe normalmente cambiare 200 volte al giorno.Si potrebbe pensare che anche due ore dovrebbero funzionare bene.
@Damon: Torna al commento di OrangeDog.Non cambia spesso, ma quando cambia preferiresti che fosse cambiato * ora *, non 2 giorni dopo.Inoltre, alcuni siti / servizi basati su cloud * sono * dinamici: le VM vengono eliminate, mescolate, arrestate, generate, ... e l'utente finale dovrebbe comunque essere indirizzato a un server / porta in cui si trova effettivamente il sito / servizio desiderato.D'altra parte, le cache DNS come [EdgeDNS] (https://github.com/jedisct1/edgedns) manterranno le voci scadute e le useranno finché non riescono a aggiornarle dal DNS autorevole, il che è utile quando è inattivo/lento.
Come accennato, ma vale la pena ripeterlo.Se hai un TTL inferiore a 5 minuti sul tuo DNS, probabilmente stai eseguendo il bilanciamento del carico geograficamente distribuito tramite DNS.Al minuto 5, stiamo parlando di essere in grado di eseguire il failover su un sito DR (Disaster Recovery) quando il primario ha fallito.Quindi, non vuoi un TTL lungo per il tuo DNS per nessuno dei motivi. Sebbene EdgeDNS possa mantenere le voci DNS alla scadenza della cache E il primario non risponde, questo non rientra nelle specifiche RFC per DNS ed entrambi né è normale e di solito non è quello che desideri.
Questo è ciò che accade quando le persone usano Stupid DNS Tricks® per fornire failover e altre funzionalità (ad esempio il geo-routing) per cui il DNS non è stato progettato.Il failover appartiene al livello IP, non al livello di denominazione.
@MatthieuM.Nota che nel cloud raramente colleghi direttamente un dominio a 1 server.Lo colleghi a un bilanciatore del carico.
@Alnitak Puoi aggiungerlo come risposta?Penso che sia sottovalutato.
@Shackledtodesk "di solito non è quello che vuoi". Quando sarebbe meglio non fornire alcun record DNS piuttosto che fornire un record DNS scaduto, se il server DNS primario per l'host non è raggiungibile?
AilifvjucdCMT fatto
paj28
2016-10-23 08:37:17 UTC
view on stackexchange narkive permalink

Una piccola modifica al design delle cache DNS potrebbe fare una grande differenza. La maggior parte delle cache DNS rimuove una voce quando scade il TTL. Una cache potrebbe invece mantenere la voce, ma contrassegnarla come scaduta. Se arriva una query per una voce scaduta, la cache tenterà prima di risolvere il nome a monte e, se fallisce, restituirà la voce scaduta. Mi aspetto che questo sia tecnicamente una violazione del protocollo DNS, ma comunque un comportamento in caso di errore migliore.

Tuttavia, non mi aspetto che ciò accada. L'impatto del mancato funzionamento dei server DNS sarebbe comunque significativo: tutti i siti che non hai nella cache. L'attenzione rimarrà sul mantenimento dell'operatività dell'infrastruttura DNS.

Aggiornamento: @MatthieuM ha sottolineato che EdgeDNS fa questo.

Nota che [EdgeDNS] (https://github.com/jedisct1/edgedns) fa esattamente questo.Mantiene le voci scadute e le utilizza fino a quando non riesce a ottenere una risposta dal DNS autorevole per la voce.
Questa è una vulnerabilità di sicurezza.Se ottengo il controllo del vecchio indirizzo IP di un sito, induco le persone a visitare la mia pagina invece di eseguire il DoS del loro DNS.Ciò potrebbe accadere molto tempo dopo che l'IP è cambiato se so che qualcuno non visita il sito da molto tempo.
Esiste un software che lo fa per Windows?@MatthieuM.
@BlueRaja-DannyPflughoeft - Qualsiasi sito in cui la sicurezza è importante dovrebbe avere SSL che lo ferma
@paj28 Non è una risposta mediocre, è la risposta _corretta_.La risposta attualmente accettata dice fondamentalmente "perché non è così che le cache DNS basate su browser sono attualmente progettate", mentre questa risposta arriva alla radice della domanda sul "perché" spiegando che, mentre i browser _possono_ mitigare gli effetti del DNS in calo, così facendo avrebbe un impatto limitato.
Dal punto di vista delle prestazioni, penserei che sarebbe vantaggioso affermare che se il programma vuole stabilire una connessione a un host la cui voce nella cache è superiore ad es.5 minuti ma meno di ad es.un giorno fa, il programma dovrebbe connettersi immediatamente utilizzando l'indirizzo memorizzato nella cache, ma la cache dovrebbe emettere una richiesta DNS e aggiornare la cache se la risposta indica un nuovo indirizzo.
@paj28 `L'impatto del mancato funzionamento dei server DNS sarebbe ancora significativo, tutti i siti che non hai nella cache. Supponendo che stiamo parlando della cache del browser.Ma i server DNS non autorevoli non potrebbero fare lo stesso?Quindi, se Dyn si interrompe di nuovo, tutti gli altri server DNS manterranno le voci DNS nella cache.I siti Web più piccoli non vengono sempre memorizzati nella cache, ma renderebbe molto più difficile eliminare grandi porzioni di rete colpendo un obiettivo centralizzato.(A meno che, ovviamente, non mi sbaglio).
@Nateowami - Bella idea!
Il DDoS salirà semplicemente sullo stack ...
@IanRingrose - Troppo vero :( Non abbiamo una soluzione completa per DDoS al momento, solo una serie di mitigazioni dai cookie di sincronizzazione agli scrubber distribuiti. Per ora, le contromisure tattiche sono le migliori che chiunque abbia.
grochmal
2016-10-23 07:23:07 UTC
view on stackexchange narkive permalink

@Shackledtodesk è corretto (+1), la cache del browser viene conservata per un breve periodo. Ironia della sorte, alcuni dei migliori riferimenti su questo fatto sono stati pubblicati da Dyn:

Un semplice programma che ho scritto per interrogare i primi 1000 siti Web (secondo Alexa) mostra 212 hit con un valore TTL di 300 (5 minuti), 192 risultati con un TTL di 3600 (1 ora), 116 risultati con un TTL di 600 (10 minuti) e 79 risultati con un TTL di 86400. Il resto dei risultati ha avuto risultati negli anni '50 e meno , che va da un TTL di 5 (1 hit) a un TTL di 864000 (1 hit).

Questa è una citazione di Ben Anderson, ricercatore e redattore tecnico di Dyn.

Guardando questi risultati puoi vedere che in una piccola quantità se il tuo browser sta invalidando la cache DNS. E la risoluzione DNS inizia a fallire.

Riferimento


PS: Per aggiungere la beffa al danno, l'articolo collegato di Dyn sostiene che la cache DNS del browser è una brutta cosa.

symcbean
2016-10-23 22:18:33 UTC
view on stackexchange narkive permalink

I browser non memorizzano nella cache i record DNS

Questa è una funzione del resolver che è un'aggiunta allo stack di rete.

DNS Il caching non aiuterebbe molto

I dispositivi schiavi mirai sono in grado di eseguire un numero qualsiasi di attacchi diversi come indicato dal CnC. Nel caso sia dell'attacco alla sicurezza di Krebbs che a DYN, gli aggressori hanno semplicemente riempito la loro larghezza di banda con il traffico, in realtà non importava quale fosse il traffico. Sebbene il DNS possa essere sfruttato per un attacco di amplificazione indiretto, è mia opinione che ciò non si applichi nel caso degli attacchi a Krebss e DYN. Il DNS è stato utilizzato in quest'ultimo attacco in quanto rendeva impraticabile filtrare il traffico reale dal traffico di attacco.

Se i record DNS sono stati memorizzati nella cache altrove accessibili agli utenti normali (nelle cache DNS, non nei browser), allora l'attacco avrebbe avuto un impatto molto minore, tuttavia il modello di business DYN si rivolge principalmente all'hosting DNS e alla fornitura all'utente finale. Quest'ultimo sarebbe stato interrotto a prescindere. La presenza dei dati nelle cache intermedie / altri fornitori di utenti finali è basata sul volume di traffico e sul tempo di scadenza (è mia esperienza che i tempi di scadenza inferiori a 2 ore sono inefficaci). Inoltre, un sito ad alto traffico avrà più punti di presenza geografici insieme a più record A in ogni POP: gli indirizzi multicast sono costosi e (a causa di edns-client-subnet) non sono richiesti oltre al DNS (in assenza di attacchi DOS ).

Non lo fanno?Forse almeno Chrome memorizza nella cache i record DNS?O forse "cache" non è esattamente la parola giusta per quello che fanno?chrome: // net-internals / # dns
Cache, cache ovunque http://superuser.com/questions/203674/how-to-clear-flush-the-dns-cache-in-google-chrome
Alnitak
2016-10-25 15:27:57 UTC
view on stackexchange narkive permalink

Il DNS è stato progettato principalmente per fornire una mappatura stabile (e vagamente coerente ) dei nomi agli indirizzi. Ai bei vecchi tempi, il Time To Live (TTL) sui record DNS era in genere compreso tra 3600 e 86400 secondi. Ci si aspettava che chiunque chiedesse un particolare record avresti sempre ottenuto la stessa risposta .

Alcune persone hanno poi pensato che se avessero usato TTL veramente brevi avrebbero potuto eseguire stupidi trucchi DNS ® che costringe il DNS a fare cose che non era previsto .

Ad esempio, alcune appliance di bilanciamento del carico hanno server DNS integrati che monitorano l'integrità del back- end server e forniscono una risposta diversa a ciascuna richiesta in entrata in base al loro carico corrente.

Alcuni operatori esaminano l'indirizzo di origine della query in arrivo e inviano risposte diverse per reindirizzare il client al cluster di applicazioni più vicino (noto anche come "bilanciamento del carico del server globale").

A proposito dell'attacco della scorsa settimana a Dyn: una buona pratica DNS era che distribuivi i tuoi server DNS autorevoli su più reti (e / o operatori) in modo che un attacco o un'interruzione su uno ti lascerebbe comunque con il DNS in esecuzione.

Tuttavia i "trucchi" sopra menzionati implicano algoritmi e "intelligenza" che non sono inerenti al DNS stesso così che diventa molto difficile (se non impossibile) fare affidamento sulla resilienza incorporata del DNS. Un sistema che genera risposte sintetizzate invece di utilizzare un file di zona non può essere condiviso tra più operatori utilizzando AXFR.

v7d8dpo4
2016-10-23 20:36:45 UTC
view on stackexchange narkive permalink

La cache DNS mitiga gli attacchi DDOS ai provider DNS, ma la cache DOVREBBE durare solo per un breve periodo.

Il tempo massimo di memorizzazione nella cache di un record di risorse è specificato dal server, chiamato TTL.

Il significato del campo TTL è un limite di tempo per quanto tempo un RR può essere conservato in una cache. Questo limite non si applica ai dati autorevoli nelle zone; è anche scaduto, ma a causa dei criteri di aggiornamento per la zona. Il TTL viene assegnato dall'amministratore per la zona in cui hanno origine i dati. Mentre TTL brevi possono essere utilizzati per ridurre al minimo la memorizzazione nella cache e un TTL zero impedisce la memorizzazione nella cache, la realtà delle prestazioni di Internet suggerisce che questi tempi dovrebbero essere dell'ordine dei giorni per l'host tipico. Se è possibile prevedere una modifica, il TTL può essere ridotto prima della modifica per ridurre al minimo l'incongruenza durante la modifica, e quindi riportato al valore precedente dopo la modifica.

(tratto da RFC 1034)

Il server può dire al risolutore che il record può essere memorizzato nella cache per oltre 68 anni, che di solito è abbastanza a lungo per riparare un attacco. Ma i server di solito non lo fanno. I grandi siti web non vogliono che un guasto nella rete li influenzi per molto tempo. Un modo per farlo è impostare il TTL dei record di risorse su un tempo relativamente breve, ad esempio 5 minuti. In questo modo, possono modificare il record DNS nel caso in cui alcuni dei loro server non funzionino. E i client che interrogano il RR ogni 5 minuti non sono molto sovraccarichi che interrogarlo solo una volta.

Inoltre, le applicazioni di solito memorizzano il RR nella RAM. Quindi i record vengono persi una volta riavviata l'applicazione. (Ci sono eccezioni. Ad esempio, puoi scaricare la cache di BIND nel filesystem.)

Voglio menzionare Namecoin qui. Memorizza i nomi di dominio sul disco, in una blockchain. Se il tuo sito web utilizza un dominio .bit, è improbabile che vada giù solo a causa del provider DNS.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...