Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di...

14
Antonio Radesca Anno Accademico 2002-2003 Sistemi per l’elaborazione dell’informazione: Sicurezza su reti Problemi Reti molto vaste con numerose risorse da gestire… Account validi non usati, account dimenticati,password da cambiare su più macchine... Localizzare oggetti quali: computer , stampanti, utenti… Gestire il processo di autenticazione… ??? Il protocollo LDAP Il protocollo LDAP (Lightweight Directory Access Protocol) è uno standard aperto per l’erogazione di servizi di directory tramite una rete Intranet o Internet Basato sullo standard X.500 e su TCP Discendente del protocollo DAP Proposto nel 1993 ed adottato dalla IETF Vantaggi di LDAP Cataloga tutte le informazioni riguardanti gli oggetti presenti in una rete , quali utenti , stampanti e workstation e le distribuisce in tutta la rete Le informazioni sono contenute in un database centralizzato Garantisce il controllo sugli accessi e permette la gestione del processo di autenticazione Fornisce una visione semplificata ed omogenea della rete Servizio di Directory Un servizio di directory è un database contenente informazioni riguardanti gli oggetti presenti all’interno di una rete basate su attributi Permette una gestione gerarchica e centralizzata degli oggetti presenti in una rete Generalmente si tratta di un servizio distribuito Permette brevi tempi di risposta a query permettendo la replica delle informazioni Differenze tra LDAP e DAP DAP(Directory Acces Protocol) è un protocollo che richiede molte risorse e opera su tutti i livelli dello standard OSI LDAP è progettato per funzionare su TCP/IP (solo 4 livelli) ed offre la maggior parte della funzionalità di DAP ad un costo molto più basso

Transcript of Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di...

Page 1: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

1

Antonio RadescaAnno Accademico 2002-2003

Sistemi per l’elaborazione dell’informazione: Sicurezza su reti Problemi

♦ Reti molto vaste con numerose risorse da gestire…♦ Account validi non usati, account dimenticati,password da

cambiare su più macchine... ♦ Localizzare oggetti quali: computer , stampanti, utenti…♦ Gestire il processo di autenticazione…

???

Il protocollo LDAP♦ Il protocollo LDAP (Lightweight Directory Access

Protocol) è uno standard aperto per l’erogazione di servizi di directory tramite una rete Intranet o Internet

♦ Basato sullo standard X.500 e su TCP ♦ Discendente del protocollo DAP♦ Proposto nel 1993 ed adottato dalla IETF

Vantaggi di LDAP

♦ Cataloga tutte le informazioni riguardanti gli oggetti presenti in una rete , quali utenti , stampanti e workstatione le distribuisce in tutta la rete

♦ Le informazioni sono contenute in un database centralizzato

♦ Garantisce il controllo sugli accessi e permette la gestione del processo di autenticazione

♦ Fornisce una visione semplificata ed omogenea della rete

Servizio di Directory♦ Un servizio di directory è un database contenente

informazioni riguardanti gli oggetti presenti all’interno di una rete basate su attributi

♦ Permette una gestione gerarchica e centralizzata degli oggetti presenti in una rete

♦ Generalmente si tratta di un servizio distribuito♦ Permette brevi tempi di risposta a query permettendo la

replica delle informazioni

Differenze tra LDAP e DAP♦ DAP(Directory Acces Protocol) è un protocollo che

richiede molte risorse e opera su tutti i livelli dello standard OSI

♦ LDAP è progettato per funzionare su TCP/IP (solo 4 livelli) ed offre la maggior parte della funzionalità di DAP ad un costo molto più basso

Page 2: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

2

Struttura del protocollo LDAP♦ Basato sul paradigma Client -Server♦ Struttura gerarchica(simile al DNS)♦ Esiste uno o più server che forniscono accesso a un

DIT(Directory Information Tree)♦ L’albero è formato da entry

Entry♦ Un'entry è una raccolta di attributi che fanno riferimento

ad un Distinguished Name (DN) unico♦ Il DN è usato per riferirsi inequivocabilmente all’entry

ESEMPIOEntry per l’utente Antonio Radesca:

