Giacomo Tenaglia - CNR Biblioteca di Area - 19 Dicembre 2006

LDAP: strumenti per il management

I tool testuali di OpenLDAP

Ricerca dati:
ldapsearch -x -W -b dc=denil,dc=bo,dc=cnr,dc=it "(objectClass=*)"
ldapsearch -x -W -b dc=denil,dc=bo,dc=cnr,dc=it -D cn=pippo,dc=denil,dc=bo,dc=cnr,dc=it "(uid=pippo)"
ldapsearch -x -W -b ou=people,dc=denil,dc=bo,dc=cnr,dc=it -D cn=admin,dc=denil,dc=bo,dc=cnr,dc=it "(objectClass=posixAccount)"

Aggiunta e modifica dati:
ldapadd -x -W -D cn=admin,dc=denil,dc=bo,dc=cnr,dc=it -f entrylist.ldif
ldapmodify -x -W -D cn=admin,dc=denil,dc=bo,dc=cnr,dc=it -f entrylist.ldif

Eliminazione dati:
ldapdelete -x -W -D cn=admin,dc=denil,dc=bo,dc=cnr,dc=it uid=pippo,ou=People,dc=denil,dc=bo,dc=cnr,dc=it

Cambio password:
ldappasswd -x -W -D cn=admin,dc=denil,dc=bo,dc=cnr,dc=it -S uid=pippo,ou=People,dc=denil,dc=bo,dc=cnr,dc=it

Check valore attributi (true/false):
ldapcompare -x -W uid=pippo,ou=People,dc=denil,dc=bo,dc=cnr,dc=it mail:pippo@pluto.org

Interfacce grafiche

gq
Semplice e leggero, non strettamente orientato alla gestione account

luma
Dispone di diversi moduli: browser, rubrica, amministrazione utenti, ecc.
Molto completo (forse troppo?)

Web based

phpLDAPAdmin
Configurazione via /etc/phpldapadmin/config.php
Non strettamente orientato alla gestione account
http://phpldapadmin.sourceforge.net/

gosa
Usato dal progetto Linux nella citta` di Monaco di Baviera
Abbastanza invasivo: bisogna includere schemi appositi, ogni utente deve avere objectClass:gosaObject
Creazione del file di configurazione via web, da mettere in /etc, vanno create in LDAP le entry necessarie per l'amministrazione
https://gosa.gonicus.de/demo (user: gosa, pass: gosa)
https://gosa.gonicus.de/gosa (user: giact, pass: jcatDIOz)

LAM
Configurazione interamente via web
http://lam.sourceforge.net/

Integrazione con alcuni applicativi

Web server: Apache

Apache 2.2: mod_authnz_ldap
Apache 2.0: mod_aut_ldap (analoga)

authnz_ldap.conf:

LDAPTrustedGlobalCert CA_BASE64 /etc/apache2/ssl/cacert.pem
LDAPTrustedMode SSL

httpd.conf:

<Location /securecontent>
AuthName "Autenticazione su LDAP"
AuthType Basic
AuthBasicProvider ldap
AuthLDAPURL ldaps://denil.bo.cnr.it/ou=People,dc=denil,dc=bo,dc=cnr,dc=it?uid?sub?(uid=*)
AuthzLDAPAuthoritative off
require valid-user
</Location>

https://denil.bo.cnr.it/securecontent

FTP server: ProFTPD

Come molti altri servizi, si può confiugurare l'autenticazione a proftpd via PAM, appoggiandosi direttamente su LDAP (vedi "Autenticazione centralizzata con OpenLDAP" di Luca Ferroni).
In alternativa il modulo per l'autenticazione su ldap puo` essere direttamente incluso in proftpd:
$ proftpd -l
Compiled-in modules:
...
mod_ldap.c
...

Oppure può essere installato separatamente (come in Debian):
apt-get install proftpd-ldap

proftpd.conf:

# per poter accedere alle password su LDAP
PersistentPasswd off
# attiva l'autenticazione su LDAP specificando server e base DN
LDAPServer denil.bo.cnr.it
LDAPDoAuth on "ou=people,dc=denil,dc=bo,dc=cnr,dc=it"
# l'username specificato deve poter fare bind su LDAP
LDAPAuthBinds on
# lookup di user/group ID nella directory
LDAPDoGIDLookups on "ou=group,dc=denil,dc=bo,dc=cnr,dc=it"
LDAPDoUIDLookups on "ou=people,dc=denil,dc=bo,dc=cnr,dc=it"

Di default gli utenti vengono ricercati con il filtro:
(&(uid=%u)(objectclass=posixAccount))

Può essere definito un filtro diverso aggiungendo un terzo parametro a LDAPDoAuth in proftpd.conf

Mail alias database: Postfix

Si utilizza l'attributo mail delle entry in ou=People

main.cf

# gestione alias tramite LDAP
alias_maps = ldap:/etc/postfix/ldap-alias.cf

ldap-alias.cf

version = 3
server_host = denil.bo.cnr.it
search_base = ou=people,dc=denil,dc=bo,dc=cnr,dc=it
scope = sub
query_filter = (uid=%s)
result_attribute = mail

Ricerca utenti:
postmap -q pippo ldap:/etc/postfix/ldap-alias.cf

File server e autenticazione windows: Samba

smbldap-tools: smbldap-useradd, smbldap-groupadd, ...

smb.conf:

[global]
...
# smbldap
passwd program = /usr/sbin/smbldap-passwd -u %u
passwd chat = "Changing password for*\nNew password*" %n\n "*Retype new password*" %n\n"
ldap passwd sync = Yes
passdb backend = ldapsam:ldaps://127.0.0.1/
ldap admin dn = cn=admin,dc=denil,dc=bo,dc=cnr,dc=it
ldap suffix = dc=denil,dc=bo,dc=cnr,dc=it
ldap group suffix = ou=Group
ldap user suffix = ou=People
ldap machine suffix = ou=Hosts
ldap ssl = On
add machine script = /usr/sbin/smbldap-useradd -w "%u"
add user script = /usr/sbin/smbldap-useradd -m "%u"
delete user script = /usr/sbin/smbldap-userdel "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'
ldap delete dn = No
...

Integrabile con un PDC Samba per la gestione dei roaming profiles.

Giacomo Tenaglia - CNR Biblioteca di Area - 19 Dicembre 2006