1. Introduzione
Il Lightweight Directory Access Protocol (LDAP) [RFC4510] è un potente protocollo per l'accesso alle directory. Offre mezzi per cercare, recuperare e manipolare il contenuto delle directory e modalità di accesso a un ricco insieme di funzioni di sicurezza.
È essenziale che queste funzioni di sicurezza siano interoperabili tra tutti i client e i server LDAP su Internet; deve quindi esistere un sottoinsieme minimo di funzioni di sicurezza comune a tutte le implementazioni che rivendicano la conformità a LDAP.
Le minacce di base a un servizio di directory LDAP includono (senza limitarsi a):
(1) Accesso non autorizzato ai dati della directory tramite operazioni di recupero dati.
(2) Accesso non autorizzato ai dati della directory monitorando gli accessi altrui.
(3) Accesso non autorizzato a informazioni di autenticazione del client riutilizzabili monitorando gli accessi altrui.
(4) Modifica non autorizzata dei dati della directory.
(5) Modifica non autorizzata delle informazioni di configurazione.
(6) Negazione del servizio: uso (di norma eccessivo) di risorse allo scopo di negare il servizio ad altri.
(7) Contraffazione (spoofing): indurre un utente o un client a credere che un'informazione provenga dalla directory quando in realtà non è così, modificando i dati in transito o indirizzando male la connessione di trasporto del client. Indurre un utente o un client a inviare informazioni privilegiate a un'entità ostile che appare come il server di directory ma non lo è. Indurre un server di directory a credere che un'informazione provenga da un determinato client quando in realtà proviene da un'entità ostile.
(8) Dirottamento (hijacking): un attaccante assume il controllo di una sessione di protocollo già stabilita.
Le minacce (1), (4), (5), (6), (7) e (8) sono attacchi attivi. Le minacce (2) e (3) sono attacchi passivi.
Le minacce (1), (4), (5) e (6) sono dovute a client ostili. Le minacce (2), (3), (7) e (8) sono dovute a entità ostili presenti sul percorso tra client e server, o a entità ostili che si spacciano per un server, ad esempio tramite spoofing IP.
LDAP offre i seguenti meccanismi di sicurezza:
(1) Autenticazione mediante l'operazione Bind. L'operazione Bind fornisce un metodo semplice che supporta i meccanismi anonimo, non autenticato e nome/password, e il metodo Simple Authentication and Security Layer (SASL), che supporta una grande varietà di meccanismi di autenticazione.
(2) Meccanismi per supportare funzionalità di controllo degli accessi specifiche del fornitore (LDAP non offre una funzionalità di controllo degli accessi standard).
(3) Servizio di integrità dei dati mediante livelli di sicurezza nei meccanismi Transport Layer Security (TLS) o SASL.
(4) Servizio di riservatezza dei dati mediante livelli di sicurezza nei meccanismi TLS o SASL.
(5) Limitazione dell'uso delle risorse del server mediante limiti amministrativi configurati sul server.
(6) Autenticazione del server mediante il protocollo TLS o meccanismi SASL.
LDAP può anche essere protetto con mezzi esterni al protocollo LDAP, ad esempio con la sicurezza a livello IP [RFC4301].
L'esperienza dimostra che lasciare semplicemente che le implementazioni scelgano liberamente i meccanismi di sicurezza da implementare non è una strategia che porta all'interoperabilità. In assenza di obblighi, si continueranno a scrivere client che non supportano alcuna funzione di sicurezza supportata dal server o, peggio, che supportano solo meccanismi che forniscono sicurezza inadeguata nella maggior parte delle circostanze.
È auspicabile consentire ai client di autenticarsi usando una varietà di meccanismi, compresi quelli in cui le identità sono rappresentate come nomi distinti [X.501][RFC4512], in forma di stringa [RFC4514] o come usate in sistemi diversi (ad esempio semplici nomi utente [RFC4013]). Poiché alcuni meccanismi di autenticazione trasmettono le credenziali in chiaro e/o non forniscono servizi di sicurezza dei dati e/o sono soggetti ad attacchi passivi, è necessario garantire un'interoperabilità sicura individuando un meccanismo obbligatorio da implementare per stabilire servizi di sicurezza a livello di trasporto.
L'insieme dei meccanismi di sicurezza forniti in LDAP e descritti in questo documento è inteso a soddisfare le esigenze di sicurezza di un'ampia gamma di scenari di distribuzione e a fornire al tempo stesso un elevato grado di interoperabilità tra le varie implementazioni e distribuzioni di LDAP.
1.1. Relazione con gli altri documenti
Questo documento è parte integrante della specifica tecnica LDAP [RFC4510].
Questo documento, insieme a [RFC4510], [RFC4511] e [RFC4512], rende obsoleto l'RFC 2251 nella sua interezza. Le sezioni 4.2.1 (in parte) e 4.2.2 dell'RFC 2251 sono rese obsolete da questo documento. L'appendice B.1 riassume le modifiche sostanziali apportate a RFC 2251 da questo documento.
Questo documento rende obsoleto l'RFC 2829 nella sua interezza. L'appendice B.2 riassume le modifiche sostanziali apportate a RFC 2829 da questo documento.
Le sezioni 2 e 4 dell'RFC 2830 sono rese obsolete da [RFC4511]. Il resto dell'RFC 2830 è reso obsoleto da questo documento. L'appendice B.3 riassume le modifiche sostanziali apportate a RFC 2830 da questo documento.
1.2. Convenzioni
Le parole chiave "MUST", "MUST NOT", "SHALL", "SHOULD", "SHOULD NOT", "MAY" e "OPTIONAL" in questo documento devono essere interpretate come descritto nell'RFC 2119 [RFC2119].
Il termine "user" (utente) indica qualsiasi entità umana o applicativa che accede alla directory usando un client di directory. Un client di directory (o client) è anche detto directory user agent (DUA).
Il termine "transport connection" (connessione di trasporto) indica i servizi di trasporto sottostanti usati per veicolare lo scambio di protocollo, nonché le associazioni stabilite da tali servizi.
Il termine "TLS layer" (livello TLS) indica i servizi TLS usati per fornire servizi di sicurezza, nonché le associazioni stabilite da tali servizi.
Il termine "SASL layer" (livello SASL) indica i servizi SASL usati per fornire servizi di sicurezza, nonché le associazioni stabilite da tali servizi.
Il termine "LDAP message layer" (livello di messaggi LDAP) indica i servizi LDAP Message (PDU) usati per fornire servizi di directory, nonché le associazioni stabilite da tali servizi.
Il termine "LDAP session" (sessione LDAP) indica i servizi combinati (connessione di trasporto, livello TLS, livello SASL, livello di messaggi LDAP) e le loro associazioni.
In generale, i termini di sicurezza di questo documento sono usati in modo coerente con le definizioni fornite in [RFC2828]. Inoltre, nell'appendice A di questo documento sono presentati diversi termini e concetti relativi a sicurezza, autenticazione e autorizzazione. Sebbene la definizione formale di tali termini e concetti esuli dall'ambito di questo documento, la loro comprensione è prerequisito per comprendere gran parte del materiale in esso contenuto. I lettori che non hanno familiarità con i concetti legati alla sicurezza sono invitati a consultare l'appendice A prima di leggere il resto del documento.