uid=antrad,ou=People,dc=example,dc=com.

Albero di Directory LDAP Sessione LDAP

Client LDAP si connette ad un server LDAP e gli

pone una domanda

Il server LDAP gli ritorna la risposta oppureun puntatore alla posizione in cui il client

potrà avere maggiori informazion(tipicamenterestituisce l’indirizzo IP di un altro server LDAP)

Richiesta

Risposta

IBM Compatible

Client LDAP Server LDAP

Autenticazione con LDAP

Workstation

IBM CompatibleIBM Compatible

Autenticazione e generazione del TGT

Richiesta e rilascio ticket per servizio LDAP

Invio ticket per servizio LDAP

Invio query erispostatramite SSL

Server KerberosServer LDAP OpenLDAP

www.openldap.org

Page 3: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

3

1. Panoramica e prerequisiti di OpenLDAP2. Installazione3. Caratteristiche e struttura 4. Configurazione di slapd5. Schemi e Access List6. Configurazione per la replica7. PAM_LDAP 8. OpenLDAP e Microsoft @ Active Directory

♦ Implementazione “Open Source” di strumenti a supporto del protocollo LDAP

♦ Versione di riferimento 2.1.19 (Maggio 2003)♦ Adottato dalle maggiori distribuzioni Linuxe usato

soprattutto per l’autenticazione in ambienti di calcolo distribuiti.

♦ Supporta la distribuzione dei carichi di lavoro♦ Fornisce brevi tempi di risposta ♦ Permette la replica delle informazioni

OpenLDAP

Prerequisiti software per l’installazione

♦ Librerie OpenSSL-TLS(www.openssl.org)♦ Servizi di autenticazione Kerberos e/o PAM (Per

l’autenticazione sicura)♦ Librerie Cyrus SASL (Simple Authentication and Security

Layer)♦ Berkeley DB 4♦ POSIX Thread♦ Librerie libpam-ldap(Opzionali)♦ nss-ldap(Opzionale)

Installazione di OpenLDAP♦ Formati disponibili:Sorgente(tar.gz) e RPM♦ Release di riferimento:2.1.19(Maggio 2003)♦ Configurazione e complazione sorgenti(Utente root)#tar –xf openldp-2.1.19.tgz#cd openldap-2.1.19#./configure#make depend#make #make install♦ Installazione basata su RPM(Suse,RedHat,Mandrake..)#rpm –i openldap-2.1.19.rpm

Demoni di OpenLDAP

slapd♦ Server che gestisce le richieste dei client del servizio♦ Spesso è in esecuzione su più macchine della rete per

aumentare la disponibilità del servizio con una copia di parte o tutta la struttura dell’albero di directory

Demoni di OpenLDAP

slurpd♦ Garantisce la consistenza delle informazioni tra le istanze

di slapd che partecipano al servizio(la consistenza è gestita mediante la replica e lo scambio di messaggi)

Page 4: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

4

Interazione tra slapd e slurpd

1-Richiesta

2-Riferimento

3-Richiesta

4-Risposta 5-Scrive Replication Log

6-Legge

7-Invia

Master slapd

Slave slapd slurpd

Client

Avvio e terminazione di slapdAVVIO

♦ Per installazioni da RPM:#/etc/init.d/slapd start

♦ Per installazioni da sorgenti:#/usr/local/etc/libexec/slapd start

TERMINAZIONE♦ Per installazioni da RPM:

#/etc/init.d/slapd stop♦ Per installazioni da sorgenti:

#kill –INT ‘cat /usr/local/var/slapd.log’

Opzioni della riga di comando

♦ -f <nome_file>Specifica il percorso del file di configurazione

♦ -h <URL>Specifica configurazioni alternative per il serverDefault : ldap://

♦ -n <nome_servizio>Specifica il nome del servizio,per default il nome è slapd

♦ -l <syslog-utente-locale>Specifica l’utente abilitato al syslog

Formato LDIF

♦ LDIF è l’acronimo di LDAP Data Interchange Format ♦ Usato da OpenLDAP per rappresentare le entry del servizio

di directory in formato testuale nel database e per lagestione degli schemi

♦ Formato di una entry:

