Primo file di configurazione di OpenLDAP
Il primo passo per avere un server LDAP funzionante, modificandone il file di configurazione principale slapd.conf
Premessa
Una volta installato OpenLDAP, bisognerà iniziare a configurarlo per testarne il corretto funzionamento ed anche per iniziare a capire quali sono le direttive lo governano; per fare questo inizieremo con una configurazione molto semplice e di facile utilizzo, ma di cui si sconsiglia il suo utilizzo in ambienti produttivi.
slapd.conf
Di seguito il file di configurazione slapd.conf che dovrà essere posto nella directory /usr/local/etc/openldap
######## # Base # ######## include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema pidfile /usr/local/var/run/slapd.pid argsfile /usr/local/var/run/slapd.args loglevel none modulepath /usr/local/libexec/openldap moduleload back_hdb ############################### # Configurazione del Database # ############################### database hdb suffix "dc=example,dc=com" rootdn "cn=Admin,dc=example,dc=com" # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw passwordSegreta # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /usr/local/var/openldap-data # Indices to maintain index objectClass eq index cn sub,eq ####### # ACL # ####### access to attrs=userPassword by anonymous auth by self write by * none access to * by self write by * none
Analisi del contenuto
Come potete vedere il file slapd.conf viene suddiviso in tre macrosezioni che corrispondono:
- Base
- Configurazione del database
- Access Control List
Dove nella base saranno contenute le direttive che regolano il comportamento del nostro demone slapd; nella sezione di configurazione del database saranno incluse quelle relative allo storage utilizzato; in ultimo invece avremo le direttive relative al controllo degli accessi. Comunque di seguito una spiegazione per punti delle tre istanze incontrate.
Base
Con include potremo includere altri file di configurazione all'interno del nostro file principale, per fare questo si dovrà utilizzare un path assoluto e non relativo. Nel nostro esempio vengono caricati gli schemi del core, del cosine e l'inetorgperson (il significato degli schemi verrà affrontato più avanti).
Con pidfile verrà indicato il file utilizzato dal nostro demone per scriverci il numero del nostro process identification (PID) utile ad esempio agli script di init per riconoscere univocamente il PID del demone. Ad esempio per effettuare il kill del demone potremmo eseguire il comando
$ sudo cat /usr/local/etc/openldap/slapd.conf | egrep '^pidfile' | \
awk '{print $2}' | xargs sudo cat | xargs sudo kill
Con argsfile indicheremo il file testuale che conterrà i parametri passati al nostro demone slapd all'avvio, che equivale a quello che potreste trovare nel file cmdline del proc file system associato al processo slapd.
Con modulepath si indicherà, sempre tramite percorso assoluto, dove il demone slapd andrà a ricercare i moduli che dovrà caricare.
Con moduleload indicheremo i moduli che si dovranno caricare. Per fare questo si potrà indicare il solo nome del modulo, e nel qual caso verrà ricercato nelle directory indicate nella direttiva modulepath, oppure si potrà immettere il percorso assoluto del modulo.
Configurazione del database
Con database indicheremo la tipologia di database utilizzata dal nostro demone per storicizzare i record, e nel nostro caso è impostata a hdb che equivale a Hierarchical DataBase.
Con suffix andremo ad indicare il nostro "Distinguished Names" che servirà il nostro server LDAP.
Con rootdn andremo ad indicare il nostro Directory Manager, che è l'utente speciale privilegiato che potrà essere utilizzato per l'amministrazione del nostro server LDAP.
Con rootpw indicheremo la password dell'utente definito nella direttiva rootdn, nel nostro caso viene utilizzata una password in chiaro nel file, ed anche per questo motivo la presente configurazione non dovrà essere utilizzata in produzione.
Con directory indicheremo la directory dove verrà storicizzato il database vero e proprio.
Con index indicheremo quali indici far costruire al nostro server e su quali campi.
Controllo degli accessi
In ultimo andremo ad inserire le regole di accesso al contenuto presente nel nostro server, ma per ora ci basta sapere che con il primo gruppo di regole andremo a definire il cosidetto "binding" dell'utente, ovvero se questo cerca di accedere all'attriburo userPassword, se non si è ancora autenticato (anonymous) gli verrà richiesta l'autenticazione; nel caso si sia già autenticato potrà modificare il suo attributo userPassword (self) potendo così effettuare il cambio password; ed in ultimo per tutti gli altri casi verrà negato l'accesso.
Metre la seconda acl andrà a definire i permessi di default, dove il possessore avrà il permesso di scrittura, in caso contrario invece non potrà accederci.
Avvio del servizio
A questo punto non ci resta che avviare il demone slapd in modo tale che possa rispondere alle richieste dei client e verificarne così la correttezza della configurazione, per fare questo da terminale potremmo lanciare:
$ sudo /usr/local/libexec/slapd -f /usr/local/etc/openldap/slapd.conf
