Università degli Studi “G. d’Annunzio” Chieti-Pescara Corso di Laurea Specialistica in Economia Informatica Seminario per il corso di “Reti di calcolatori e sicurezza” Prof. Stefano Bistarelli Realizzato da: fabrizio rossi Percorso • Il DNS •I problemi relativi alla sicurezza •L’architettura DNSSEC DNS Il Domain Name System implementa uno spazio dei nomi gerarchici per le interreti TCP/IP utilizzato su Internet E’ utilizzato da molte altre applicazioni e protocolli che interagiscono con la comunicazione in un interrete (Web browsing, Ftp, Telnet, utility TCP/IP su internet) basato su un database distribuito. Il DNS provvede a: • specificare la sintassi dei nomi e le regole per delegare l ’autorità sulle zone • implementare il sistema di calcolo distribuito per convertire nomi in indirizzi e viceversa CACHE Ogni name server mantiene in una cache tutte le corrispondenze tra nomi e indirizzi di cui viene a conoscenza • nell’esempio il name server locale mette in cache i name server di it, unich.it e sci.unich.it • una richiesta per www.sci.unich.it viene risolta direttamente dal name server locale Ogni corrispondenza viene mantenuta nella cache per un periodo fissato • il tempo di validità è fissato dal name server che ha l’autorità su quel nome nel messaggio inviato agli altri name server • per default il timeout è 2 giorni PARAMETRI IDENTIFICATION: consente di far corrispondere le risposte alle richieste PARAMETER: contiene vari flag per specificare il tipo di operazione richiesta: • Richiesta/risposta • Corrispondenza indirizzo/nome o viceversa • Messaggio troncato • Risposta proveniente dalla autorità o indiretta • Modalità ricorsiva disponibile • Modalità ricorsiva richiesta Gli altri campi specificano quanti record sono contenuti nelle quattro sezioni del messaggio. Processo di risoluzione dei nomi Refreshes System call User program Recursive query Name resolver Response Primary name server Cache References Resolver’s response Local machine Iterative query Name server Iterative query Response Name server Referral Perché la Sicurezza del DNS è importante? Il DNS è utilizzato radicalmente da applicazioni Internet; sorgono quindi i problemi di sicurezza DNS: •I name server possono essere “truffati” facilmente e sono vulnerabili a molti tipi di attacchi (DoS, buffer overrun, replay). •I Resolver possono essere indotti a “credere” in informazioni false. •Misure di sicurezza (per esempio, ACLs) e altri meccanismi, rendono l’inganno, più difficile da compiere, ma non impossibile! Destinazione errata indotta: Credere in false informazioni Si supponga il seguente scenario: •Un utente vuole connettersi ad un host A mediante un Telnet Client •Il Telnet Client chiede attraverso un resolver il Name Server locale per risolvere il nome A in un indirizzo IP. •Esso riceve una informazione falsa e inizia una connessione TCP al Server Telnet sulla macchina A(almeno così crede). •L'utente manda la sua login e password all'indirizzo falso. •Ora la connessione salta, e l'utente ritenta l'intera procedura questa volta al corretto indirizzo IP dell'host A. Di conseguenza: L’utente può ignorare ciò che è appena successo, ma l'attaccante malizioso che si è spacciato con il nome dell'host A, ha ora il controllo della login e della password dell'utente. • Il problema è che i Router attuali non hanno la capacità di respingere i pacchetti con falsi indirizzi sorgenti. • L'attaccante può instradare pacchetti a chiunque e può indurre a farli considerare come pacchetti provenienti da un host fidato. • L'attaccante prevede il momento in cui viene mandata una query e inizia ad inondare il Resolver con le sue false risposte. • Con un Firewall per la rete dell'utente, il resolver non sarebbe raggiungibile dal mondo esterno, ma il suo Local Name Server si. • Attenendosi a queste assunzioni, osserviamo che parallelamente, c'è la possibilità di compiere un attacco Denial of Service (DoS) • Nel caso di un tale attacco, se il Name Server può essere ingannato e l'host dell'attaccante può spacciarsi per il vero name server, allora può maliziosamente imporre che alcuni nomi nel dominio, non esistano. Perché DNSSEC ? •DNS NON è sicuro –Vulnerabilità pubblicamente conosciute –DNS è un servizio di grande importanza •DNSSEC protegge dallo spoofing e dalla alterazione dei dati del traffico DNS DNS: Vulnerabilità Protocollo • I dati Dns trasmessi tra il name-server master, il forwarder ed il resolver possono essere contraffatti (spoofing) e corrotti. • Il protocollo Dns non consente di controllare la validità dei dati trasmessi dal protocollo stesso – Bugs nell’implementazione del protocollo sul resolver(ID di transazione prevedibile) – Cache-Pollution dei forwarders può causare danni per un certo periodo di tempo (TTL) – Dati Dns corrotti possono finire nella cache e rimanervi a lungo • Impossibilità per il name-server slave (secondary) di accertare se ha instaurato la comunicazione con il giusto master (primary) server DNSSEC: Soluzioni • DNSSec protegge contro il data spoofing ed il data corruption – TSIG/SIG0: fornisce un meccanismo per autenticare la comunicazione tra server DNS – DNSKEY/RRSIG/NSEC: fornisce un meccanismo per stabilire l’autenticità e l’integrità dei dati Dns – DS: fornisce un meccanismo per delegare una relazione di trust a chiavi pubbliche di terze parti • Il DNS sicuro necessita di un’infrastruttura a chiave pubblica, tuttavia non stiamo parlando di una vera e propria PKI. DNSSEC: RFC • RFC 3833 – A threat analisys of the Domain Name System • RFC 4033 – DNS Security Introduction and Requirements • RFC 4034 – Resource Records for the DNS Security Extensions • RFC 4035 – Protocol Modifications for the DNS Security Extensions • RFC 4398 – Storing certificates in teh Domain Name System Autenticità ed Integrità dei Dati • Autenticità: I dati sono pubblicati dall’entità che si ritiene ne abbia l’autorità??? • Integrità: I dati ricevuti sono i medesimi che sono stati pubblicati??? • La crittografia a chiave asimmetrica risponde alle seguenti esigenze: – Verificare l’integrità e l’autenticità dei dati attraverso le signatures – Verificare l’autenticità delle signatures • L’integrità e l’autenticità dei dati ottenuta firmando i RRs con la chiave privata • La chiave pubblica DNSKEY usata per verificare i RRSIGs • I nodi ‘figlio’ firmano le proprie zone con la propria chiave privata – L’autenticità della chiave è stabilita dal parent attraverso la coppia signature/checksum Resource Records •3 RRs correlati alla cifratura a chiave asimmetrica – RRSIG -> signature su RRSet ottenuta usando la chiave privata – DNSKEY -> Chiave pubblica, necessaria per verificare un RRSIG – DS -> Delegation Signer: puntatore per la costruzione di catene di autenticazione •1 RR per la consistenza interna – NSEC -> Indica quale nome sia il successivo nella zona RRs e RRSets • Resource Record – Name – www.example.net. TTL 7200 class IN type rdata A 192.168.10.3 IN A 192.168.10.3 • RRSet: RRs con gli stessi name, class e type – www.example.net. 7200 A 10.0.0.3 A 172.25.215.2 • Gli RRSets sono firmati, ma non lo sono i singoli RRs che lo compongono NSEC RDATA • Punta al nome del dominio successivo nella zona – Elenca anche quali sono tutti i RRs esistenti per il nome di dominio in questione – Il record NSEC dell’ultimo nome si riaggancia al primo nome nella zona (wrapping around) • N*32 bits • Esempio: – www.example.net. 3600 IN NSEC example.net.A RRSIG NSEC Sicurezza di una Zona 1. Generazione di una keypair – Includere la chiave pubblica (DNSKEY) nel file di zona 2. Firma della zona – Inserimento di: • Records NSEC • Records RRSIG (signature su ogni RRSet) • Records DS (opzionali) DNS FILE DI ZONA DNSSEC DNSSEC chain of trust La chiave pubblica del dominio radice è ritenuta fidata a priori da tutti i name server!! Root name server dell’albero DNS com. name server it. host.foo.com. ? unich.it. Local name server foo.com. name server Riceve l’RRs: A, SIG, KEY host.foo.com. 131.195.21.25 DNS cache poisoning attack broker.com evil.com 2. anyhost.evil.com? 1. anyhost.evil.com? ns.evil.com 5. anyhost.evil.com=A.B.C.E 3. Memorizza query ID ns.broker.com cache 9.www.bank.com= A.B.C.D 4. anyhost.evil.com=A.B.C.E Host Attaccante A.B.C.D 6. www.bank.com? 8. www.bank.com=A.B.C.D Inondare il Name Server con false risposte 10.www.bank.com? any.broker.com 11.Risposta errata dalla cache 12. Connessione errata all’host attaccante bank.com ns.bank.com 7. www.bank.com Ogni KEY RR è firmato con la chiave del padre di zona. Per verificare il SIG RR di una KEY, il resolver deve recuperare informazioni sul padre delle zone. Si può avere fiducia nella chiave pubblica? Il processo di autenticazione è basato sul fatto che la chiave pubblica Root è sicura dal momento che è preconfigurata nel resolver. La chiave pubblica (recuperata nel KEY RR) è anche firmata, ma dal dominio padre (ad esempio com) con la sua chiave privata. Per verificarla bisogna recuperare anche la chiave pubblica di com che sarà firmata dalla chiave privata di root. Dopo la verifica della chiave pubblica di com (con la chiave pubblica di root in nostro possesso) possiamo essere sicuri della validità della chiave iniziale ottenuta. Un resolver quindi dovrebbe “imparare” a fidarsi delle chiavi verificando le loro firme passando attraverso queste catene di KEY e SIG RR fino ad un punto nell’albero in cui ci si può fidare. Osservazioni su DNSSEC • Nel DNS, la crittografia è usata per l’autenticazione e l’integrità dei dati, non per la confidenzialità • L’attenzione deve essere spostata alla generazione delle chiavi, memorizzazione delle chiavi, e al life time (RFC 2541) • La dimensione dei file di zona cresce drammaticamente • Aumento dei dati trasferiti, dei messaggi (quindi tcp e non udp) e del numero di computazioni (cicli cpu) • La responsabilità degli amministratori aumenta! SOLUZIONI A BREVE TERMINE 1. • • • • Massimizzare il livello di casualità Molte implementazioni usano già numeri di transazione casuali La porta 53 è assegnata da IANA (Internet Assigned Numbers Authority) al DNS. Comunque è solo richiesto che la porta 53 sia quella di destinazione, non la porta sorgente Le varie patches rilasciate negli ultimi mesi lavorano in tal senso (randomizzare la porta sorgente) per i server che adottano una tecnica ricorsiva. 2. Disabilitare i name server ricorsivi aperti • L’attacco non ha effetto se l’attaccante non può inviare pacchetti di richieste al name server • Se si vuole far girare un name server ricorsivo, limitare l’accesso a soli quei computer che ne hanno effettivamente bisogno 3. Usare lettere maiuscole/minuscole per aumentare la casualità • E’ ancora in discussione (non ancora implementato). Conclusioni • Le Estensioni per la sicurezza provvedono: • Protezione dei trasferimenti su Internet • I dati sono firmati con chiavi pubbliche (RRSIG, KEY) • L’assenza di dati DNS è notificata (NSEC) • Protezione per i traferimenti DNS locali • I messaggi fra name server e resolver sono autenticati (TSIG) • Trasferimenti di zona fra name server primari e secondari • Infrastruttura a chiave pubblica • Distribuzione di chiavi pubbliche per altri protocolli di sicurezza (KEY) Bibliografia Douglas E. Comer, "Internetworking con TCP/IP", Addison-Wesley, 2002. Internet Draft "Secret Key Transaction Signatures for DNS (TSIG)", Paul Vixie (Ed.) (ISC), Olafur Gudmundsson (NAILabs), Donald Eastlake (IBM), Brian Wellington (NAILabs), July 1999. Brian Wellington, "An Introduction to Domain Name System Security", TIS Labs, January 1999. Paul Albitz, Cricket Liu, "DNS and BIND", Third Edition, O'Reilly, Sebastopol, CA, 1998, ISBN 1-56592-512-2. Le RFC utilizzate, sono di seguito elencate e sono disponibili all'indirizzo http://www.dnssec.net/rfc.php RFC 1034 "Domain Name System - Concepts and Facilities", Paul Mockapetris, ISI, November 1987. RFC 1035 "Domain Name System - Implementation and Specification", Paul Mockapetris, ISI, November 1987. RFC 2065 "Domain Name System Security Extensions", Donald Eastlake, IBM, C. Kaufman, January 1997. RFC 2535 "Domain Name System Security Extensions", Donald Eastlake, IBM, March 1999. RFC 2536 "DSA KEYs and SIGs in the Domain Name System (DNS)", Donald Eastlake, IBM, March 1999. RFC 2537 "RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)", Donald Eastlake, IBM, March 1999. RFC 2538 "Storing Certificates in the Domain Name System", Donald Eastlake, IBM, Olafur Gudmundsson, TIS Labs, March 1999. RFC 2539 "Storage of Diffie-Hellman Keys in the Domain Name System (DNS)", Donald Eastlake, IBM, March 1999. RFC 2541 "DNS Security Operational Considerations", Donald Eastlake, IBM, March 1999.