Dn:<distinguished name><attrdesc>:<attrvalue><attrdesc>:<attrvalue>…attrdesc può essere un tipo di attributo come dn oppure objestClass o può includere opzioni come cn;lang_... oppure userCerticate;binary.

Configurazione del demone slapd

♦ Gestita atraceverso il file slapd.conf (contenuto generalmente nella directory /usr/local/etc/openldap)

♦ Diviso in 3 sezioni:1. Global2. Backend specific3. Database specific

Struttura di slapd.conf♦ IL carattere # indica una riga di commenti

♦ Formato generale:# global configuration directives <global config directives>

# backend definition backend <typeA> <backend -specific directives >

# first database definition & config directives database <typeA> <database-specific directives>

# second database definition & config directivesdatabase <typeB><database-specific directives>

# second database definition & config directives database <typeA> <database-specific directives>

# subsequent backend & database definitions & config directives ...

Page 5: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

5

Regole di slapd.conf

♦ Ogni direttiva di una sezione può sovrascrivere la stessa direttiva specificata nella sezione precedente

ESEMPIO:Impostata una proprietà sia nella sezione “Global” che in quella “Database specific”,quella usata da slapd sarà quella impostata nella sezione “Database specific”

♦ Alcune direttive possono avere significato diverso a seconda della sezione in cui si trovano

Direttive globali di slapd.conf(1)

♦ includeCarica gli schemi

♦ access to <what> by <who> <access level> <control>Garantisce l’accesso a un insieme di entry e/o attributi a uno o più richiedenti(ACL)

♦ defaultaccess { none|compare|search|read|write }Specifica l’accesso nel caso in cui nessuna direttiva sia stata specificata

♦ idletimeout <filename>Specifica il numero di secondi da attendere prima di forzare la disconnessione di un client

Direttive globali di slapd.conf(2)

♦ attributetipe <attribute type description>Definisce un tipo per un attributo

♦ loglevelSpecifica il modo in cui vengono eseguite le attività di debug e le statistiche al demone syslogd

♦ objectClass <RFC2252 Object Class Description>Definisce una classe di oggetti

♦ referral <URL>Direttiva che specifica il riferimento da passare nel caso in cui slapdnon possa soddisfare una richiesta

Direttive globali di slapd.conf(3)

♦ sizelimit <integer>Questa direttiva specifica il numero massimo di entry da ritornare dopo un’operazione di ricercaDefault :sizelimit 500

♦ timelimit <integer>Specifica il numero massimo di secondi (in tempo reale) che slapdimpiegherà per soddisfare una query. Se una richiesta non potrà essere soddisfatta entro quel tempo, sarà ritornato un errore di timeoutDefault :timelimit 3600

Schemi in slapd.conf♦ Contengono le definizioni dei tipi di oggetti(detti Classi o

objectClass)

♦ Esempi di tipi di oggetti : utenti,gruppi,stampanti o risorse condivise

♦ Sono contenuti in file con estensione .schema

Direttive di Backend♦ Backend <type>

Direttive usate per la configurazione di backend di pacchetti a supporto di OpenLDAP

Types Descriptionbdb Berkeley DB transactional backend dnssrv DNS SRV backendldap LDAP (Proxy) backend ldbm Lightweight DBM backendmeta Meta Directory backend monitor Monitor backend passwd Provides read-only access to passwd(5)perl Perl Programmable backend shell Shell (extern program) backendsql SQL Programmable backend

Page 6: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

6

Direttive generali di database

♦ database <type>Indica l'inizio di una dichiarazione di istanza di database.,<type> dovrebbe essere uno dei tipi di backend elencati

♦ directorySpecifica la posizione fisica dei file utilizzati permemorizzare gli oggetti presenti nella directory

♦ replicaSpecifica un host che contiene una copia del database delle direttive

Direttive generali di Database(2)♦ readonly on|off

Specifica la modalità in cui il database si trova♦ replogfile <filename>

Specifica il nome del file di log per la gestione della replica dele informazioni

♦ rootpw <password>Direttiva usata per specificare una password per il DN del rootdn

Direttive generali di Database(3)♦ rootdn <dn>

