Samba e OpenLDAP: creare un controller di dominio con Debian Squeeze: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
Riga 1 149: Riga 1 149:
</pre>
</pre>


== Configurazione delle autenticazioni Unix ==
A questo punto occorre configurare il nostro server affinchè veda gli utenti LDAP come normali utenti unix di sistema.
=== Installazione del demone name service caching daemon (nscd) ===
Poichè il nostro server LDAP sarà consultato in maniera continuativa, potrebbe essere una buona idea installare un servizio di cache per alcuni dati degli utenti. In questo modo i dati contenuti in cache saranno forniti senza eseguire un accesso al database LDAP, velocizzando di conseguenza i tempi di risposta del server. Il demone nscd (name service caching daemon) esegue esattamente questa cosa:
<pre>
# apt-get install nscd
</pre>
La configurazione di default è più che sufficiente per i nostri scopi.<br/>
Questo potrebbe inoltre essere un buon momento per riavviare il demone di Samba:
<pre>
# /etc/init.d/samba restart
</pre>
=== Installazione di libnss-ldap ===
Per prima cosa installeremo il pacchetto libnss-ldap, con il classico comando:
<pre>
# apt-get install libnss-ldap
</pre>
Non preoccupatevi delle domande che vi vengono poste durante l'installazione. Non appena terminata, infatti, andremo a riconfigurare il pacchetto con il comando:
<pre>
# dpkg-reconfigure libnss-ldap
</pre>
Rispondete in questo modo alle domande che vi vengono poste dall'installer:
* Server LDAP: 127.0.0.1
* Distinguished Name (DN): dc=dominio,dc=local
* LDAP Version: 3
* E' richiesto l'utente per il database LDAP: no
* Privilegi speciali LDAP per root: sí
* Configurazione leggibile e scrivibile solo dal propietario: sí
* Account LDAP per root cn=admin,dc=dominio,dc=local
* Password LDAP di root: password
A questo punto bisogna modificare il file <tt>/etc/nsswitch.conf</tt> cambiando le tre linee
<pre>
passwd: compat
group: compat
shadow: compat
</pre>
con
<pre>
passwd: files ldap
group: files ldap
shadow: files ldap
hosts: files dns ldap
</pre>
Il contenuto del file dovrebbe essere il seguente:<br/>
'''/etc/nsswitch.conf'''
<pre>
# /etc/nsswitch.conf
##
Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: files ldap
group: files ldap
shadow: files ldap
hosts: files dns ldap
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
</pre>
Modificate inotre il file '''/etc/libnss-ldap.conf''', decommentando e modificando le righe seguenti e lasciando decommentate quelle di default:
<pre>
host 127.0.0.1
base dc=dominio,dc=local
ldap_version 3
scope one
pam_filter objectclass=posixaccount
pam_login_attribute uid
pam_member_attribute gid
bind_policy soft
pam_password md5
nss_base_passwd ou=Users,dc=dominio,dc=local?sub
nss_base_passwd ou=Computers,dc=dominio,dc=local?sub
nss_base_shadow ou=Users,dc=dominio,dc=local?sub
nss_base_group ou=Groups,dc=dominio,dc=local?one
</pre>
<br/>
A causa di un bug documentato (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=375077) e a cui il team di sviluppo di Debian ha fornito una soluzione parziale (è stato eliminato il problema, ma non i messaggi d'errore generati al boot) è possibile che al reboot compaiano messaggi di errore simili ai seguenti:
<pre>
...
udevd[1350]: nss_ldap: could not connect to any LDAP server as cn=admin,dc=home,dc=tld - Can't contact LDAP server
udevd[1350]: nss_ldap: failed to bind to LDAP server ldap://127.0.0.1: Can't contact LDAP server
udevd[1350]: nss_ldap: could not search LDAP server - Server is unavailable
udevd[1350]: lookup_user: error resolving user 'tss': Illegal seek
...
</pre>
Una possibile via per eludere il problema è quella di aggiungere a mano gli utenti di sistema mancanti:
<pre>
# addgroup --system tss
# addgroup --system kvm
# addgroup --system rdma
# addgroup --system fuse
# addgroup --system scanner
# addgroup --system nvram
# adduser --system tss
</pre>
=== Installazione di libpam-ldap ===
L'installazione del pacchetto libpam-ldap viene eseguita allo stesso modo di quella precedente:
<pre>
# apt-get install libpam-ldap
# dpkg-reconfigure libpam-ldap
</pre>
rispondendo in questo modo alle domande poste dall'installer:
* Server LDAP: 127.0.0.1
* Distinguished name (DN): dc=dominio,dc=local
* LDAP version: 3
* Make local root Database admin: sí
* Si richiede utente per database LDAP: no
* LDAP account for root cn=admin,dc=dominio,dc=local
* LDAP root password: password
* Local crypt to use when changing passwords: md5
Modificate come segue il file '''/etc/pam_ldap.conf''':
<pre>
bind_policy soft
nss_base_passwd dc=dominio,dc=local?sub
nss_base_shadow dc=dominio,dc=local?sub
nss_base_group ou=Groups,dc=dominio,dc=local?one
</pre>
Ora è necessario andare a modificare i quattro files che gestiscono la configurazione di pam per LDAP in modo che il loro contenuto sia:<br/><br/>
'''/etc/pam.d/common-account'''<br/>
<pre>
#
#/etc/pam.d/common-account - authorization settings common to all services
##
This file is included from other service-specific PAM config files,
# and should contain a list of the authorization modules that define
# the central access policy for use on the system. The default is to
# only deny service to users whose accounts are expired in /etc/shadow.
#
#account required pam_unix.so
account sufficient pam_ldap.so
account required pam_unix.so try_first_pass
</pre>
<br/>
'''/etc/pam.d/common-auth'''<br/>
<pre>
#
# /etc/pam.d/common-auth - authentication settings common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of the authentication modules that define
# the central authentication scheme for use on the system
# (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the
# traditional Unix authentication mechanisms.
#
#auth required pam_unix.so nullok_secure
#auth [success=1 default=ignore] pam_unix.so
#auth required pam_ldap.so use_first_pass
auth sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
</pre>
<br/>
'''/etc/pam.d/common-password'''<br/>
<pre>
# /etc/pam.d/common-password - password-related modules common to all services
##
This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
#used to change user passwords. The default is pam_unix
# The "nullok" option allows users to change an empty password, else
# empty passwords are treated as locked accounts.
#
# (Add `md5' after the module name to enable MD5 passwords)
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs. Also the "min" and "max" options enforce the length of the
# new password.
#password required pam_unix.so nullok obscure min=4 max=8 md5
# Alternate strength checking for password. Note that this
# requires the libpam-cracklib package to be installed.
# You will need to comment out the password line above and
# uncomment the next two in order to use this.
# (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH')
#
# password required pam_cracklib.so retry=3 minlen=6 difok=3
# password required pam_unix.so use_authtok nullok md5
password sufficient pam_ldap.so
password required pam_unix.so nullok obscure md5 use_first_pass
</pre>
<br/>
'''/etc/pam.d/common-session'''<br/>
<pre>
session    sufficient      pam_ldap.so
session    required        pam_unix.so
</pre>
Infine registriamo la password di root di OpenLDAP con i comandi:
<pre>
echo -n "password" > /etc/libnss-ldap.secret
echo -n "password" > /etc/pam_ldap.secret
</pre>
=== Test di funzionamento ===
Riavviate il vostro server e controllate eventuali messaggi di errore al boot.
Una volta ripartito, con i comandi:
<pre>
getent passwd
getent group
</pre>
dovremmo vedere elencati anche gli utenti e i gruppi di dominio OpenLDAP.
Il comando:
<pre>
smbclient -L localhost -U Administrator
</pre>
dovrebbe, dopo aver richiesto la password di Administrator, mostrarci le condivisioni samba del nostro server.
== Per approfondimenti ==
== Per approfondimenti ==
[[Samba e OpenLDAP: creare un controller di dominio]]<br/>
[[Samba e OpenLDAP: creare un controller di dominio]]<br/>

Menu di navigazione