Old:Samba e OpenLDAP: creare un controller di dominio con Ubuntu Server LDAP Server
Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica. |
LDAP Server
Installazione del server LDAP
Il server LDAP è essenzialmente un database gerarchico che viene utilizzato per la memorizzazione dei dati degli utenti, dei computer del dominio e di tutto quanto si desideri gestire tramite una base dati condivisibile via rete tra più sistemi.
Si considera che il server in questione venga utilizzato all'interno di una rete aziendale altamente affidabile e non verranno, pertanto, trattati gli aspetti relativi alla crittografia delle comunicazioni. Questa scelta riduce la sicurezza, pertanto si consiglia di approfondire l'argomento. Se si è interessati ad un'implementazione sicura del protocollo LDAP si veda ad esempio la guida Samba, OpenLDAP, Kerberos: creare un controller di dominio sicuro con Debian Lenny, che è basata sulla guida che state leggendo, ma che introduce e analizza una serie di aspetti legati alla trasmissione e all'archiviazione sicura delle informazioni.
Per utilizzare il server LDAP occorre installare il pacchetto slapd
che costituisce un'implementazione di server LDAP per Linux e il pacchetto ldap-utils
, un insieme di strumenti che ne permettono la gestione.
# apt-get install slapd ldap-utils samba-doc
Si presume che l'utente operi con l'account root per eseguire le operazioni di seguito descritte.
Durante l'installazione verranno richieste alcune informazioni necessarie a configurare il server LDAP. In particolare verrà richiesto il nome del dominio che può essere un dominio interno completamente inventato (es. miodominio.tld) o un dominio internet valido. La scelta è legata a politiche organizzative aziendali e tecniche che richiederebbero una trattazione approfondita e che esula da questo HOWTO.
Nei file riportati si considera che il dominio specificato è dominio.local
, un dominio interno non valido per Internet.
In seguito verrà richiesta la password per l'utente amministratore. Scegliete una password particolarmente sicura, in quanto tramite essa si potrà avere accesso completo alla gestione degli utenti del vostro dominio e, pertanto, accedere a qualsiasi sistema presente sulla vostra rete. Questa password, inoltre, verrà utilizzata anche in seguito in alcuni file di configurazione, pertanto è bene ricordarsela.
Come nome dell'organizzazione mettete una descrizione della vostra organizzazione: Rete LAN di Dominio.
Per tutte le altre opzioni possono essere confermate le impostazioni di default.
Per andare più in profondità nella configurazione del server LDAP è consigliabile, subito dopo l'installazione, lanciare il comando:
# dpkg-reconfigure slapd
Verrà eseguita la riconfigurazione di OpenLDAP, ma saranno poste più domande. Rispondete così:
- Omettere la configurazione di OpenLDAP: no
- Nome del dominio: dominio.local
- Nome dell'organizzazione: DOMINIO
- Password di admin: secret
- Conferma password: secret
- Cancellare il database quando si effettua il purge di slapd: no
- Spostare il vecchio database: sì
- Permettere LDAPv2: no
Configurazione del server LDAP
Passiamo ora alla configurazione del server LDAP.
Innanzitutto effettuiamo un backup di LDAP:
# slapcat > ~/slapd.ldif o semplicemente # cp -R /etc/ldap/slapd.d /etc/slapd.d.backup
Adesso dobbiamo recuperare gli schemi mancanti, che aggiungeremo poi alla configurazione di LDAP, e copiare in /etc/ldap/schema
lo schema LDAP necessario per SAMBA.
# cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/ # gzip -d /etc/ldap/schema/samba.schema.gz # mkdir /tmp/ldif_output
Creiamo il file schema_convert.conf
ed editatelo:
# touch /tmp/schema_convert.conf # vim /tmp/schema_convert.conf
editate così:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/samba.schema
salvate:
# slapcat -f /tmp/schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/samba.ldif # vim /tmp/samba.ldif
modificate il file come segue:
dn: cn=samba,cn=schema,cn=config ... cn: samba
rimuovere le stringhe a fondo pagina:
structuralObjectClass: olcSchemaConfig entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95 creatorsName: cn=config createTimestamp: 20080827045234Z entryCSN: 20080827045234.341425Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20080827045234Z
Salvate tutto e copiare in /etc/ldap/schema
:
# cp /tmp/samba.ldif /etc/ldap/schema
Quindi generate l'hash MD5 della password di root di LDAP:
# slappasswd -s secret -h {MD5}
e prendete nota del risultato della password in md5.
La versione utilizzata di OpenLdap ha come file di configurazione la cartella slapd.d
ubicata in /etc/ldap/slapd.d
ed è stato quindi soppresso il precedente slapd.conf
. La differenza è nella configurazione e nella funzionalità degli stessi. Il primo file di configurazione era statico perciò richiedeva sempre lo stop del demone slapd
. Il secondo è dinamico perciò va da sé che è molto più flessibile.
In questa guida verrà utilizzato slapd.d
come di default, ma ricordo che in /etc/default/slapd
si può impostare il vecchio database slapd.conf
oppure si può convertire un vecchio database slapd.conf
in slapd.d
con il comando:
# slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d
Ora occorre aggiungere gli schemi che ci serviranno per la configurazione:
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/samba.ldif
Creare il file module.ldif
per aggiungere il modulo del backend e crearlo:
# touch /tmp/module.ldif # vim /tmp/module.ldif
editarlo così:
dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/lib/ldap olcModuleload: back_bdb.la
salvare e caricare il file:
# ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/module.ldif
Creare il file backend.ldif
ed editarlo:
# touch /tmp/backend.ldif # vim /tmp/backend.ldif
editarlo così:
dn: cn=module,cn=config objectclass: olcModuleList cn: module olcModuleLoad: back_bdb.la dn: olcDatabase=bdb objectClass: olcDatabaseConfig objectClass: olcBdbConfig olcDatabase: bdb olcDbDirectory: /var/lib/ldap olcSuffix: dc=dominio,dc=local olcAccess: {0}to attrs=userPassword,SambaLMPassword,SambaNTPassword,sambaPwdLastSet,sambaPwdMustChange,sambaPasswordHistory by dn="cn=admin,dc=dominio,dc=local" write by anonymous auth by self write by * none olcAccess: {1}to attrs=shadowLastChange by self write by * read olcAccess: {2}to dn.base="" by self write by * read olcAccess: {3}to * by dn="cn=admin,dc=dominio,dc=local" write by * read olcLastMod: TRUE olcRootDN: cn=admin,dc=dominio,dc=local olcDbCheckpoint: 512 30 olcDbConfig: {0}set_cachesize 0 2097152 0 olcDbConfig: {1}set_lk_max_objects 1500 olcDbConfig: {2}set_lk_max_locks 1500 olcDbConfig: {3}set_lk_max_lockers 1500 olcDbIndex: objectClass eq olcDbIndex: uidNumber eq olcDbIndex: cn pres,sub,eq olcDbIndex: sn pres,sub,eq olcDbIndex: gidNumber eq olcDbIndex: uid pres,sub,eq olcDbIndex: memberUid eq olcDbIndex: uniqueMember eq olcDbIndex: displayName pres,sub,eq olcDbIndex: sambaSID eq olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaDomainName eq olcDbIndex: sambaSIDList eq olcDbIndex: sambaGroupType eq olcDbIndex: default sub
Aggiungere il backend così:
# ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/backend.ldif
Infine aggiungere le informazioni per l'autenticazione e la criptazione della password degli utenti:
# vim /etc/ldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif
e aggiungere:
olcRootPW: {MD5}..--..\\..//..:: olcPasswordHash: {MD5}
Editiamo cn=config.ldif
così:
olcLogLevel: 1 2 8 64 128 256 512 olcAuthzPolicy: none olcAuthzRegexp: uid=(.*),cn=.*,cn=auth ldap:///dc=milanoaccademia,dc=lan??sub?(uid=$1)
Eliminiamo il contenuto della cartella /var/lib/ldap
:
# rm -rf /var/lib/ldap/*
Riavviamo il demone slapd
:
# /etc/init.d/slapd restart