Università degli Studi G. dAnnunzio 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 Larchitettura 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 nellesempio il name server locale mette in cache i name server di it, unich.it e sci.unich.it una richiesta per 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 lautorità 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 System call Resolvers response Refreshes Recursive query References Response User program Name resolver Local machine Primary name server Cache Name server Name server Iterative query Response Iterative query 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 linganno, 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: Lutente 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 nellimplementazione 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 lautenticità e lintegrità dei dati Dns – DS: fornisce un meccanismo per delegare una relazione di trust a chiavi pubbliche di terze parti Il DNS sicuro necessita di uninfrastruttura 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 dallentità che si ritiene ne abbia lautorità??? Integrità: I dati ricevuti sono i medesimi che sono stati pubblicati??? La crittografia a chiave asimmetrica risponde alle seguenti esigenze: – Verificare lintegrità e lautenticità dei dati attraverso le signatures – Verificare lautenticità delle signatures Lintegrità e lautenticità 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 – Lautenticità 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 TTL class type rdata – RRSet: RRs con gli stessi name, class e type – A A 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 dellultimo nome si riaggancia al primo nome nella zona (wrapping around) N*32 bits Esempio: – 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 DNSSEC FILE DI ZONA
DNSSEC chain of trust host.foo.com. ? Riceve lRRs: A, SIG, KEY KEY per com. ? Riceve KEY, SIG RRs of com. La chiave pubblica del dominio radice è ritenuta fidata a priori da tutti i name server!! Root name server dellalbero DNS com. Local name server foo.com. name server host.foo.com it. unich.it.
DNS cache poisoning attack 1. anyhost.evil.com? 2. anyhost.evil.com? 3. Memorizza query ID 4. anyhost.evil.com=A.B.C.E anyhost.evil.com=A.B.C.E 8. Inondare il Name Server con false risposte 9. A.B.C.D Connessione errata allhost attaccante 11.Risposta errata dalla cache evil.com ns.evil.com Host Attaccante any.broker.com A.B.C.D broker.com cache ns.broker.com bank.com ns.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 nellalbero in cui ci si può fidare.
Osservazioni su DNSSEC Nel DNS, la crittografia è usata per lautenticazione e lintegrità dei dati, non per la confidenzialità Lattenzione 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 Lattacco non ha effetto se lattaccante non può inviare pacchetti di richieste al name server Se si vuole far girare un name server ricorsivo, limitare laccesso 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) Lassenza 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, Internet Draft "Secret Key Transaction Signatures for DNS (TSIG)", Paul Vixie (Ed.) (ISC), Olafur Gudmundsson (NAILabs), Donald Eastlake (IBM), Brian Wellington (NAILabs), July Brian Wellington, "An Introduction to Domain Name System Security", TIS Labs, January Paul Albitz, Cricket Liu, "DNS and BIND", Third Edition, O'Reilly, Sebastopol, CA, 1998, ISBN Le RFC utilizzate, sono di seguito elencate e sono disponibili all'indirizzo RFC 1034 "Domain Name System - Concepts and Facilities", Paul Mockapetris, ISI, November 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 RFC 2535 "Domain Name System Security Extensions", Donald Eastlake, IBM, March RFC 2536 "DSA KEYs and SIGs in the Domain Name System (DNS)", Donald Eastlake, IBM, March RFC 2537 "RSA/MD5 KEYs and SIGs in the Domain Name System (DNS)", Donald Eastlake, IBM, March RFC 2538 "Storing Certificates in the Domain Name System", Donald Eastlake, IBM, Olafur Gudmundsson, TIS Labs, March RFC 2539 "Storage of Diffie-Hellman Keys in the Domain Name System (DNS)", Donald Eastlake, IBM, March RFC 2541 "DNS Security Operational Considerations", Donald Eastlake, IBM, March 1999.