Hanno detto:
Hardware: la parte di un computer che puoi prendere a calci
Argomenti nel blog
ArchLinux Small Business Server (4) - LDAP server
Ora si entra nel vivo, si comincia ad installare e configurare i servizi sulla nostra box ancora "vuota". Iniziamo con LDAP che useremo come servizio di autenticazione per i nostri utenti e servizi. E qualche problema comincia ad affiorare. :)
LDAP Server
Introduzione
Il server LDAP è essenzialmente un database gerarchico che viene utilizzato per la memorizzazione dei dati degli utenti, e di tutto quanto si desideri gestire tramite una base dati condivisibile via rete tra più sistemi. Per maggiori informazioni potete leggere la definizione che ne da wikipedia.
Perchè installiamo questo servizio ? Per la sua grande versatilità e comodità. La recente normativa sulla privacy impone (tra le altre cose) di cambiare periodicamente la password degli utenti. Oltretutto ogni utente deve poter cambiare la propria password in modo autonomo. Non vorrete mica ogni volta aggiornare manualmente prima la password nel pc, poi della condivisione poi della mail, poi ...
Installando un server LDAP (nel nostro caso OpenLDAP) abbiamo la possibilità di centralizzare tutto (o quasi). Cambiando la password nel pc dell'utente questa verrà salvata nell'albero LDAP e tutti i servizi saranno sincronizzati.
Signori e Signore ecco il Single Signon , il santo graal di ogni amministratore di rete :).
Installazione
Preleviamo ed installiamo i pacchetti che ci servono :
sudo pacman -S openldap openldap-clients nss_ldap pam_ldap
pacman provvederà ad installare eventuali dipendenze.
Configurazione del Server
OpenLDAP è un progetto complesso, qui non fornirò nessuna informazione "supplementare" a questo servizio, come sempre date una occhiata al sito di riferimento per maggiori informazioni.
Iniziamo con la parte server :
/etc/openldap/slapd.conf
La parte server di openLDAP và configurata editando una serie di file, per primo il file /etc/openldap/slapd.conf
sudo nano /etc/openldap/slapd.conf
che facciamo diventare così :
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
allow bind_v2
password-hash {md5}
pidfile /var/run/slapd.pid
argsfile /var/run/slapd.args
database bdb
suffix "dc=mede,dc=it"
rootdn "cn=Manager,dc=mede,dc=it"
#Per la password usa il comando
#slappasswd -h {MD5} -s passwordstring
#e copia il risultato
rootpw {MD5}En3fj26GwP2ni1HHJHe1KA==
directory /var/lib/openldap/openldap-data
index objectClass eq
index uid eq
Attenzione al parametro rootpw : la stringa che vedete corrisponde all' hash MD5 della password che ho deciso, nel mio caso archimede, che ho ottenuto così:
slappasswd -h {MD5} -s archimede
decidete la vostra password e mettetela come parametro di rootpw.
/etc/nsswitch.conf
Il file del Network Services Switch /etc/nsswitch.conf determina l'ordine delle ricerche effettuate quando viene richiesta una certa informazione, proprio come il file /ets/host.conf che determina il modo in cui effettuare le ricerche degli host. Per esempio la riga:
hosts: files dns ldap
specifica che le funzioni di ricerca degli host dovrebbero prima guardare nel file locale /etc/hosts, di seguito fare una richiesta al servizio dei nomi di dominio DNS ed infine utilizzare il server ldap. A quel punto, se nessuna corrispondenza è stata trovata, viene riportato un errore. Questo file deve essere leggibile da ogni utente!
Dobbiamo istruire nsswitch al fine di fargli usare il nostro server LDAP per la risoluzione perlomeno delle password.
Per ovviare ad un fastidioso baco di udev (o di nsswitch, non saprei) creiamo due file che poi scambieramo al boot (vedi più avanti).
Prima il file che non utilizza ldap :
sudo nano /etc/nsswitch.file
che diventa :
#Begin /etc/nsswitch.conf
passwd: files
group: files
shadow: files
publickey: files
netmasks: files
bootparams: files
automount: files
sendmailvars: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: db files
#End /etc/nsswitch.conf
e poi il file che invece lo utilizza:
sudo nano /etc/nsswitch.ldap
che diventa :
#Begin /etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap
publickey: files
netmasks: files
bootparams: files
automount: files
sendmailvars: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: db files
netmasks: files
bootparams: files
publickey: files
automount: files
aliases: files
sendmailvars: files
#End /etc/nsswitch.conf
/etc/rc.sysinit
Per ovviare al fastidioso bug menzionato sopra che fà bloccare il nostro server al boot durante l'avvio di udev, applichiamo un (non molto bello) workaround che per lo meno mi permette di non buttare tutto alle ortiche.
Prima editiamo il nostro file menu.lst di grub per montare il file system in scrittura al boot :
sudo nano /boot/grub/menu.lst
e cambiamo la riga kernel sostituendo "ro" (read only) con "rw" (read write).
#(0) Arch Linux
title Arch Linux
root (hd0,0)
kernel /vmlinuz26 root=/dev/sda3 rw
initrd /kernel26.img
Ora editiamo il file di inizializzazione:
sudo nano /etc/rc.sysinit
andiamo nella sezione di udev dove vedete scritto:
status "Starting UDev Daemon" /etc/start_udev init
e facciamola diventare così:
status "Stopping LDAP authentication" /bin/cp /etc/nsswitch.file /etc/nsswitch.conf
status "Starting UDev Daemon" /etc/start_udev init
status "Starting LDAP authentication" /bin/cp /etc/nsswitch.ldap /etc/nsswitch.conf
come possiamo vedere disabiliamo le modifiche a /etc/nsswitch.conf prima che parta udev e subito dopo le ripristiniamo.
Se qualcuno ha notizia su come si possa far meglio me lo comunichi subito !
PAM
PAM (Pluggable Authentication Modules) è un meccanismo per integrare più schemi di autenticazione a basso livello in un'unica API ad alto livello, permettendo a programmi che necessitino di una forma di autenticazione, di essere scritti indipendentemente dallo schema di autenticazione sottostante utilizzato.
Ora modifichiamo i nostri file di configurazione di PAM per fargli utilizzare anche LDAP. I seguenti file non sono "la verità assoluta" ma nel mio caso funzionano e sono una buona base di partenza. Per maggiorni informazioni rivolgetevi alla documentazione ufficiale. I nomi dei file dovrebbero già far capire a che servizio ci si riferisce. Fate sempre una copia dei vostri file originali prima di applicare le modifiche.
/etc/pam.d/login
auth requisite pam_securetty.so
auth requisite pam_nologin.so
auth sufficient pam_ldap.so
auth required pam_unix.so use_first_pass
auth required pam_tally.so onerr=succeed file=/var/log/faillog
account required pam_access.so
account required pam_time.so
account required pam_unix.so
account sufficient pam_ldap.so
password sufficient pam_ldap.so
session required pam_unix.so
session required pam_env.so
session required pam_motd.so
session required pam_limits.so
session optional pam_mail.so dir=/var/spool/mail standard
session sufficient pam_ldap.so
session optional pam_lastlog.so
/etc/pam.d/shadow
auth sufficient pam_rootok.so
auth required pam_unix.so
auth sufficient pam_ldap.so use_first_pass
account required pam_unix.so
account sufficient pam_ldap.so
session required pam_unix.so
session sufficient pam_ldap.so
password sufficient pam_ldap.so
password required pam_permit.so
/etc/pam.d/passwd
password sufficient pam_ldap.so
password required pam_unix.so shadow nullok
/etc/pam.d/sshd
auth required pam_nologin.so
auth sufficient pam_ldap.so
auth required pam_env.so
auth required pam_unix.so use_first_pass
account sufficient pam_ldap.so
account required pam_unix.so
account required pam_time.so
password required pam_ldap.so
password required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session required pam_unix_session.so
session sufficient pam_ldap.so
session required pam_limits.so
I file /etc/pam.d/su e /etc/pam.d/sudo preferisco lasciarli come stanno.
/etc/hosts.allow
Per ultima cosa ricordiamoci di abilitare il permesso a contattare il server attraverso il protocollo LDAP, altrimenti (come per sshd) non funzionerà niente.
sudo nano /etc/hosts.allow
e aggiungiamo la riga
slapd : ALL : allow
Database di OpenLDAP
Diamo una configurazione di base al database di OpenLDAP copiando il suo file di esempio che a noi và più che bene:
sudo cp /var/lib/openldap/openldap-data/DB_CONFIG.example /var/lib/openldap/openldap-data/DB_CONFIG
Bene! la parte server è conclusa (o perlomeno io mi fermo qui per il momento). Nella prossima puntata vedremo la parte client e avviaremo il servizio. Inutile dirvi che commenti e precisazioni sono le benvenute, e che spiegazioni dettagliate consultiate l'abbondante documentazione online.
A presto.

