Autenticazione in Ambienti Distribuiti: protocollo LDAP
Transcript
Autenticazione in Ambienti Distribuiti: protocollo LDAP
Autenticazione in Ambienti Distribuiti: protocollo LDAP Prefazione -1 • Con la nascita ed evoluzione di Internet e con il notevole incremento dei suoi utenti, sono sorti problemi di sicurezza. – La suite di protocolli TCP/IP non prevede nessun meccanismo che garantisce confidenzialità e privacy tra gli utenti. • Gli scenari e le applicazioni in cui è richiesta confidenzialità e privacy delle connessioni sull'inter-rete sono molteplici. Tesina per il corso di Sicurezza su Reti a cura di: Salvatore Moscariello Rocco Pecoraro Giovanni Russo – Accedere in maniera privata ad una directory remota dislocata su di un server è uno di questi possibili scenari. Autenticazione in Ambienti Distribuiti: protocollo LDAP Prefazione -2 • Introdurremo il protocollo LDAP nato per gestire le directory in un intero dominio internet. – Tratteremo brevemente i dettagli relativi alla sua evoluzione. – Daremo successivamente le nozioni di base dei protocolli che LDAP coinvolge nella sua specifica. – Ci soffermeremo sui vari scenari che si vengono a creare per accedere ad una directory remota e mostreremo le varie politiche e meccanismi di sicurezza adottati da LDAP. 2 Introduzione Cos’è una directory? Cos’è LDAP? Protocolli Metodi di autenticazione in LDAP Autenticazione in Ambienti Distribuiti: protocollo LDAP 3 Cos’è una directory? Servizi locali e servizi globali • Database specializzato per la lettura e la ricerca. • Possibilità di contenere informazioni basate su • Alcuni servizi di directory sono locali. attributi o descrizioni. • Altri servizi sono globali. • Supporto di sofisticate capacità di ricerca • – Forniscono servizi ad un contesto più ampio, quale ad esempio l’intera Internet. attraverso dei filtri. Risposte veloci ad operazioni di consultazione o di ricerca su volumi di dati enormi. Autenticazione in Ambienti Distribuiti: protocollo LDAP – Forniscono servizi ad un ristretto contesto, ad esempio una singola macchina. • I servizi globali sono distribuiti. – I dati contenuti sono memorizzati in diverse macchine, ognuna delle quali provvede al servizio di directory. 5 Autenticazione in Ambienti Distribuiti: protocollo LDAP 6 1 Cos’è LDAP? Prima di LDAP • LDAP è un acronimo che sta per • • LIGHTWEIGHT DIRECTORY ACCESS PROTOCOL. È un protocollo leggero per accedere ai servizi di directory, basati sul protocollo X.500. Opera su TCP/IP o su altre connessioni orientate ai servizi di trasferimento. – Dettagli definiti nella RFC 2251. Autenticazione in Ambienti Distribuiti: protocollo LDAP 7 • Prima di LDAP, per accedere a dati memorizzati in una directory X.500 un client doveva supportare il DAP (DIRECTORY ACCESS PROTOCOL). – Imponeva una notevole penalizzazione delle risorse in gioco poiché richiedeva l'utilizzo della specifica OSI (Open System Interconnection). • LDAP nasce proprio per sostituire DAP. Autenticazione in Ambienti Distribuiti: protocollo LDAP 8 Tipologie delle informazioni Struttura delle informazioni • Il modello di informazioni di LDAP è basato sulle • Le entry di una directory sono strutturate come entry. in una struttura gerarchica di un albero. • La entry che rappresenta il paese si trova alla – Collezioni di attributi che hanno un unico nome globale: il Distinguished Name (DN). radice dell’albero. • Ogni attributo della entry ha un tipo ed uno o • Al di sotto di essa ci sono quelle che più valori. rappresentano stati e organizzazioni nazionali. – I tipi sono stringhe mnemoniche, come cn per i common name, oppure mail per gli indirizzi di posta elettronica. Autenticazione in Ambienti Distribuiti: protocollo LDAP – Seguono poi altri tipi di entry che possono rappresentare organizzazioni, persone, stampanti, documenti, ecc. 9 LDAP directory tree con nomi tradizionali Autenticazione in Ambienti Distribuiti: protocollo LDAP Autenticazione in Ambienti Distribuiti: protocollo LDAP 10 LDAP directory tree con nomi usati in Internet 11 Autenticazione in Ambienti Distribuiti: protocollo LDAP 12 2 Come si accede alle informazioni Protezione delle informazioni • Il protocollo LDAP definisce servizi per accedere • Molti servizi di directory non prevedono • • LDAP include un meccanismo nel quale un client • e aggiornare una directory. L’operazione più usata è quella di ricerca di informazioni all’interno della directory. LDAP fornisce un efficiente algoritmo di ricerca. Autenticazione in Ambienti Distribuiti: protocollo LDAP protezione per i dati e le informazioni. • si può autenticare, o provare la sua identità ad un directory server. LDAP consente servizi di privacy e di integrità delle informazioni. Autenticazione in Ambienti Distribuiti: protocollo LDAP 13 Funzionamento di LDAP -1 Funzionamento di LDAP -2 • Il servizio di directory LDAP è basato su un • Il client si connette al server e gli chiede • • Il server replica con risposte precise e/o con un modello client – server. Uno o più server LDAP contengono i dati che servono a costruire l’albero delle informazioni di una directory, il DIT (Directory Information Tree). 15 Schema di funzionamento con un server X.500 X .500 Autenticazione in Ambienti Distribuiti: protocollo LDAP 14 informazioni. puntatore ad eventuali informazioni addizionali. • Il client LDAP può comunicare sia con un server X.500 sia con un server LDAP. Autenticazione in Ambienti Distribuiti: protocollo LDAP 16 Schema di funzionamento con un server LDAP 17 Autenticazione in Ambienti Distribuiti: protocollo LDAP 18 3 LDAP versione 2 LDAP versione 3 • LDAP con la versione 2 diventa un standard di • Con questa versione LDAP viene specificato Internet nel 1995. – Era stata largamente implementata. • In questa versione viene introdotto il concetto di Bind Operation, operazione principale per fare comunicare client e server LDAP. – La Bind Operation è usata per stabilire un sessione tra il client e server che permette al client di autenticarsi sul server. Autenticazione in Ambienti Distribuiti: protocollo LDAP 19 Introduzione • • direttamente su protocolli di trasporto come TCP. Introdotti i meccanismi SASL per rendere i servizi offerti dal server più sicuri. Possibilità di estendere il protocollo introducendo nuove operazioni. – Implementata nel 1997. Autenticazione in Ambienti Distribuiti: protocollo LDAP 20 Introduzione ai protocolli Protocolli • È utile introdurre i concetti basilari di alcuni Introduzione SASL TLS OTP DIGEST-- MD5 DIGEST OTP SASL protocolli utilizzati in LDAP. • Dei protocolli SASL, TLS e OTP illustreremo solo le caratteristiche principali. • Tratteremo in maniera più dettagliata i protocolli DIGEST-MD5 e OTP SASL. Metodi di autenticazione in LDAP Autenticazione in Ambienti Distribuiti: protocollo LDAP 22 Protocollo SASL: descrizione Protocollo SASL: meccanismi • Simple Authentication and Security Layer è • I meccanismi SASL sono identificati da stringhe, • un metodo per includere l’autenticazione a supporto di protocolli basati sulla connessione. Include meccanismi per identificare e autenticare un utente su un server inizializza un protocollo di autenticazione. – Presenti meccanismi opzionali per negoziare un livello sicuro ch e assicura confidenzialità. – Protocollo descritto nella RFC 2222. Autenticazione in Ambienti Distribuiti: protocollo LDAP lunghe da 1 a 20 caratteri. • Se supporta questi meccanismi, un server, 23 – Consiste in una serie di challenges e risposte del client. – Le challenges e le risposte sono definite per ogni meccanismo come token binari di arbitraria lunghezza. Autenticazione in Ambienti Distribuiti: protocollo LDAP 24 4 Protocollo SASL: funzionamento -1 Protocollo SASL: funzionamento -2 • Un server invia una challenge, indica il • Durante l’autenticazione, il meccanismo • fallimento, o che l’autenticazione è completata dopo la ricezione di un comando di autenticazione o di una risposta di un client. Dopo la ricezione di una challenge, un client può rilasciare una risposta o abortire l’autenticazione. Autenticazione in Ambienti Distribuiti: protocollo LDAP 25 Protocollo TLS: descrizione • trasmette una authorization identity dal client al server. Negozia poi l’uso di specifici meccanismi per un livello di sicurezza. – I meccanismi definiti in SASL sono: Kerberos version 4, GSSAPI mechanism, S/Key mechanism, External mechanism. Autenticazione in Ambienti Distribuiti: protocollo LDAP TLS Record Protocol • Lo scopo di TLS è di garantire privacy e integrità • Il TLS Record Protocol garantisce connessioni • • La connessione è privata. • dei dati tra due applicazioni che comunicano. È composto da due livelli: TLS Record Protocol e TLS Handshake Protocol. Al livello più basso il TLS si allaccia con un protocollo di trasporto, e con il TLS Record Protocol. sicure che hanno due proprietà basilari. – Per la cifratura è utilizzata la crittografia simmetrica (ad esempio DES, RC4, ecc.). • La connessione è affidabile. – I Messaggi di trasporto includono un messaggio da integrità usando MAC. – Funzioni hash sicure sono usate per il calcolo del MAC. – Descritto nella RFC 2246. Autenticazione in Ambienti Distribuiti: protocollo LDAP 27 Autenticazione in Ambienti Distribuiti: protocollo LDAP TLS Handshake Protocol -1 TLS Handshake Protocol -2 • IL TLS Record Protocol è incapsulato da • L’identità dei peer può essere autenticata • protocolli da protocolli di livello più alto. Uno di questi protocolli è il TLS Handshake Protocol. 28 usando la crittografia asimmetrica, o a chiavi pubbliche – Ad esempio RSA, DSS, ecc. Può essere opzionale. • La negoziazione di un segreto condiviso è sicura. – Permette al server e al client di autenticarsi e negoziare un algoritmo di cifratura e le eventuali chiavi, prima che vengano trasmessi eventuali dati. – La negoziazione di segreti non deve permettere ad eventuali attaccanti di impersonare uno dei peer. • Il TLS Handshake Protocol dà garanzia di • La negoziazione è affidabile. connessioni sicure che hanno tre proprietà basilari. Autenticazione in Ambienti Distribuiti: protocollo LDAP 26 – Nessun attaccante può modificare la comunicazione delle parti che effettuano la negoziazione. 29 Autenticazione in Ambienti Distribuiti: protocollo LDAP 30 5 One--Time Password System One OTP: concetti base • Utilizza una pass-phrase segreta per generare • Racchiude meccanismi per l'autenticazione • relativa ad accessi a sistemi che richiedono un'autenticazione sicura rispetto ad attacchi passivi basati sul replay delle password. One-time-password (OTP) è stato progettato per evitare l’ascolto indesiderato delle connessioni. • • – Descritto nella RFC 1938. Autenticazione in Ambienti Distribuiti: protocollo LDAP una sequenza di password utilizzate una sola volta. La pass-phrase non attraversa mai la rete ed è quindi non vulnerabile agli attacchi di replay. Ci sono due entità che sono coinvolte in un'operazione di one-time password: il generatore e il server. Autenticazione in Ambienti Distribuiti: protocollo LDAP 31 OTP: generatore e server -1 OTP: generatore e server -2 • Il generatore produce l'appropriata OTP dalla • Il generatore OTP crea una OTP con iterazioni • • pass-phrase dell'utente e consente di vedere le informazioni contenute nella challenge inviata dal server. Il server deve inviare una challenge che include i parametri per il generatore e deve verificare la OTP ricevuta dal client. Autenticazione in Ambienti Distribuiti: protocollo LDAP 33 multiple, di una funzione hash sicura, a partire dal valore seed contenuto nella challenge ricevuta e dalla pass-phrase. Dopo che l'autenticazione è avvenuta con successo, il numero delle iterazioni della funzione hash è decrementato di uno. – Questo permette di generare una sequenza di password unica. Autenticazione in Ambienti Distribuiti: protocollo LDAP OTP: generatore e server -3 Generazione di una OTP • Il server verifica l'OTP ricevuta computando i • La generazione di una OTP consta di un passo • valori di una precedente autenticazione, che ha memorizzato, con la funzione hash e confronta i risultati. La sicurezza del sistema OTP è basata sulla difficoltà di invertibilità delle funzioni hash. – Le funzioni hash supportate da questo protocollo sono MD4, MD5 e SHA. Autenticazione in Ambienti Distribuiti: protocollo LDAP 35 32 34 iniziale in cui tutti gli input sono combinati. • Un secondo passo dove la funzione hash è iterata un numero specifico di volte • Un terzo passo dove i 64 bit prodotti dalla funzione hash sono convertiti in parole (tramite un dizionario) comprensibili all'utente con una funzione di output. Autenticazione in Ambienti Distribuiti: protocollo LDAP 36 6 Digest Authentication come meccanismo SASL. Passo Uno. Passo Due. DIGEST response • Digest può essere usato come un meccanismo di • A questo punto il client prende nota del digest challenge e risponde al server con una stringa strutturata e costruita secondo le regole del digest response. Il valore del campo response, formato da 32 cifre esadecimali con caratteri lower case sarà: autenticazione per il protocollo SASL. – Argomento della RFC 2831. • Se il client non si è ancora autenticato al server, • deve anzitutto effettuare l’autenticazione iniziale. Il server inizia mandando un challenge. • response -value = HEX( KD ( HEX(H(A 1 )), { nonce-value, ":" nc-value, ":", cnonce-value, ":", qop-value, ":", HEX(H(A 2 )) })) Se il campo authzid è presente, allora A1 è uguale a: A 1 = { H( { username-value, ":", realm -value, ":", passwd } ),":", nonce-value, ":", cnonce-value, ":", authzid-value } – I dati inclusi in questo challenge contengono alcune stringe strutturate secondo le regole della digest challenge. Autenticazione in Ambienti Distribuiti: protocollo LDAP DIGEST response: response response--value 38 Passo Tre. Verifica. • Il server a questo punto riceve e verifica la • Il campo response-value sarà: Se il campo authzid non è presente, allora A1 è uguale a: A 1 = { H( { username-value, ":", realm -value, ":", passwd } ), ":", nonce-value, ":", cnonce-value } dove passwd = *OCTET Se il valore del campo qop è auth, allora A2 è uguale a: A 2 = { "AUTHENTICATE:", digest-uri-value } Se il valore del campo qop è auth-int oppure auth-conf allora A2 è: A 2 = { "AUTHENTICATE:", digest-uri-value, ":00000000000000000000000000000000" } Autenticazione in Ambienti Distribuiti: protocollo LDAP Autenticazione in Ambienti Distribuiti: protocollo LDAP 37 digest response. Verifica anzitutto che il valore di nonce-count è “00000001” e manda un messaggio strutturato come segue: response-auth = " rspauth" "=" response-value Il response-value è calcolato come descritto al passo precedente, usando i valori mandati al passo due, eccetto che se il valore di qop è auth, allora A2 è: A 2 = { ":", digest-uri-value } E se qop è auth-int oppure auth-conf allora A2 vale: A 2 = { ":", digest-uri-value, ":00000000000000000000000000000000" } Autenticazione in Ambienti Distribuiti: protocollo LDAP 39 One -Time OneTime--Password per il meccanismo SASL Profili OTP per SASL • I meccanismi OTP SASL, sostituiscono i • Meccanismi di SASL offrono un modo formale meccanismi SKEY SASL. – Sono descritti nella RFC 2444. • OTP è una buona scelta per scenari dove il client non è fidato. – Darà una sola opportunità a client maliziosi di accedere a dei servizi a nome di un altro utente. • 40 per integrare OTP all’interno dei protocolli dove è supportato SASL includendo IMAP, ACAP, POP3 e LDAPv3. OTP e OTP extended response offrono un certo numero di opzioni. – Per un’ autenticazione con successo, il client e il server hanno bisogno di un set di opzioni compatibili. • OTP è una buona scelta per situazioni dove vengono effettuate login interattive sul server. Autenticazione in Ambienti Distribuiti: protocollo LDAP 41 Autenticazione in Ambienti Distribuiti: protocollo LDAP 42 7 Regole per il meccanismo OTP -1 Regole per il meccanismo OTP -2 • Deve essere usata la sintassi extended response. • I server devono supportare le quattro risposte • I client dovrebbero supportare il monitoraggio estese: “hex”, “word”, “init-hex” and “init-word”. • I server devono supportare “word” e “init-word” • per un dizionario standard e dovrebbero supportare dizionari alternativi. I server non devono richiedere l’uso di altre estensioni OTP o opzioni. Autenticazione in Ambienti Distribuiti: protocollo LDAP della challenge OTP per utente e una entry OTP in formato multi-word. – I client possono anche supportare una entry per la pass phrase e calcolare la risposta “hex” o “word”. • I client devono indicare quando l’autenticazione fallisce. – – – – A causa di un sequence number troppo basso. Deve offrire all’utente un opzione per resettarlo. Usando “init-hex” o ”init-word”. È richiesto il supporto di MD5 ed è raccomandato l’uso di SHA1. Autenticazione in Ambienti Distribuiti: protocollo LDAP 43 44 Meccanismi di autenticazione OTP -1 Meccanismi di autenticazione OTP -2 • Il client inizia inviando un messaggio al server 2. Un Authentication Identity. Sarà usata l’identità della pass-phrase. con: 1. Un Authorizzation Identity. Se è usata la stringa vuota, viene utilizzata la Authentication Identity di default . – Quest’ultima è usata da sistemi di amministrazione o dai server proxy per il login con differenti identità utente. – Questo campo deve contenere almeno 255 ottetti e deve terminare con un ottetto NUL. – Di solito, vengono utilizzati i caratteri US-ASCII, benché sono supportati i caratteri UTF -8 . Autenticazione in Ambienti Distribuiti: protocollo LDAP – Questo campo deve essere almeno di 255 ottetti. Per questo campo sono preferiti caratteri US-ASCII. • Il server risponde inviando un messaggio contenente la OTP challenge. • Il client calcola il valore hash. – Se non è in grado di inviare direttamente questo può inviare 6 parole formattate digitate manualmente – Fornite dalla funzione di output del generatore OTP del client. Autenticazione in Ambienti Distribuiti: protocollo LDAP 45 Meccanismi di autenticazione OTP -3 Meccanismi di autenticazione OTP -4 • Se il client vede una funzione hash sconosciuta • Ad ogni autenticazione riuscita, il client genera non sarà capace di processare una pass phrase in input dall’utente. – In questa situazione il client può stampare sei parole formattate, cancellando questa sequenza. – Tentare di utilizzare differenti meccanismi di SASL. – Chiudere la connessione rifiutando l’autenticazione. • Come risultato di questo comportamento, un una risposta estesa nel formato “hex”, “word”, “init-hex” e “init-word”. – Non è richiesto al client di terminare la risposta con un spazio bianco o un carattere di newline. • I server devono tollerare un input di lunghezza arbitraria. – Può fallire l’autenticazione se la lunghezza dell’input del client è eccessiva. server è costretto ad utilizzare una funzione hash che l’utente possiede. Autenticazione in Ambienti Distribuiti: protocollo LDAP 46 47 Autenticazione in Ambienti Distribuiti: protocollo LDAP 48 8 OTP SASL: esempi -1 OTP SASL: esempi -2 • I messaggi contrassegnati da una “C:” • I seguenti esempi di meccanismi OTP usano il • rappresentano i messaggi inviati dal client al server I messaggi con una “S:” rappresentano i messaggi inviati dal server al client. profilo ACAP di SASL. La pass phrase usata in questi esempi è: This is a test. C: a001 AUTHENTICATE "OTP" {4} C: <NUL> tim S: + "otp-md5 499 ke1234 ext" C: "hex:5bf075d9959d036f" S: a001 OK "AUTHENTICATE completed" – L’user name utilizzato è “tim” e non è prevista una Authorizzation Identity. La stringa “<NUL>” rappresenta un ottetto nullo. Autenticazione in Ambienti Distribuiti: protocollo LDAP OTP SASL: esempi -3 • Lo stesso esempio con init -hex extended response: risposta con sei parole formattate: C: a001 AUTHENTICATE "OTP" {4} C: <NUL> tim S: + "otp-md5 499 ke1234 ext“ C: "init-hex:5bf075d9959d036f:md5 499 ke1235:3712dcb4aa5316c1“ S: a001 OK "OTP sequence reset, authentication complete" C: a001 AUTHENTICATE "OTP" {4} C: <NUL> tim S: + "otp-md5 499 ke1234 ext“ C: "word:BOND FOGY DRAB NE RISE MART“ S: a001 OK "AUTHENTICATE completed“ • Il seguente è un esempio del meccanismo OTP • Lo stesso esempio utilizzando il meccanismo utilizzando il profilo IMAP profilo di SASL. OTP-SHA1: 51 52 Protocolli • OTP SASL non prevede sessioni private, autenticazione server o protezione da attacchi attivi. È soggetto ad attacchi passivi con dizionario ma il rischio di tali attacchi può essere ridotto scegliendo pass phrase opportune. – Il database di autenticazione server, necessario per l’uso con OTP, non necessita di essere plaintext-equivalent. – Le implementazioni dei server devono essere progettate per resistere a race attack . Autenticazione in Ambienti Distribuiti: protocollo LDAP C: a001 AUTHENTICATE OTP S: + C: AHRpbQ== S: +b3RwLW1kNSAxMjMga2UxMjM0IGV4dA== C: aGV4OjExZDRjMTQ3ZTIyN2MxZjE= S: a001 OK AUTHENTICATE completed Introduzione OTP SASL: considerazioni sulla sicurezza • 50 OTP SASL: esempi -4 • Vediamo lo stesso esempio utilizzando una C: a001 AUTHENTICATE "OTP" {4} C: <NUL> tim S: + "otp-sha1 499 ke1234 ext“ C: "hex:c90fc02cc488df5e“ S: a001 OK "AUTHENTICATE completed" Autenticazione in Ambienti Distribuiti: protocollo LDAP 49 53 Metodi di Autenticazione in LDAP Panoramica Scenari tipici Autenticazione e Autorizzazione: definizione e concetti Meccanismi di sicurezza richiesti Autenticazione anonima Autenticazione basata su password Autenticazione basata su certificati Altri meccanismi Authorization Identity TLS Ciphersuite Il SASL service name per LDAP 9 Panoramica -1 Panoramica -2 • LDAP Versione 3 è un potente protocollo per • Un servizio di accesso alle directory LDAP deve prevenire: accesso a directory. – Accessi non autorizzati ai dati attraverso operazioni. – Accessi non autorizzati di client che riutilizzano le informazioni monitorando altri accessi. – Accessi non autorizzati ai dati monitorando altri accessi. – Modifiche non autorizzate dei dati. – Modifiche non autorizzate della configurazione. – Uso non autorizzato o eccessivo di risorse (denial of service). – Spoofing di directory, ingannare un client mostrando dati diversi da quelli presenti nella sua directory. – Permette la ricerca, l’elaborazione e la manipolazione dei dati contenuti in una directory. Offre un insieme di funzioni di sicurezza. • L’insieme minimo di funzioni di sicurezza di LDAPv3 sono compatibili con macchine con caratteristiche differenti. Autenticazione in Ambienti Distribuiti: protocollo LDAP 55 Panoramica -3 56 Panoramica -4 • La suite di protocolli LDAP può essere protetta con i seguenti meccanismi di sicurezza: • Altri meccanismi di sicurezza: – Protezione contro spoofing attraverso il protocollo TLS oppure utilizzando meccanismi di crittografia dati di SASL. – Limitazione di risorse attraverso limiti amministrativi sui servizi. – Autenticazione del server attraverso il protocollo TLS o meccanismi del SASL. – Autenticazione del client attraverso l’insieme dei meccanismi di SASL, possibilmente sostenuti da scambio di credenziali TLS. – Autorizzazione del client attraverso controlli di accesso base formulati sull’identità del richiedente. – Protezione dell’integrità dei dati attraverso il protocollo TLS o con i meccanismi SASL. Autenticazione in Ambienti Distribuiti: protocollo LDAP Autenticazione in Ambienti Distribuiti: protocollo LDAP 57 Dati sensibili Autenticazione in Ambienti Distribuiti: protocollo LDAP 58 Esempi di scenari tipici -1 • I "dati sensibili" sono dati che, se rivelati, possono causare seri pericoli alla sicurezza del loro possessore. – Non tutti i dati protetti sono sensibili. • In quali scenari della rete e come vengono 1. Una directory a sola lettura, non contenente dati sensibili accessibili da tutti. – Non richiede funzioni di sicurezza eccetto che per servizi limitati dall'amministrazione. 2. Una directory a sola lettura, non contenente dati sensibili, dove gli accessi in lettura sono garantiti attraverso l’identità base. gestiti i dati sensibili? – Richiede una funzione di autenticazione sicura. Autenticazione in Ambienti Distribuiti: protocollo LDAP 59 Autenticazione in Ambienti Distribuiti: protocollo LDAP 60 10 Esempi di scenari tipici -2 Esempi di scenari tipici -3 3. Una directory a sola lettura, non contenente dati sensibili. 5. Una directory a sola lettura, non contenente dati sensitivi, dove l'accesso in lettura è disponibile per chiunque, l'accesso per l’update può essere effettuato solo da persone autorizzate. – Il client deve essere assicurato che i dati della directory sian o autenticati dal server e che non verranno modificati. 4. Un directory contenente dati sensibili. – Questo scenario richiede funzioni di autenticazione sicure. – Questo scenario richiede una sessione sicura che assicura confidenzialità ed una funzione di autenticazione sicura. 61 Autenticazione in Ambienti Distribuiti: protocollo LDAP Autenticazione, Credenziali, Identità Politiche di controllo di accesso • Le credenziali di autenticazione asseriscono • Una politica di controllo di accesso è un • • l’identità di una parte che sta cercando di stabilire una comunicazione con un’altra parte. L’autenticazione è il processo di generazione, trasmissione e verifica di queste credenziali per stabilire l'identità delle parti. Un'identità di autenticazione (authentication identity) è il nome presentato in una credenziale. Autenticazione in Ambienti Distribuiti: protocollo LDAP 63 Fattori di controllo di accesso insieme di regole che definiscono la protezione di risorse. – Stabilisce quali entità e persone possano accedere alle risorse. Autenticazione in Ambienti Distribuiti: protocollo LDAP 64 Identità di autorizzazione • Una delle forme più usate di politiche di controllo di accesso è l' access control list. – E’ una lista di fattori di sicurezza. Il server li usa per deter minare quando e come processare queste richieste. – Tali fattori sono chiamati fattori di controllo di accesso (ACFs, Access Control Factors). – Includono: gli indirizzi IP sorgente e destinazione, una stringa cifrata, il tipo di operazione inizialmente richiesta, l'ora del giorno, ecc... Autenticazione in Ambienti Distribuiti: protocollo LDAP 62 65 • Una authorization identity è uno dei tipi di fattore di controllo di accesso. – È il nome dell’utente o di un’altra entità che richiede di eseguire un'operazione. • SASL permette ai client di specificare una authorization identity diversa dall’identità di autenticazione asserita dalle credenziali del client. – Permette a un proxy server di autenticarsi con le proprie credenziali o con l’identità della macchine per cui esegue il servizio di proxy . Autenticazione in Ambienti Distribuiti: protocollo LDAP 66 11 Meccanismi di sicurezza richiesti -1 Meccanismi di sicurezza richiesti -2 1. Per una directory pubblica a sola lettura può essere usata l’autenticazione anonima. 2. Le implementazioni che prevedono un’autenticazione basata su password devono supportare l'autenticazione basata sul meccanismo DIGEST-MD5 SASL. 3. Una directory con sessione protetta e autenticata usa l’operazione Start dil TLS e una semplice autenticazione o il meccanismo SASL EXTERNAL. Autenticazione in Ambienti Distribuiti: protocollo LDAP • Se viene negoziato il protocollo TLS: – Il client deve scartare tutte le informazioni sul server che gli sono arrivate prima della negoziazione TLS. • Se viene negoziato il livello di sicurezza SASL: – Il client deve scartare tutte le informazioni sul server ricevute precedentemente alla negoziazione SASL. Autenticazione anonima • Operazioni su directory che modificano entrate o • Autenticazione in Ambienti Distribuiti: protocollo LDAP 67 accedono ad attributi protetti richiedono l’autenticazione del client. Se non si effettuano queste operazioni il client utilizza un'autenticazione anonima. Procedure di autenticazione anonima • Un client LDAP che non ha completato con • – Ogni implementazione di LDAP deve supportare il meccanismo di autenticazione anonima. • Un LDAP server può decidere se consentire o 68 successo l'operazione di bind viene autenticato in modo anonimo. Un client LDAP può richiedere di autenticarsi anonimamente in una richiesta di bind. – Usando OCTECT STRING di lunghezza zero nella scelta di autenticazione semplice. negare il diritto di accesso ad un client che ha effettuato un'autenticazione anonima. Autenticazione in Ambienti Distribuiti: protocollo LDAP 69 Autenticazione in Ambienti Distribuiti: protocollo LDAP 70 Autenticazione anonima e TLS Autenticazione basata su password • Un client LDAP può usare l’operazione Start del • Un’implementazione LDAP deve supportare • TLS per negoziare l’utilizzo degli strumenti di sicurezza supportati da TLS. Un server LDAP che richiede che il client fornisca i propri certificati durante una negoziazione TLS, può usare una politica locale di sicurezza. – È usata per determinare se la negoziazione TLS è completata con successo. Autenticazione in Ambienti Distribuiti: protocollo LDAP 71 autenticazione con password. – Usando i meccanismi DIGEST-MD5 di SASL per la protezione delle password. • Un’implementazione LDAP deve supportare la scelta dell’autenticazione con password “semplice” quando la connessione è protetta con TLS. Autenticazione in Ambienti Distribuiti: protocollo LDAP 72 12 Digest authentication -1 Digest authentication -2 • Un client LDAP può determinare se il server • Il server risponderà con una bind. • supporta questo meccanismo, effettuando una richiesta di ricerca all’interno della root DSE. Durante l’autenticazione iniziale, il client invia una richiesta di bind. – – – – – Il resultCode è saslBindInProgress. – Il campo serverSaslCreds è presente ed è definito dal digestchallenge. • Il client invierà una bind request, con un diverso identificativo. Il numero della versione è 3. La scelta di autenticazione è SASL. Il meccanismo di SASL è DIGEST -MD5. Le credenziali sono assenti. Autenticazione in Ambienti Distribuiti: protocollo LDAP – Il numero della versione è 3. – La scelta di autenticazione è SASL, il nome del meccanismo di SASL è DIGEST-MD5. – Le credenziali contengono la stringa definita dalla digetsresponse. – Il server-type indicato sarà ldap. 73 Autenticazione in Ambienti Distribuiti: protocollo LDAP Digest authentication -3 Autenticazione “semplice” utilizzando TLS -1 • Il server risponderà con una bind response. • Un client che ha una entry della directory con – il campo ResultCode indicherà se la funzione è terminata con successo o meno. un attributo userPassword, può autenticarsi in questo modo: • Se l’autenticazione ha successo e il server supporta un ulteriore passo di autenticazione, allora il campo contenente le credenziali conterrà la stringa definita da response-auth. – Se non richiede ulteriori autenticazioni il campo sarà vuoto. – Il supporto di ulteriori identificazioni è opzionale sia per il client che per il server. Autenticazione in Ambienti Distribuiti: protocollo LDAP 75 – Esegue una semplice sequenza di bind con una semplice password; – Negozia una TLS ciphersuite che provvede ad una connessione che assicura confidenzialità. – Usa l’operazione Start del TLS per negoziare l’uso della sicurezza del TLS sulla connessione ad un server LDAP. Autenticazione in Ambienti Distribuiti: protocollo LDAP Autenticazione “semplice” utilizzando TLS -2 Autenticazione “semplice” utilizzando TLS -3 • Un’autenticazione semplice ha successo se il • Il server verifica se c'è corrispondenza tra il • 74 76 proprio elenco e la password del client. client e il server negoziano una ciphersuite. Dopo una negoziazione TLS avvenuta con successo, il client deve inviare una richiesta LDAP al server. – Se c’è una corrispondenza, risponde indicando nel campo resultCode che si è verificato un successo. – Altrimenti risponderà con il campo resultCode contenente invalidCredenzial. – Il cui numero di versione è 3. – Il campo nome contiene il nome dell'entry dell'utente. – Nel campo scelta di autenticazione “semplice”. Autenticazione in Ambienti Distribuiti: protocollo LDAP 77 Autenticazione in Ambienti Distribuiti: protocollo LDAP 78 13 Altre Autenticazioni con TLS Autenticazione basata su certificati utilizzando TLS -1 • In seguito ad una negoziazione TLS è possibile • Se un utente ha una coppia di chiavi effettuare un'autenticazione SASL che non presenta lo scambio di password riutilizzabili in chiaro. pubblica/privata può autenticarsi ad un directory server con i certificati. – Il campo subject del certificato dell’utente contiene il nome dell’entry della sua directory. – Se il server si fida del’autorità che ha rilasciato la chiave pubblica all’utente. – Il client ed il server negoziano una ciphersuite è richiesta solo l’integrità dei dati. Autenticazione in Ambienti Distribuiti: protocollo LDAP Autenticazione basata su certificati utilizzando TLS -2 • Il server deve verificare che il certificato negoziare l’uso della sicurezza supportata dal TLS su una connessione ad un server LDAP. fornitogli dal client è valido. – Il server richiede un certificato. – Il client invierà il suo certificato al server cifrandolo con la chiave privata. – La cifratura proverà che il client è in possesso della chiave privata del certificato che ha inviato. su internet se la rete non assicura la confidenzialità. Se il client richiede un’identità di autorizzazione differente da una distinguished name, dovrebbe essere usato un meccanismo che protegge la password in transito. Il client può richiedere al server LDAP uno scambio sicuro a basso livello delle credenziali utilizzando il meccanismo SASL EXTERNAL. Autenticazione in Ambienti Distribuiti: protocollo LDAP • Il client invierà una richiesta di bind LDAP nella quale sarà specificato EXTERNAL come meccanismo di SASL. Autenticazione in Ambienti Distribuiti: protocollo LDAP 82 Authorization Identity -1 • Un'autenticazione “semplice” non è consigliabile • – Controlla se il certificato è stato rilasciato da una fidata Autorità di Certificazione. – Controlla se i certificati siano non validi o revocati. 81 Altri meccanismi • 80 Autenticazione basata su certificati utilizzando TLS -3 • l Client utilizza l’operazione Start del TLS per Autenticazione in Ambienti Distribuiti: protocollo LDAP Autenticazione in Ambienti Distribuiti: protocollo LDAP 79 83 • Una Authorization Identity è presente nel campo • delle credenziali SASL sia nelle richieste che nelle risposte bind di LDAP. Se il meccanismo “EXTERNAL” è negoziato, il campo credenziali contiene una authorization identity (se presente) della forma authzId. Autenticazione in Ambienti Distribuiti: protocollo LDAP 84 14 Authorization Identity -2 TLS Ciphersuite -1 • L’authorization identity è una stringa nel formato • Le seguenti ciphersuite, non devono essere UTF-8, corrispondente al seguente ABNF: authzId = dnAuthzId / uAuthzId ; distinguished-name-based authz id. dnAuthzId = "dn:" dn dn = utf8string ; with syntax defined in RFC 2253 ; unspecified userid, UTF -8 encoded. uAuthzId = "u:" userid userid = utf8string ; syntax unspecified usate per protezione e confidenzialità di password o dati perché non offrono garanzie di sicurezza. TLS_NULL_WITH_NULL_NULL TLS_RSA_WITH_NULL_MD5 TLS_RSA_WITH_NULL_SHA • Una utf8string è definita come la codifica UTF-8 di uno o più dei 10646 caratteri ISO. Autenticazione in Ambienti Distribuiti: protocollo LDAP 85 Autenticazione in Ambienti Distribuiti: protocollo LDAP TLS Ciphersuite -2 TLS Ciphersuite -3 • Le seguenti ciphersuite, possono essere • Le seguenti ciphersuite sono vulnerabili ad facilmente rotte (meno di una settimana per una CPU standard del 1997). TLS_RSA_EXPORT_WITH_RC4_40_MD5 TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 TLS_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA Autenticazione in Ambienti Distribuiti: protocollo LDAP 86 attacchi man-in-the-middle e non devono essere usate per proteggere password o dati sensibili. – A meno che la configurazione della rete è tale che i pericoli di attacchi man-in-the-middle sono tollerabili. TLS_DH_anon_EXPORT_WITH_RC4_40_MD5 TLS_DH_anon_WITH_RC4_128_MD5 TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA TLS_DH_anon_WITH_DES_CBC_SHA TLS_DH_anon_WITH_3DES_EDE_CBC_SHA 87 Autenticazione in Ambienti Distribuiti: protocollo LDAP 88 Bibliografia • • • • • • • • • • • • • www.OpenLDAP.org Motore di Ricerca per RFC RFC1938 One-Time Password System RFC1321 The MD5 Message -Digest Algorithm RFC2222 Simple Authentication and Security Layer (SASL) RFC2246 The TLS Protocol Version 1.0 RFC2251 Lightweight Directory Access Protocol (v3) RFC2253 Lightweight Directory Access Protocol (v3): UTF -8 String Representation of Distinguished Names RFC2444 The One-Time-Password SASL Mechanism RFC2829 Authentication Methods for LDAP RFC2831 Using Digest Authentication as a SASL Mechanism RFC3377 Lightweight Directory Access Protocol (v3): Technical Specification RFC2828 Internet Security Glossary Autenticazione in Ambienti Distribuiti: protocollo LDAP 89 15