Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Prefazione -2
• Introdurremo il protocollo LDAP nato per gestire Introduzione
le directory in un intero dominio internet. Cos’è una directory?
– Tratteremo brevemente i dettagli relativi alla sua evoluzione. Cos’è LDAP?
– 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 Protocolli
accedere ad una directory remota e mostreremo le varie
politiche e meccanismi di sicurezza adottati da LDAP.
Metodi di autenticazione in LDAP
Autenticazione in Ambienti
Distribuiti: protocollo LDAP 3
1
Cos’è LDAP? Prima di LDAP
• LDAP è un acronimo che sta per
LIGHTWEIGHT DIRECTORY ACCESS
• Prima di LDAP, per accedere a dati memorizzati
in una directory X.500 un client doveva
PROTOCOL.
supportare il DAP (DIRECTORY ACCESS
• È un protocollo leggero per accedere ai servizi di PROTOCOL).
directory, basati sul protocollo X.500. – Imponeva una notevole penalizzazione delle risorse in gioco
• Opera su TCP/IP o su altre connessioni orientate poiché richiedeva l'utilizzo della specifica OSI (Open System
Interconnection).
ai servizi di trasferimento.
– Dettagli definiti nella RFC 2251. • LDAP nasce proprio per sostituire DAP.
LDAP directory tree con nomi LDAP directory tree con nomi usati
tradizionali in Internet
2
Come si accede alle informazioni Protezione delle informazioni
• Il protocollo LDAP definisce servizi per accedere • Molti servizi di directory non prevedono
e aggiornare una directory. protezione per i dati e le informazioni.
• L’operazione più usata è quella di ricerca di • LDAP include un meccanismo nel quale un client
informazioni all’interno della directory. si può autenticare, o provare la sua identità ad
• LDAP fornisce un efficiente algoritmo di ricerca. un directory server.
• LDAP consente servizi di privacy e di integrità
delle informazioni.
Autenticazione in Ambienti
15 Distribuiti: protocollo LDAP 16
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. direttamente su protocolli di trasporto come
– Era stata largamente implementata. TCP.
• In questa versione viene introdotto il concetto di • Introdotti i meccanismi SASL per rendere i
Bind Operation, operazione principale per fare servizi offerti dal server più sicuri.
comunicare client e server LDAP. • Possibilità di estendere il protocollo introducendo
– La Bind Operation è usata per stabilire un sessione tra il client e
server che permette al client di autenticarsi sul server. nuove operazioni.
– Implementata nel 1997.
Introduzione
Introduzione ai protocolli
Protocolli
• È utile introdurre i concetti basilari di alcuni
Introduzione
protocolli utilizzati in LDAP.
SASL
• Dei protocolli SASL, TLS e OTP illustreremo
TLS solo le caratteristiche principali.
OTP • Tratteremo in maniera più dettagliata i protocolli
DIGEST-- MD5
DIGEST DIGEST-MD5 e OTP SASL.
OTP SASL
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 trasmette una authorization identity dal client al
dopo la ricezione di un comando di server.
autenticazione o di una risposta di un client. • Negozia poi l’uso di specifici meccanismi per un
• Dopo la ricezione di una challenge, un client può livello di sicurezza.
rilasciare una risposta o abortire l’autenticazione. – I meccanismi definiti in SASL sono: Kerberos version 4, GSSAPI
mechanism, S/Key mechanism, External mechanism.
5
One--Time Password System
One OTP: concetti base
• Utilizza una pass-phrase segreta per generare
• Racchiude meccanismi per l'autenticazione una sequenza di password utilizzate una sola
relativa ad accessi a sistemi che richiedono volta.
un'autenticazione sicura rispetto ad attacchi
passivi basati sul replay delle password.
• La pass-phrase non attraversa mai la rete ed è
quindi non vulnerabile agli attacchi di replay.
• One-time-password (OTP) è stato progettato per
evitare l’ascolto indesiderato delle connessioni.
• Ci sono due entità che sono coinvolte in
– Descritto nella RFC 1938.
un'operazione di one-time password: il
generatore e il server.
6
Digest Authentication come Passo Due. DIGEST response
meccanismo SASL. Passo Uno.
• A questo punto il client prende nota del digest
• Digest può essere usato come un meccanismo di challenge e risponde al server con una stringa
autenticazione per il protocollo SASL. strutturata e costruita secondo le regole del
– Argomento della RFC 2831. digest response.
• Se il client non si è ancora autenticato al server, • Il valore del campo response, formato da 32
deve anzitutto effettuare l’autenticazione iniziale. cifre esadecimali con caratteri lower case sarà:
• Il server inizia mandando un challenge. response -value =
– I dati inclusi in questo challenge contengono alcune stringe HEX( KD ( HEX(H(A 1 )), { nonce-value, ":" nc-value, ":",
cnonce-value, ":", qop-value, ":", HEX(H(A 2 )) }))
strutturate secondo le regole della digest challenge.
Se il campo authzid è presente, allora A1 è uguale a:
A 1 = { H( { username-value, ":", realm -value, ":",
passwd } ),":", nonce-value, ":", cnonce-value, ":", authzid-value }
One -Time
One- Time--Password per il Profili OTP per SASL
meccanismo SASL
• I meccanismi OTP SASL, sostituiscono i • Meccanismi di SASL offrono un modo formale
meccanismi SKEY SASL. per integrare OTP all’interno dei protocolli dove
– Sono descritti nella RFC 2444. è supportato SASL includendo IMAP, ACAP,
• OTP è una buona scelta per scenari dove il client POP3 e LDAPv3.
non è fidato. • OTP e OTP extended response offrono un certo
– Darà una sola opportunità a client maliziosi di accedere a dei numero di opzioni.
servizi a nome di un altro utente. – Per un’ autenticazione con successo, il client e il server hanno
• OTP è una buona scelta per situazioni dove bisogno di un set di opzioni compatibili.
vengono effettuate login interattive sul server.
7
Regole per il meccanismo OTP -1 Regole per il meccanismo OTP -2
• Deve essere usata la sintassi extended response. • I client dovrebbero supportare il monitoraggio
della challenge OTP per utente e una entry OTP
• I server devono supportare le quattro risposte in formato multi-word.
estese: “hex”, “word”, “init-hex” and “init-word”. – I client possono anche supportare una entry per la pass phrase e
• I server devono supportare “word” e “init-word” calcolare la risposta “hex” o “word”.
Meccanismi di Meccanismi di
autenticazione OTP -1 autenticazione OTP -2
• Il client inizia inviando un messaggio al server 2. Un Authentication Identity. Sarà usata l’identità
con: della pass-phrase.
– Questo campo deve essere almeno di 255 ottetti. Per questo
1. Un Authorizzation Identity. Se è usata la stringa campo sono preferiti caratteri US-ASCII.
vuota, viene utilizzata la Authentication Identity • Il server risponde inviando un messaggio
di default . contenente la OTP challenge.
– Quest’ultima è usata da sistemi di amministrazione o dai server
proxy per il login con differenti identità utente. • Il client calcola il valore hash.
– Questo campo deve contenere almeno 255 ottetti e deve – Se non è in grado di inviare direttamente questo può inviare 6
terminare con un ottetto NUL. parole formattate digitate manualmente
– Di solito, vengono utilizzati i caratteri US-ASCII, benché sono – Fornite dalla funzione di output del generatore OTP del client.
supportati i caratteri UTF -8 .
Autenticazione in Ambienti Autenticazione in Ambienti
Distribuiti: protocollo LDAP 45 Distribuiti: protocollo LDAP 46
Meccanismi di Meccanismi di
autenticazione OTP -3 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 una risposta estesa nel formato “hex”, “word”,
in input dall’utente. “init-hex” e “init-word”.
– In questa situazione il client può stampare sei parole formattate,
– Non è richiesto al client di terminare la risposta con un spazio
cancellando questa sequenza.
bianco o un carattere di newline.
– Tentare di utilizzare differenti meccanismi di SASL.
– Chiudere la connessione rifiutando l’autenticazione. • I server devono tollerare un input di lunghezza
arbitraria.
• Come risultato di questo comportamento, un
– Può fallire l’autenticazione se la lunghezza dell’input del client è
server è costretto ad utilizzare una funzione eccessiva.
hash che l’utente possiede.
Autenticazione in Ambienti Autenticazione in Ambienti
Distribuiti: protocollo LDAP 47 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 profilo ACAP di SASL. La pass phrase usata in
server questi esempi è: This is a test.
• I messaggi con una “S:” rappresentano i
C: a001 AUTHENTICATE "OTP" {4}
messaggi inviati dal server al client. C: <NUL> tim
– L’user name utilizzato è “tim” e non è prevista una S: + "otp-md5 499 ke1234 ext"
Authorizzation Identity. La stringa “<NUL>” rappresenta un C: "hex:5bf075d9959d036f"
ottetto nullo. S: a001 OK "AUTHENTICATE completed"
Introduzione
OTP SASL: considerazioni sulla
Protocolli
sicurezza
• OTP SASL non prevede sessioni private, Metodi di Autenticazione in LDAP
autenticazione server o protezione da attacchi Panoramica
attivi. Scenari tipici
• È soggetto ad attacchi passivi con dizionario ma Autenticazione e Autorizzazione: definizione e concetti
il rischio di tali attacchi può essere ridotto Meccanismi di sicurezza richiesti
Autenticazione anonima
scegliendo pass phrase opportune.
Autenticazione basata su password
– Il database di autenticazione server, necessario per l’uso con
OTP, non necessita di essere plaintext-equivalent. Autenticazione basata su certificati
– Le implementazioni dei server devono essere progettate per Altri meccanismi
resistere a race attack . Authorization Identity
Autenticazione in Ambienti TLS Ciphersuite
Distribuiti: protocollo LDAP 53
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
accesso a directory. deve prevenire:
– Accessi non autorizzati ai dati attraverso operazioni.
– Permette la ricerca, l’elaborazione e la manipolazione dei
dati contenuti in una directory. Offre un insieme di funzioni di – Accessi non autorizzati di client che riutilizzano le
sicurezza.
informazioni monitorando altri accessi.
– Accessi non autorizzati ai dati monitorando altri
• L’insieme minimo di funzioni di sicurezza di accessi.
LDAPv3 sono compatibili con macchine con – Modifiche non autorizzate dei dati.
caratteristiche differenti. – 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.
Autenticazione in Ambienti Autenticazione in Ambienti
Distribuiti: protocollo LDAP 55 Distribuiti: protocollo LDAP 56
Panoramica -3 Panoramica -4
• La suite di protocolli LDAP può essere protetta
con i seguenti meccanismi di sicurezza: • Altri meccanismi di sicurezza:
– Autenticazione del client attraverso l’insieme dei – Protezione contro spoofing attraverso il protocollo TLS
meccanismi di SASL, possibilmente sostenuti da oppure utilizzando meccanismi di crittografia dati di
scambio di credenziali TLS. SASL.
– Autorizzazione del client attraverso controlli di – Limitazione di risorse attraverso limiti amministrativi
accesso base formulati sull’identità del richiedente. sui servizi.
– Protezione dell’integrità dei dati attraverso il – Autenticazione del server attraverso il protocollo TLS
protocollo TLS o con i meccanismi SASL. o meccanismi del SASL.
10
Esempi di scenari tipici -2 Esempi di scenari tipici -3
3. Una directory a sola lettura, non contenente 5. Una directory a sola lettura, non contenente
dati sensibili. dati sensitivi, dove l'accesso in lettura è
– Il client deve essere assicurato che i dati della directory sian o disponibile per chiunque, l'accesso per l’update
autenticati dal server e che non verranno modificati. può essere effettuato solo da persone
4. Un directory contenente dati sensibili. autorizzate.
– Questo scenario richiede una sessione sicura che assicura – Questo scenario richiede funzioni di autenticazione sicure.
confidenzialità ed una funzione di autenticazione sicura.
Autenticazione in Ambienti
61 Distribuiti: protocollo LDAP 62
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 insieme di regole che definiscono la protezione
stabilire una comunicazione con un’altra parte. di risorse.
– Stabilisce quali entità e persone possano accedere alle risorse.
• 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.
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. • Se viene negoziato il protocollo TLS:
2. Le implementazioni che prevedono – Il client deve scartare tutte le informazioni sul server
un’autenticazione basata su password devono che gli sono arrivate prima della negoziazione TLS.
supportare l'autenticazione basata sul • Se viene negoziato il livello di sicurezza SASL:
meccanismo DIGEST-MD5 SASL. – Il client deve scartare tutte le informazioni sul server
3. Una directory con sessione protetta e ricevute precedentemente alla negoziazione SASL.
autenticata usa l’operazione Start dil TLS e una
semplice autenticazione o il meccanismo SASL
EXTERNAL.
Autenticazione in Ambienti Autenticazione in Ambienti
Distribuiti: protocollo LDAP 67 Distribuiti: protocollo LDAP 68
Procedure di autenticazione
Autenticazione anonima anonima
• Operazioni su directory che modificano entrate o
accedono ad attributi protetti richiedono • Un client LDAP che non ha completato con
l’autenticazione del client. successo l'operazione di bind viene autenticato
• Se non si effettuano queste operazioni il client in modo anonimo.
utilizza un'autenticazione anonima. • Un client LDAP può richiedere di autenticarsi
– Ogni implementazione di LDAP deve supportare il meccanismo di anonimamente in una richiesta di bind.
autenticazione anonima. – Usando OCTECT STRING di lunghezza zero nella scelta di
• Un LDAP server può decidere se consentire o autenticazione semplice.
• Un client LDAP può usare l’operazione Start del • Un’implementazione LDAP deve supportare
TLS per negoziare l’utilizzo degli strumenti di autenticazione con password.
sicurezza supportati da TLS. – Usando i meccanismi DIGEST-MD5 di SASL per la protezione
• Un server LDAP che richiede che il client fornisca
delle password.
i propri certificati durante una negoziazione TLS, • Un’implementazione LDAP deve supportare la
può usare una politica locale di sicurezza. scelta dell’autenticazione con password
– È usata per determinare se la negoziazione TLS è completata “semplice” quando la connessione è protetta con
con successo. TLS.
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 – Il resultCode è saslBindInProgress.
richiesta di ricerca all’interno della root DSE. – Il campo serverSaslCreds è presente ed è definito dal digest-
challenge.
• Durante l’autenticazione iniziale, il client invia
una richiesta di bind.
• Il client invierà una bind request, con un diverso
– Il numero della versione è 3. identificativo.
– La scelta di autenticazione è SASL. – Il numero della versione è 3.
– Il meccanismo di SASL è DIGEST -MD5. – La scelta di autenticazione è SASL, il nome del meccanismo di
SASL è DIGEST-MD5.
– Le credenziali sono assenti.
– Le credenziali contengono la stringa definita dalla digets-
response.
– Il server-type indicato sarà ldap.
Autenticazione in Ambienti Autenticazione in Ambienti
Distribuiti: protocollo LDAP 73 Distribuiti: protocollo LDAP 74
Autenticazione “semplice”
Digest authentication -3
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
• Se l’autenticazione ha successo e il server questo modo:
– Esegue una semplice sequenza di bind con una semplice
supporta un ulteriore passo di autenticazione, password;
allora il campo contenente le credenziali conterrà – Negozia una TLS ciphersuite che provvede ad una connessione
la stringa definita da response-auth. che assicura confidenzialità.
– Se non richiede ulteriori autenticazioni il campo sarà vuoto. – Usa l’operazione Start del TLS per negoziare l’uso della
sicurezza del TLS sulla connessione ad un server LDAP.
– Il supporto di ulteriori identificazioni è opzionale sia per il client
che per il server.
13
Autenticazione basata su certificati
Altre Autenticazioni con TLS utilizzando TLS -1
• In seguito ad una negoziazione TLS è possibile • Se un utente ha una coppia di chiavi
effettuare un'autenticazione SASL che non pubblica/privata può autenticarsi ad un directory
presenta lo scambio di password riutilizzabili in server con i certificati.
chiaro. – Il campo subject del certificato dell’utente contiene il nome
– Il client ed il server negoziano una ciphersuite è richiesta solo dell’entry della sua directory.
l’integrità dei dati. – Se il server si fida del’autorità che ha rilasciato la chiave pubblica
all’utente.
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: usate per protezione e confidenzialità di
password o dati perché non offrono garanzie di
authzId = dnAuthzId / uAuthzId
; distinguished-name-based authz id. sicurezza.
dnAuthzId = "dn:" dn
TLS_NULL_WITH_NULL_NULL
dn = utf8string ; with syntax defined in RFC
2253 TLS_RSA_WITH_NULL_MD5
; unspecified userid, UTF -8 encoded.
TLS_RSA_WITH_NULL_SHA
uAuthzId = "u:" userid
userid = utf8string ; syntax unspecified
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