Specifica il DN che non è soggetto a controllo o restrizioni per questo database. Il DN si riferisce di solito a un’entrynel database o nella directory oppure può riferirirsia identità SASL

Esempio basato su entry :rootdn "cn=Manager,dc=example,dc=com"

Esempio basato su SASL:rootdn "uid=root,cn=example.com,cn=digest-md5,cn=auth“

Direttive generali di Database(4)♦ updatedn <dn>

Questa direttiva è applicabile solo a demoni slapdslaveSpecifica il DN che può effettuare operazioni di replicaDovrebbe essere il DN del demone slurpd

♦ updateref <URL>Specifica l’ URL da ritornare ai client che richiedono query di update da replicareDirettiva applicabile solo a demoni slapd slave

Direttive di database specifiche♦ Direttive di questo tipo sono applicabili solo a determinati

tipi di database♦ Esempi di direttive di database BDB e LDBM:

directory <directory>Questa direttiva specifica la directory si trovano i file BDB che contengono il database e gli indici associaticachesize <integer>Specifica la dimensione della cache dell’istanza del database di backend LDBM in numero di entry

Access list♦ Specifica le modalità per l’accesso al servizio di directory

ESEMPIO (1):access to attr=userPassword by self write by anonymous auth by dn.base="cn=Admin,dc=example,dc=com" writeby * none

L’amministratore può modificare l’attributo userPassword di qualsiasi entry, ogni entry può modificare il suo attributo userPassword e tutti gli altri non hanno permesso di lettura e di scrittura sull’attributo

Page 7: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

7

Access list(2)ESEMPIO (2)

access to * by dn.base="cn=Admin,dc=example,dc=com" write by * read

Specifica che l’amministratore ha permesso di scrittura su qualsiasi oggetto e tutti hanno permesso di lettura su tutti gli oggetti

Esempio di file slapd.conf1. # Configurazionne d’esempio2. include /usr/local/etc/schema/core.schema 3. referral ldap://root.openldap.org4. access to * by * read

5.# Definizioni BDB6. database bdb 7. suffix "dc=example,dc=com" 8. directory /usr/local/var/openldap-data 9. rootdn "cn=Manager,dc=example,dc=com" 10. rootpw secret

11.# Direttive per la replica12. replogfile /usr/local/var/openldap/slapd.replog 13. replica host=host2.example.com:389 14. binddn="cn=Replicator,dc=example,dc=com"15. bindmethod=simple credentials=secret 16. replica host=slave2.example.com 17. binddn="cn=Replicator,dc=example,dc=com" 18. bindmethod=simple credentials=secret

Esempio di file slapd.conf(2)19. # Definizione degli attributi degli indici20. index uid pres,eq 21. index cn,sn,uid pres,eq,approx,sub22. index objectClass eq

23. # Definizione delle politiche d’acsesso24. access to attr=userPassword 25. by self write 26. by anonymous auth 27. by dn.base="cn=Admin,dc=example,dc=com" write28. by * none 29. access to * 30. by self write 31. by dn.base="cn=Admin,dc=example,dc=com" write 32. by * read

Esempio di file slapd.conf(3)33. # Definizioni BDB34. database bdb 35. suffix "dc=example,dc=net" 36. directory /usr/local/var/openldap-data-net 37. rootdn "cn=Manager,dc=example,dc=com" 38. index objectClass eq 39. access to * by users read

Strumenti per la manutenzione

♦ slappadd ♦ slapcat (Fa il dump del database in formato LDIF)♦ slappasswd♦ ldapadd♦ ldapdelete♦ ldapmodify♦ ldapsearch♦ ldappasswd♦ slapindex(Crea indici per il database)

Basati sulla creazione di file in formato testo LDIF

Gestione degli schemi♦ Definiscono la struttura delle entry del database di

OpenLDAP♦ Si possono includere nel file slapd.conf tramite la direttiva

include♦ Ne esistono di predefiniti ma è possibile installarne altri

ponendo i relativi file nella directory ./ldapdirectory/schema

♦ Lo schema core.schema va incluso obbligatoriamente per garantire l’avvio di OpenLDAP

Page 8: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