Ottimo, volevo giusto mettere su un server ldap+samba per fare qualche prova, aspetto impaziente il resto della guida :D
Il workaround non serve più con le ultime versioni di kernel. Sembra invece ci sia un rallentamento generale credo legato alla configurazione di nss_ldap.conf e un bel [FAIL] sul servizio SLAPD una volta integrati gli schemi post installazione di Samba. (nis.schema)
questa guida è un po' vecchiotta, andrebbe aggiornata ;)
E' un po' che non installo da zero, per il fatto del workaround me ne ero accorto dopo un aggiornamento tempo fà, per il resto che dici controllerò.
Tuttavia è alquanto improbabile che il problema sia in nss_ldap.conf, molto più probabile che il rallentamento sia dovuto al fatto che "fatica" a trovare il server LDAP (risolve l'URI del tuo server ? /etc/hosts a posto ?). Se poi il rallentamento è nel login meglio rivolgere l'attenzione a PAM e ai suoi file di configurazione.
Per quanto riguarda l'errore sui file degli schemi non saprei dirti mi sembra alquanto strano, ma non ho provato ultimamente.
Good luck ! ;)
Ciao a tutti, una domanda imporatantissima, se tento di modificare un file di configurazione una volta installato il sistema, oppure tenpo di eliminare un file..mi nega l'accesso poiche' il fyle system e' in read-only...ho faatto come dite voi, mettendo rw al posto di ro...pero' niente...ho renistallato tutto mettendo rw al posto di ro, e niente..mi potete dare una mano...??
grazie