LDAP sta per Lightweight Directory Access Protocol.
LDAP è una soluzione per accedere alle informazioni archiviate centralmente sulla rete. Queste informazioni archiviate centralmente sono organizzate in una directory che segue lo standard X.500.
Le informazioni vengono archiviate e organizzate in modo gerarchico e il vantaggio di questo approccio è che le informazioni possono essere raggruppate in contenitori e i client possono accedere a questi contenitori quando necessario.
La gerarchia OpenLDAP è quasi simile alla gerarchia DNS.
I seguenti sono i due oggetti più comunemente usati in OpenLDAP:
- cn (nome comune) – Si riferisce alle voci foglia, che sono oggetti finali (ad esempio:utenti e gruppi)
- dc (componente di dominio) – Si riferisce a una delle voci del contenitore nella gerarchia LDAP. Se in una configurazione la gerarchia LDAP è mappata su una gerarchia DNS, in genere tutti i domini DNS vengono indicati come oggetti controller di dominio.
Ad esempio, se nella gerarchia è presente un utente sam.thegeekstuff.com, il nome distinto completo di questo utente viene indicato come cn=sam, dc=thegeekstuff, dc=com. Se hai notato nell'FDN (nome distinto completo), viene utilizzata una virgola come separatore e non un punto, cosa comune in DNS.
Utilizzando i diversi tipi di voci LDAP, è possibile impostare una struttura di directory gerarchica. Questo è il motivo per cui openLDAP è così ampiamente utilizzato. Puoi facilmente creare una gerarchia openLDAP in cui gli oggetti nelle altre posizioni sono facilmente riferiti senza archiviarli su server locali. Ciò rende OpenLDAP una directory leggera, soprattutto se confrontata con altri server di directory come Active Directory di Microsoft.
Ora vediamo come configurare una singola istanza di un server LDAP che può essere utilizzato da più client nella tua rete per l'autenticazione.
Installa i pacchetti OpenLDAP
Su CentOS e RedHat, usa yum install come mostrato di seguito, per installare i pacchetti relativi a openldap.
yum install -y openldap openldap-clients openldap-servers
Dovresti installare i seguenti tre pacchetti:
- openldap-servers – Questo è il server LDAP principale
- openldap-clients:contiene tutte le utilità client LDAP richieste
- openldap – Questo pacchetto contiene le librerie di supporto LDAP
File di configurazione LDAP
- config.ldif – La configurazione predefinita di LDAP è archiviata in un file in /etc/openldap/slapd.d/cn=config.ldif creato nel formato LDIF. Questo è il formato di input LDAP (LDIF), un formato specifico che consente di inserire informazioni nella directory LDAP.
- olcDatabase{2}bdb.ldif – Puoi anche modificare le impostazioni come il numero di connessioni che il server può supportare, i timeout e altre impostazioni del database nel file /etc/openldap/slapd.d/cn=config/olcDatabase{2 }bdb.ldif. Questo è il file che contiene anche i parametri come l'utente root LDAP e il DN di base.
Crea un account olcRootDN come amministratore
Si consiglia sempre di creare prima un account utente dedicato con le autorizzazioni complete per modificare le informazioni sul database LDAP.
Modificare il file olcDatabase={2}bdb.ldif e modificare la voce olcRootDN. Quella che segue è la voce predefinita.
# grep olcRootDN /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif olcRootDN: cn=Manager,dc=my-domain,dc=com
Modifica la riga sopra con un utente amministratore. In questo esempio, l'utente "ramesh" sarà olcRootDN.
olcRootDN: cn=ramesh,dc=thegeekstuff,dc=com
Crea password radice olcRootPW
Ora usa il comando slappasswd per creare un hash per la password di root che vuoi usare. Una volta generata la password, apri il file cn=config.ldif, includi il parametro olcRootPW e copia la password con hash come mostrato di seguito.
Eseguire il comando seguente e specificare una password. Questo genererà l'hash per la password specificata.
# slappasswd New password: SecretLDAPRootPass2015 Re-enter new password: SecretLDAPRootPass2015 {SSHA}1pgok6qWn24lpBkVreTDboTr81rg4QC6
Prendi l'output hash del comando precedente e aggiungilo al parametro oclRootPW nel file config.ldif come mostrato di seguito.
# vi /etc/openldap/slapd.d/cn=config.ldif olcRootPW: {SSHA}1pgok6qWn24lpBkVreTDboTr81rg4QC6
Crea nome di dominio olcSuffix
Ora imposta olcSuffix e imposta il dominio che desideri. Modifica semplicemente la riga che inizia con olcSuffix nel file olcDatabase={2}bdb.ldif come mostrato di seguito.
# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif olcSuffix: dc=thegeekstuff,dc=com
Verifica i file di configurazione
Utilizzare il comando slaptest per verificare il file di configurazione come mostrato di seguito. Questo dovrebbe visualizzare il messaggio "test riuscito" come mostrato di seguito.
# slaptest -u config file testing succeeded
Potresti ricevere i seguenti messaggi durante il comando precedente, che puoi ignorare per ora.
54a39508 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif" 54a39508 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif"
Avvia il server LDAP
Avvia il server ldap come mostrato di seguito.
# service slapd start Checking configuration files for slapd: [WARNING] config file testing succeeded Starting slapd: [ OK ]
Verifica la ricerca LDAP
Per verificare che il server ldap sia configurato correttamente, puoi utilizzare il comando seguente e verificare che la voce del dominio sia presente.
# ldapsearch -x -b "dc=thegeekstuff,dc=com" # extended LDIF # # LDAPv3 # base <dc=thegeekstuff,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object # numResponses: 1
Struttura LDAP di base in base.ldif
L'uso di oggetti OU (unità organizzativa) può aiutare a fornire una struttura aggiuntiva al database LDAP. Se stai pianificando di aggiungere diversi tipi di voci, come utenti, gruppi, computer, stampanti e altro alla directory LDAP, semplifica l'inserimento di ogni tipo di voce nel proprio contenitore.
Per creare queste unità organizzative, puoi creare un file LDIF iniziale come mostrato nell'esempio seguente. In questo esempio, questo file consente di creare il contenitore di base che è dc=thegeekstuff,dc=com e crea due unità organizzative con i nomi utenti e gruppi in quel contenitore.
# cat base.ldif dn: dc=thegeekstuff,dc=com objectClass: dcObject objectClass: organization o: thegeekstuff.com dc: thegeekstuff dn: ou=users,dc=thegeekstuff,dc=com objectClass: organizationalUnit objectClass: top ou: users dn: ou=groups,dc=thegeekstuff,dc=com objectClass: organizationalUnit objectClass: top ou: groups
Importa la struttura di base usando ldapadd
Ora possiamo importare la struttura di base nella directory LDAP usando il comando ldapadd come mostrato di seguito.
# ldapadd -x -W -D "cn=ramesh,dc=thegeekstuff,dc=com" -f base.ldif Enter LDAP Password: adding new entry "dc=thegeekstuff,dc=com" adding new entry "ou=users,dc=thegeekstuff,dc=com" adding new entry "ou=groups,dc=thegeekstuff,dc=com"
Verifica la struttura di base usando ldapsearch
Per verificare che le unità organizzative siano state create correttamente, utilizzare il seguente comando ldapsearch.
# ldapsearch -x -W -D "cn=ramesh,dc=thegeekstuff,dc=com" -b "dc=thegeekstuff,dc=com" "(objectclass=*)" Enter LDAP Password:
L'output del comando precedente visualizzerà tutti gli oggetti nella struttura della directory LDAP.
# extended LDIF # # LDAPv3 # base <dc=thegeekstuff,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL # # thegeekstuff.com dn: dc=thegeekstuff,dc=com objectClass: dcObject objectClass: organization o: thegeekstuff.com dc: thegeekstuff # users, thegeekstuff.com dn: ou=users,dc=thegeekstuff,dc=com objectClass: organizationalUnit objectClass: top ou: users # groups, thegeekstuff.com dn: ou=groups,dc=thegeekstuff,dc=com objectClass: organizationalUnit objectClass: top ou: groups # search result search: 2 result: 0 Success # numResponses: 4 # numEntries: 3
Nel prossimo articolo su OpenLDAP, spiegheremo come aggiungere nuovi utenti e gruppi alla directory LDAP.