8

Estensione degli schema♦ Ogni schema, anche quelli predefiniti, può essere esteso

con ulteriori tipi di attributi,regole di matching,classi di oggetti…

♦ Per definire nuovi schemi sono necessari 5 passi:1. Ottenere un Identificatore di Oggetto2. Assegnare un Prefix Name3. Creare un file schema locale4. Definire tipi di attributi personalizzati5. Definire classi di oggetti personalizzate

OID♦Servono per identificare a livello globale (internet) gli oggetti di uno schema♦Sono assegnati da apposite autorità presenti su Internet♦Sono organizzati in modo gerarchico♦Sono usati anche nel protocollo SNMP

Esempio di gerarchia OID

Classi di oggetti1.1.2.2

MiaClasse1.1.2.2.1

NomeAttributo1.1.2.1.1

TipoAttributo1.1.2.1

Elementi LDAP1.1.2

Elementi SNMP1.1.1

OID Organizzazione

1.1

AssegnamentoOID

Name Prefix e Local file Schema

♦ Un Name Prefixfornisce un nome testuale per ogni elemento dello schema(oggetto)

♦ I Local Files Schema forniscono definizioni che permettono di costruire nuovi elementi e attraverso le direttive objectClass e attributeTypes anche nuove regole sugli stessi

♦ Una volta creati devono essere inclusi con la direttiva include per entrar a far parte della configurazione di OpenLDAP

Specifica di tipi di attributi♦È usata la direttiva attributetype per definire nuovi tipi di attributi

Esempio di attributo tratto da core.schema (specificato nel RFC2256):

attributetype ( 2.5.4.4 NAME ( 'sn' 'surname' )DESC 'RFC2256: last (family) name(s) for whichthe entity is known by'SUP name )

Aggiunta di classi♦ Questa fase permette attraverso la direttiva

objectclass di specificare nuove classi di oggettiobjectclass <RFC2252 Object Class Description>

♦ Struttura di ObjectClassDescription:ObjectClassDescription= "(" whsp

numericoid whsp ; ObjectClass identifier[ "NAME" qdescrs ][ "DESC" qdstring ][ "OBSOLETE" whsp ][ "SUP" oids ] ; Superior ObjectClasses[ ( "ABSTRACT" / "STRUCTURAL" / "AUXILIARY" ) whsp]; default structural[ "MUST" oids ] ; AttributeTypes[ "MAY" oids ] ; AttributeTypeswhsp ")"

Replica con slurpd

♦ La replica delle informazioni è affidata al demone slurpd♦ Usata se il numero di client della rete è elevato♦ Il demone slurpd ha la capacità di propagare i cambiamenti

di un server slapd (detto master) alle altre istanze di slapd(slave)

♦ Il passaggio delle informazioni di replica usa il protocollo LDAP stesso

Page 9: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

9

Replication LogsConfigurato slurpd genera dei file di log in formato LDIF e specifica i cambiamenti in corso nella strttura di directory che saranno poi ripresi dai server slave

La struttura dei cambiamenti è basata sull’invio delle seguenti informazioni:

•Replication site(s)•Timestamp•DN entry•Informazioni sui cambiamenti da effettuare.

Setup del Master slapd♦ I cambiamenti da fare a slapd.confper rendere uno slapd server

master-server sono:

1. Aggiunta di un direttiva replica per ogni replica2. Il parametro binddn =parametro deve referenziare l’opzione

updatedn nei corrispondenti slave slapd.conf file e si deve permettere la scrittura nei database degli slave

3. Aggiungere una direttiva di configurazione replogfile

Setup di slapd-slave♦ Passi per la configurazione dei server slave:

1. Non includere direttive replica2. Non includere direttive replogfile3. Non includere la linea updatedn4. Il DN del parametro binddn =parametro deve fare matching

con con il parametro di replica nel file di configurazione del master server

5. Il DN nella direttiva updatedn deve avere permesso di scrittura nel database

6. Usare la direttiva updateref per definire l’URL che il server slave deve ritornare se è stata ricevuta una richiesta di update

Configurazione di slapd per la replica♦Esempio di direttiva per il supporto delle repliche:

replica host=slave.esempio.com:389binddn=“cn=Replicator,dc=esempio,dc=com”bindmethod=simple credential=secret

GUI per la configurazione di OpenLDAP

Tool per la gestione di OpenLDAP tramite interfaccia grafica:

♦Java LDAP Browser Editorhttp://www. iit.edu/~gawojar/ldap/

♦KLDAPhttp://www.mountpoint.ch/oliver/kldap/

♦KDirAdmhttp://www. carillonis.com/kdiradm /

♦GQhttp://biot.com/gq

OpenLDAP:Un caso di studio(1)

Installazione di PAM_LDAP

Page 10: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

10

PAM♦ PAM è un sistema per la gestione del processo di

autenticazione tramite plug-in♦ Rende trasparente il meccanismo di autenticazione ♦ Permette di usare LDAP come meccanismo di

autenticazione su qualsiasi sistema supporti PAM senza modificare alcuna applicazione

♦ Tramite files di configurazione é possibile stabilire in che modo OpenLDAPdeve autenticare gli utenti

PAM_LDAP

Pam_ldap.so♦ Pam_ldap.so é il modulo necessario a PAM per l’integrazione con

LDAP♦ I file di configurazione di PAM sono nella directory /etc/pam.d

Esempio configurazione PAM

OpenLDAP:Un caso di studio(2)Integrazione con Microsoft Active Directory e

autenticazione degli utenti

Scenario(1)♦ Integrazione di client linux con OpenLDAP installato e Active

Directory♦ Piattaforma basata prevalentemente su soluzioni Microsoft♦ Server Windows 2000 con Active Directory installato♦ Client RedHat Linux♦ Autenticazione basata su Active directory♦ Soluzione adottata al Consorzio Operativo del gruppo MPS

Prerequisiti per Active directory

1. ServicePack 2 per Win20002. MS Resource Kit3. MS Security Pack4. Certificato per il server Windows 2000 controller di dominio5. Schema che simula un server NIS distribuito con Microsoft

Service for Unix oppure il programma MSKADExtplugin6. Abilitare le query anonime su Active Directory

Page 11: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

11

Configurazione Active Directory Configurazione di AD per client Linux

♦Creare un utente per ogni servizio e relativa workstation Linux e succesivamente creare il file keytab con il comando:

Ktpass –princ <nome_servizio>linux-ws.\nomedominiowindows@nomedominio -pass <password> -mapuser <utente> -out linux-\ws.keytab

♦Il file generato linux -ws.keytab dovrebbe essere poi trasferito sulla macchina linux-ws in maniera sicura.

Configurazione client(1)♦ Pacchetti da installare:nss_ldap ,pam_krb5,libnss_ldap.so.2

♦ Modifica del file /etc/nsswitch.conf con le righe:passwd: files ldapshadow: files ldapgroup: files ldap

♦ Modifica della libreria libnss affinchè ricerchi le informazioni usando SSL attraverso la modifica del file /etc/ldap.conf:

Nomehost ldapserver.nomedominio.testbase dc=nomedominio,dc=testssl onport 636

Configurazione client(2)♦Impostare nel file /etc/krb5.conf il KDC e il reame.♦Impostare l’utilizzo del modulo pam_krb5.sonel file /etc/pam.d/system-authLe stesse operazione possono essere fatte in modalità gui tramiteauthconfigcon RedHat Linux

Configurazione slapd.conf♦ Nel file slapd.conf bisogna aggiungere la mappatura fra gli attributi del

server LDAP di Microsoft e quelli cercati dalla libreria nss_ldap.so :

nss_base_passwd cn=Users,dc=dominio,dc=testnss_base_shadow cn=Users,dc=dominio,dc=testnss_base_group cn=Users,dc=dominio,dc=test

nss_map_objectclass posixAccount Usernss_map_objectclass shadowAccount Usernss_map_attribute uid sAMAccountNamenss_map_attribute userPassword msSFUPasswordnss_map_attribute homeDirectory…

Configurazione slapd.conf(2)♦ Per accedere ad Active Directory in modo non anonimo specificare

DN con cui si identifica la connessione e la password:

binddn cn=LDAPQUERYUSER,cn=Users,\dc=dominio,dc=testbind miapassword

♦ Rendere il file accessibile solo dall’utente root

Page 12: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

12

Scenario(2)♦ Integrazione di server linux con OpenLDAP installato e Active

Directory♦ Server RedHat Linux con OpenLDAP e MIT Kerberos V♦ Autenticazione basata su Linux,Kerberose OpenLDAP♦ Fonte RedHat Magazine no. 4

Prerequisiti per OpenLDAP

♦ krb5-libs,krb5-server,krb5-workstation ♦ cyrus-sasl,cyrus-sasl-gssapi

Configurazione slapd.confü Includere nel file slapd.conf gli schema kerberosobject.schema e

nis.schemaü Impostare il tipo di database da usareü Impostare dominio del serverü Specificare il DN dell’amministratore della directory

ESEMPIO:

database ldbm

suffix “dc=dominio,dc=test”

root “cn=ldapadmin ,dc=dominio,dc=test”

Configurazione TLS/SSL♦ In slapd.conf aggiungere le direttive:

TLSCipherSuite HIGH:MEDIUM:+SSL2TLSCertificateFile /usr/share/ssl/serts/slapd.pemTLSCertificateKeyFile /usr/share/ssl/certs/slapd.pem

Gestione certificati♦ Creare un certificato tramite un Makefile posto nella directory

/usr/share/ssl/certs♦ Eseguire make slapd.pem♦ Fornire le informazione per la creazione del certificato♦ Porre il certificato in lettura al gruppo di utenti LDAP

Autenticazione con sasl/gss-api♦ Sostituire l’autenticazione di default(plain ) e mappare i principali

Kerberos in OpenLDAP :

sasl-realm mio.dominiosasl-host kdc.mio.dominiosasl-spec-props “”

sasl-regexpuid=(.*),cn=.*,cn=authuid=$1,ou=person,dc=dominio,dc=test

Page 13: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

13

Impostazione ACL(1)♦ Impostare la lettura della directory:

access to dn=“” by * read access to attr=userPassword

by dn=“cn=root,dc=dominio,dc=test”write

by anonymous authby * none

Impostazione ACL(2)access to attr=loginShell

by dn=“cn=root,dc=dominio,dc=test”write

by self writeby * read

access to *by self writeby * readby anonymous read

Popolazione database con slapadd

♦ File in formato LDIFF:

#ROOT della directorydn: dc=dominio,dc=testdc: dominioobjectClass: topobjectClass: domain…

Popolazione database con slapadd(2)#root del server LDAPdn:dc=ldapadmin ,dc=dominio,dc=testobjectClass: organizationalRoleCn: ldapadmin…#Groups,dominio,testdn:ou=Groups,dc=dominio,dc=testou:GroupsobjectClass: topobjectClass: organizationalUnitobjectClass: domainRelatedObjectassociatedDomain : dominio.test…

Configurazioni alternative♦ Usare script forniti con il software per il trasferimento

delle utenze da NIS o da locale:

1. Modificare lo script migrate_common.ph in /usr/share/doc/openldap-servers

2. Usare migrate_all_on_line.pl per trasferire gli utenti nel database LDAP

La verifica della configurazione può essere fatta con il comandoldapsearch

Limitazioni d’accesso

♦ Per limitare l’accesso al server senza SSL si può usare il firewalliptables con il comando:

iptables -A INPUT -dport ldap –J DROP

♦ Per limitare l’accesso ai soli host fidati si può usarecon tcp_wrappers:

slapd:ALL in /etc/hosts.denyslapd:dominio.test /etc/hosts.allow

Page 14: Il protocollo LDAPads/corso-security/www/CORSO-0203/... · 2004-03-09 · Opzioni della riga di comando ♦-f  Specifica il percorso del file di configurazione ♦-h

14

Bibliografia

♦ Documentazione di www.openldap.org♦ LDAP How-To♦ LDAP Implementation How-To♦ Documentazione www.mandrake.it♦ Documentazione www.redhat.it♦ RedHat Magazione no. 4 Maggio/Giugno

2003

THE END