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

m
→‎Introduzione: rimossa guida obsoleta
m (→‎Introduzione: rimossa guida obsoleta)
 
(44 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili|Squeeze}}
{{SAMBA
{{stub}}
|precedente=Samba e OpenLDAP: creare un controller di dominio con Debian Lenny
|successivo=Samba e OpenLDAP: creare un controller di dominio Active Directory con Debian Wheezy}}{{Versioni compatibili|ONLY|Squeeze}}
== Introduzione ==
== Introduzione ==
Questo articolo è un aggiornamento della guida [[Samba e OpenLDAP: creare un controller di dominio con Debian Lenny]], basata su '''Debian Lenny'''.<br/>
Guide simili per precedenti versioni di Debian o altre distribuzioni linux:
* [[Samba e OpenLDAP: creare un controller di dominio | Debian Sarge]]
* [[Samba e OpenLDAP: creare un controller di dominio con Debian Etch | Debian Etch]]
* [[Samba e OpenLDAP: creare un controller di dominio con Debian Lenny | Debian Lenny]]
Vedremo questa volta come installare un server basato su '''Debian Squeeze''' e Samba 3 con backend di un database LDAP, affinché funga da Primary Domain Controller di una rete Windows. Lo stesso server LDAP verrà utilizzato anche per la gestione in contemporanea degli utenti Unix, in modo da avere un controllo unico e centralizzato sia sugli utenti Windows sia sugli utenti Linux.<br/>
Vedremo questa volta come installare un server basato su '''Debian Squeeze''' e Samba 3 con backend di un database LDAP, affinché funga da Primary Domain Controller di una rete Windows. Lo stesso server LDAP verrà utilizzato anche per la gestione in contemporanea degli utenti Unix, in modo da avere un controllo unico e centralizzato sia sugli utenti Windows sia sugli utenti Linux.<br/>
Verranno illustrati due metodi di gestione del database LDAP, uno basato sui tools smbldap-tools e uno basato su interfaccia grafica in PHP.<br/>
Verranno illustrati due metodi di gestione del database LDAP, uno basato sui tools smbldap-tools e uno basato su interfaccia grafica in PHP.<br/>
Riga 21: Riga 25:
* Nome del dominio: dominio.local
* Nome del dominio: dominio.local
* Nome NETBIOS del dominio: DOMINIO
* Nome NETBIOS del dominio: DOMINIO
* Classe IP: 10.0.0.0 / 255.0.0.0
* Classe IP: 10.0.0.0 / 255.255.255.0
* IP Server: 10.0.0.11
* IP Server: 10.0.0.10
* Password di root: mia_password
* Password di root: mia_password
* Password Administrator del dominio: mia_password
* Password Administrator del dominio: mia_password
* Password admin di LDAP: mia_password
* Password admin di LDAP: mia_password
Questi parametri vanno ovviamente adattati alle vostre esigenze.
Questi parametri vanno ovviamente adattati alle vostre esigenze.
== Installazione del server LDAP ==
== 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.<br/>
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.<br/>
Riga 35: Riga 40:
</pre>
</pre>
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.<br/>
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.<br/>
Nei file riportati si considera che il dominio specificato è <tt>dominio.local</tt>, un dominio interno non valido per Internet.
Nei file riportati si considera che il dominio specificato è <code>dominio.local</code>, 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.<br/>
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.<br/>
Come nome dell'organizzazione mettete una descrizione della vostra organizzazione: Rete LAN di Dominio.<br/>
Come nome dell'organizzazione mettete una descrizione della vostra organizzazione: Rete LAN di Dominio.<br/>
Riga 66: Riga 71:
Installiamo per prima cosa alcuni moduli di PHP necessari:
Installiamo per prima cosa alcuni moduli di PHP necessari:
<pre>
<pre>
apt-get install libapache2-mod-php5 php5 php5-cli php5-curl php5-gd php5-imap php5-ldap
# apt-get install libapache2-mod-php5 php5 php5-cli php5-curl php5-gd php5-imap php5-ldap php5-mcrypt php5-mhash php5-sqlite php5-tidy php5-xmlrpc php-pear mcrypt libgd-tools
php5-mcrypt php5-mhash php5-sqlite php5-tidy php5-xmlrpc php-pear mcrypt libgd-tools
</pre>
</pre>
{{ Warningbox | Il comando precedente va scritto in un'unica riga }}
 
=== Installazione di PHPLdapAdmin ===
=== Installazione di PHPLdapAdmin ===
Ora possiamo installare phpldapadmin:
Ora possiamo installare phpldapadmin:
Riga 102: Riga 106:
Phpldapadmin richiede per funzionare la presenza di un tool chiamato mkntpwd, sviluppato dal team di Samba e utilizzato per creare gli hash delle password in Samba. Inspiegabilmente questo tool non è presente negli archivi di Debian. Va pertanto scaricato dal seguente indirizzo:
Phpldapadmin richiede per funzionare la presenza di un tool chiamato mkntpwd, sviluppato dal team di Samba e utilizzato per creare gli hash delle password in Samba. Inspiegabilmente questo tool non è presente negli archivi di Debian. Va pertanto scaricato dal seguente indirizzo:
<pre>
<pre>
# wget http://www.nomis52.net/data/mkntpwd.tar.gz
# wget http://debian.easyteam.org/files/samba/mkntpwd.tar.gz
</pre>
</pre>
Una volta scaricato il file, bisogna scompattarlo, compilarlo e configurarlo:
Una volta scaricato il file, bisogna scompattarlo, compilarlo e configurarlo:
Riga 149: Riga 153:
Tuttavia, dato che non mi fido molto degli script, nel seguito della guida verranno date le indicazioni per procedere ad una configurazione manuale.
Tuttavia, dato che non mi fido molto degli script, nel seguito della guida verranno date le indicazioni per procedere ad una configurazione manuale.


Copiare inannzitutto i file <tt>smbldap.conf</tt> e <tt>smbldap_bind.conf</tt> in <tt>/etc/smbldap-tools</tt>.
Copiare inannzitutto i file <code>smbldap.conf</code> e <code>smbldap_bind.conf</code> in <code>/etc/smbldap-tools</code>.
<pre>
<pre>
# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf
# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf
</pre>
</pre>
Modificare il file <tt>/etc/smbldap-tools/smbldap_bind.conf</tt> inserendo il DN dell'amministratore del server LDAP e la sua password. Il DN dell'amministratore è stato impostato automaticamente durante l'installazione del pacchetto Debian di slapd e corrisponde a <nowiki>"cn=admin,dc=dominio,dc=local"</nowiki>, in cui il dominio dipende dalle configurazioni sopra riportate per il server LDAP. La password è quella richiesta in fase di installazione del server LDAP.<br/>
Modificare il file <code>/etc/smbldap-tools/smbldap_bind.conf</code> inserendo il DN dell'amministratore del server LDAP e la sua password. Il DN dell'amministratore è stato impostato automaticamente durante l'installazione del pacchetto Debian di slapd e corrisponde a <nowiki>"cn=admin,dc=dominio,dc=local"</nowiki>, in cui il dominio dipende dalle configurazioni sopra riportate per il server LDAP. La password è quella richiesta in fase di installazione del server LDAP.<br/>
Se non si è sicuri del DN da inserire lanciare il comando:
Se non si è sicuri del DN da inserire lanciare il comando:
<pre>
<pre>
Riga 188: Riga 192:
e copiare o prendere nota del codice che viene restituito.
e copiare o prendere nota del codice che viene restituito.
<br/>
<br/>
Modificare il file <tt>/etc/smbldap-tools/smbldap.conf</tt> inserendo il SID appena ottenuto e controllare gli indirizzi dei 2 server LDAP in modo che coincidano con il server locale (127.0.0.1).
Modificare il file <code>/etc/smbldap-tools/smbldap.conf</code> inserendo il SID appena ottenuto e controllare gli indirizzi dei 2 server LDAP in modo che coincidano con il server locale (127.0.0.1).
<pre>
<pre>
SID="S-1-5-21-2318037123-1631426476-2439636316"
SID="S-1-5-21-2318037123-1631426476-2439636316"
Riga 392: Riga 396:
# cp -R /etc/ldap/slapd.d /etc/slapd.d.backup
# cp -R /etc/ldap/slapd.d /etc/slapd.d.backup
</pre>
</pre>
Adesso dobbiamo recuperare gli schemi mancanti, che aggiungeremo poi alla configurazione di LDAP, e copiare in <tt>/etc/ldap/schema</tt> lo schema LDAP necessario per SAMBA.
Adesso dobbiamo recuperare gli schemi mancanti, che aggiungeremo poi alla configurazione di LDAP, e copiare in <code>/etc/ldap/schema</code> lo schema LDAP necessario per SAMBA.
<pre>
<pre>
# wget http://www.pepinet.com/download/samba/hdb.schema -P /etc/ldap/schema/
# wget http://debian.easyteam.org/files/samba/hdb.schema -P /etc/ldap/schema/
# wget http://www.pepinet.com/download/samba/qmailuser.schema -P /etc/ldap/schema/
# wget http://debian.easyteam.org/files/samba/qmailuser.schema -P /etc/ldap/schema/
# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
</pre>
</pre>
Riga 422: Riga 426:
<pre>
<pre>
# mkdir /tmp/ldif_output
# mkdir /tmp/ldif_output
# slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/samba.ldif
# slapcat -f /tmp/schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/samba.ldif
# nano /tmp/samba.ldif
# nano /tmp/samba.ldif
</pre>
</pre>
Riga 536: Riga 540:
olcLogLevel: 1 2 8 64 128 256 512
olcLogLevel: 1 2 8 64 128 256 512
olcAuthzPolicy: none
olcAuthzPolicy: none
olcAuthzRegexp: uid=(.*),cn=.*,cn=auth ldap:///dc=dominio,dc=lan??sub?(uid=$1)
olcAuthzRegexp: uid=(.*),cn=.*,cn=auth ldap:///dc=dominio,dc=local??sub?(uid=$1)
</pre>
</pre>
Riavviamo infine il demone <code>slapd</code>:
Riavviamo infine il demone <code>slapd</code>:
Riga 547: Riga 551:
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
# ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config dn
</pre>
</pre>
=== Configurazione di LDAP con il vecchio metodo ''slapd.conf'' (Deprecato) ===
=== Configurazione di LDAP con il vecchio metodo ''slapd.conf'' (Deprecato) ===
Innanzitutto indichiamo a LDAP che vogliamo utilizzare il vecchio metodo di configurazione. Apriamo il file:
Innanzitutto indichiamo a LDAP che vogliamo utilizzare il vecchio metodo di configurazione. Apriamo il file:
Riga 561: Riga 566:
# slapcat > ~/slapd.ldif
# slapcat > ~/slapd.ldif
</pre>
</pre>
Adesso dobbiamo recuperare gli schemi mancanti, che aggiungeremo poi alla configurazione di LDAP, e copiare in <tt>/etc/ldap/schema</tt> lo schema LDAP necessario per SAMBA.
Adesso dobbiamo recuperare gli schemi mancanti, che aggiungeremo poi alla configurazione di LDAP, e copiare in <code>/etc/ldap/schema</code> lo schema LDAP necessario per SAMBA.
<pre>
<pre>
# wget http://www.pepinet.com/download/samba/hdb.schema -P /etc/ldap/schema/
# wget http://debian.easyteam.org/files/samba/hdb.schema -P /etc/ldap/schema/
# wget http://www.pepinet.com/download/samba/qmailuser.schema -P /etc/ldap/schema/
# wget http://debian.easyteam.org/files/samba/qmailuser.schema -P /etc/ldap/schema/
# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema
</pre>
</pre>
Riga 572: Riga 577:
</pre>
</pre>
e prendete nota del risultato.<br/>
e prendete nota del risultato.<br/>
Ora occorre modificare il file di configurazione di slapd (<tt>/etc/ldap/slapd.conf</tt>) aggiungendo nella sezione <tt>Schema and objectClass definitions</tt> lo schema per samba:
Ora occorre modificare il file di configurazione di slapd (<code>/etc/ldap/slapd.conf</code>) aggiungendo nella sezione <code>Schema and objectClass definitions</code> lo schema per samba:
<pre>
<pre>
include /etc/ldap/schema/samba.schema
include /etc/ldap/schema/samba.schema
</pre>
</pre>
Nella sezione <tt>Indexing options</tt> aggiungere una serie di indicizzazioni che ottimizzeranno le interogazioni per l'utilizzo del server SAMBA:
Nella sezione <code>Indexing options</code> aggiungere una serie di indicizzazioni che ottimizzeranno le interogazioni per l'utilizzo del server SAMBA:
<pre>
<pre>
index objectClass eq,pres
index objectClass eq,pres
Riga 782: Riga 787:
#suffix        "dc=debian,dc=org"
#suffix        "dc=debian,dc=org"
</pre>
</pre>
Possiamo far ripartire <tt>slapd</tt> affinché tutte le modifiche apportate siano prese in considerazione.
Possiamo far ripartire <code>slapd</code> affinché tutte le modifiche apportate siano prese in considerazione.
<pre>
<pre>
# /etc/init.d/slapd stop
# /etc/init.d/slapd stop
Riga 796: Riga 801:
# ldapsearch -x
# ldapsearch -x
</pre>
</pre>
La risposta deve essere un file LDIF. Se invece si ottiene un errore di connessione ricontrollare tutte le impostazioni e i file di log. Per controllare il funzionamento di <tt>slapd</tt> può sempre tornare utile fermare il servizio e farlo partire, anziché con gli script standard debian con il comando:
La risposta deve essere un file LDIF. Se invece si ottiene un errore di connessione ricontrollare tutte le impostazioni e i file di log. Per controllare il funzionamento di <code>slapd</code> può sempre tornare utile fermare il servizio e farlo partire, anziché con gli script standard debian con il comando:
<pre>
<pre>
# slapd -d 256
# slapd -d 256
Riga 803: Riga 808:


== Configurazione di Samba ==
== Configurazione di Samba ==
Prima di iniziare a configurare Samba è necessario creare le directory nelle quali risiederanno le homes degli utenti, gli script di netlogon e i profili centralizzati (o profili roaming). Alcune di queste directory sono già state indicate nel file <tt>/etc/smbldap-tools/smbldap.conf</tt>, quindi è bene stare attenti a non commettere errori.<br/>
Prima di iniziare a configurare Samba è necessario creare le directory nelle quali risiederanno le homes degli utenti, gli script di netlogon e i profili centralizzati (o profili roaming). Alcune di queste directory sono già state indicate nel file <code>/etc/smbldap-tools/smbldap.conf</code>, quindi è bene stare attenti a non commettere errori.<br/>
<pre>
<pre>
# mkdir /dominio
# mkdir /dominio
Riga 811: Riga 816:
# mkdir /dominio/pubblica
# mkdir /dominio/pubblica
</pre>
</pre>
La configurazione di Samba si riduce a modificare il file <tt>/etc/samba/smb.conf</tt>. State attenti: il file è molto lungo ed è facile tralasciare qualcosa o inserire opzioni in conflitto tra loro. Per iniziare ci si basi sul file di esempio, funzionante e testato, riportato di seguito con gli opportuni commenti:
La configurazione di Samba si riduce a modificare il file <code>/etc/samba/smb.conf</code>. State attenti: il file è molto lungo ed è facile tralasciare qualcosa o inserire opzioni in conflitto tra loro. Per iniziare ci si basi sul file di esempio, funzionante e testato, riportato di seguito con gli opportuni commenti:
<pre>
<pre>
# mv /etc/samba/smb.conf /etc/samba/smb.conf.original
# mv /etc/samba/smb.conf /etc/samba/smb.conf.original
Riga 1 041: Riga 1 046:
e scarichiamo lo script <code>log_access_login.bash</code> che ci servirà per loggare gli accessi al dominio:
e scarichiamo lo script <code>log_access_login.bash</code> che ci servirà per loggare gli accessi al dominio:
<pre>
<pre>
# wget http://www.pepinet.com/download/samba/log_access_login.bash -P /etc/samba
# wget http://debian.easyteam.org/files/samba/log_access_login.bash -P /etc/samba
# chmod 700 /etc/samba/log_access_login.bash
# chmod 700 /etc/samba/log_access_login.bash
</pre>
</pre>
Riga 1 115: Riga 1 120:
Per creare i gruppi predefiniti e gli utenti utilizzati da Samba è possibile procedere in due modi.
Per creare i gruppi predefiniti e gli utenti utilizzati da Samba è possibile procedere in due modi.
=== 1 - Utilizzo degli script forniti con smbldap-tools ===
=== 1 - Utilizzo degli script forniti con smbldap-tools ===
La prima via consiste nel fare uso di alcuni script forniti con il pacchetto <tt>smbldap-tools</tt> che abbiamo già installato:
La prima via consiste nel fare uso di alcuni script forniti con il pacchetto <code>smbldap-tools</code> che abbiamo già installato:
<pre>
<pre>
# smbldap-populate -a root -k 0
# smbldap-populate -a root -k 0
Riga 1 193: Riga 1 198:
* Account LDAP per root: ''cn=admin,dc=dominio,dc=local''
* Account LDAP per root: ''cn=admin,dc=dominio,dc=local''
* Password LDAP di root: ''mia_password''
* Password LDAP di root: ''mia_password''
A questo punto bisogna modificare il file <tt>/etc/nsswitch.conf</tt> come indicato dall'installer. Prima però ne facciamo una copia di backup.
Verifichiamo che il file <code>/etc/pam_ldap.conf</code> contenga almeno:
<pre>
host 127.0.0.1
base dc=dominio,dc=local
uri ldap://127.0.0.1/
</pre>
<br/>
Assicuriamoci che l'uri sia settato correttamente in ''/etc/default/slapd'' alla voce ''SLAPD_SERVICES = ldap://10.0.0.10:389''.
<br/><br/>
A questo punto bisogna modificare il file <code>/etc/nsswitch.conf</code> come indicato dall'installer. Prima però ne facciamo una copia di backup.
<pre>
<pre>
# cp -pf /etc/nsswitch.conf /etc/nsswitch.conf.orig
# cp -pf /etc/nsswitch.conf /etc/nsswitch.conf.orig
Riga 1 231: Riga 1 245:
</pre>
</pre>
{{ Warningbox | Modificando in maniera sbagliata il file precedente rischiate di bloccare ogni forma di autenticazione sul server, compreso l'utente '''root'''. E' fondamentale avere una copia di backup del file, da poter ripristinare attraverso una distribuzione Live o attraverso il Rescue Mode del Debian Installer }}
{{ Warningbox | Modificando in maniera sbagliata il file precedente rischiate di bloccare ogni forma di autenticazione sul server, compreso l'utente '''root'''. E' fondamentale avere una copia di backup del file, da poter ripristinare attraverso una distribuzione Live o attraverso il Rescue Mode del Debian Installer }}
<br/>
Modificate inotre il file '''/etc/libnss-ldap.conf''', decommentando e modificando le righe seguenti e lasciando decommentate quelle di default:
Modificate inotre il file '''/etc/libnss-ldap.conf''', decommentando e modificando le righe seguenti e lasciando decommentate quelle di default:
<pre>
# cp -pf /etc/libnss-ldap.conf /etc/libnss-ldap.conf.orig
# nano /etc/libnss-ldap.conf
</pre>
<pre>
<pre>
host 127.0.0.1
host 127.0.0.1
Riga 1 275: Riga 1 294:
</pre>
</pre>
rispondendo in questo modo alle domande poste dall'installer:
rispondendo in questo modo alle domande poste dall'installer:
* Server LDAP: 127.0.0.1
* URI Server LDAP: ''ldap:///127.0.0.1''
* Distinguished name (DN): dc=dominio,dc=local
* Distinguished name (DN): ''dc=dominio,dc=local''
* LDAP version: 3
* LDAP version: ''3''
* Make local root Database admin: sí  
* Permettere all'account amministrativo LDAP di agire come root?: ''''
* Si richiede utente per database LDAP: no
* Il database LDAP richiede login?: ''no''
* LDAP account for root cn=admin,dc=dominio,dc=local  
* LDAP account for root: ''cn=admin,dc=dominio,dc=local''
* LDAP root password: password
* LDAP root password: ''mia_password''
* Local crypt to use when changing passwords: md5
* Local crypt to use when changing passwords: ''cifrato''
* PAM profiles to enable: ''selezionare tutto''
Modificate come segue il file '''/etc/pam_ldap.conf''':
Modificate come segue il file '''/etc/pam_ldap.conf''':
<pre>
# cp -pf /etc/pam_ldap.conf /etc/pam_ldap.conf.orig
# nano /etc/pam_ldap.conf
</pre>
<pre>
<pre>
bind_policy soft
bind_policy soft
Riga 1 290: Riga 1 314:
nss_base_group ou=Groups,dc=dominio,dc=local?one
nss_base_group ou=Groups,dc=dominio,dc=local?one
</pre>
</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/>
=== Sicurezza del server: configurazione di Pam ===
Il metodo migliore per evitare che gli utenti indiscriminatamente si logghino sul server è configurare correttamente ''PAM''. Dopo aver effettuato delle copie di backup:
<pre>
# cd /etc/pam.d
# cp -pf common-account common-account.orig
# cp -pf common-auth common-auth.orig
# cp -pf common-password common-password.orig
# cp -pf common-session common-session.orig
</pre>
andiamo quindi 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/>
'''/etc/pam.d/common-account'''<br/>
<pre>
<pre>
#
#/etc/pam.d/common-account - authorization settings common to all services
#/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 sufficient pam_ldap.so
account required pam_unix.so try_first_pass
account required pam_unix.so
</pre>
</pre>
<br/>
<br/>
'''/etc/pam.d/common-auth'''<br/>
'''/etc/pam.d/common-auth'''<br/>
<pre>
<pre>
#
# /etc/pam.d/common-auth - authentication settings common to all services
# /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 sufficient pam_ldap.so
auth required pam_unix.so nullok_secure use_first_pass
auth required pam_unix.so nullok_secure use_first_pass
Riga 1 327: Riga 1 341:
<pre>
<pre>
# /etc/pam.d/common-password - password-related modules common to all services
# /etc/pam.d/common-password - password-related modules common to all services
##
password sufficient pam_ldap.so md5
This file is included from other service-specific PAM config files,
password required pam_unix.so nullok obscure md5
# 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>
</pre>
<br/>
<br/>
Riga 1 358: Riga 1 351:
</pre>
</pre>


Infine registriamo la password di root di OpenLDAP con i comandi:
Infine verifichiamo la password di root di OpenLDAP con i comandi:
<pre>
<pre>
echo -n "password" > /etc/libnss-ldap.secret
# less /etc/libnss-ldap.secret
echo -n "password" > /etc/pam_ldap.secret
# less /etc/pam_ldap.secret
</pre>
</pre>
=== Test di funzionamento ===
=== Test di funzionamento ===
Riavviate il vostro server e controllate eventuali messaggi di errore al boot.
Riavviate il vostro server e controllate eventuali messaggi di errore al boot.
Riga 1 376: Riga 1 370:
</pre>
</pre>
dovrebbe, dopo aver richiesto la password di Administrator, mostrarci le condivisioni samba del nostro server.
dovrebbe, dopo aver richiesto la password di Administrator, mostrarci le condivisioni samba del nostro server.
== Assegnazione dei permessi agli utenti di dominio ==
Affinchè le directory dei profili e altre cosette funzionino senza intoppi è necessario assegnare i giusti permessi agli utenti di dominio:
<pre>
net -S DEBIAN -U Administrator rpc rights grant "DOMINIO\Domain Admins"
SeMachineAccountPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege
SeDiskOperatorPrivilege SeRemoteShutdownPrivilege
</pre>
<pre>
net -S DEBIAN -U Administrator rpc rights grant "DOMINIO\Print Operators" SePrintOperatorPrivilege
</pre>
dove DEBIAN è il nome Samba assegnato al server. i due comandi precedenti vanno scritti su un'unica riga.
== Aggiungere i primi utenti di dominio ==
Il pacchetto smbldap-tools presente in Squeeze, a differenza di quelli di Etch e Sarge, effettua un controllo di uid e gid ogni qualvolta si tenta di aggiungere un utente OpenLDAP al dominio, al fine di evitare sovrapposizioni nei valori; pertanto non è più necessario specificare a mano i corretti valori di uid e gid.
Adesso siamo pronti per la creazione del primo utente con il comando:
<pre>
# smbldap-useradd -a -m -c "Nome Utente" username
</pre>
Dove -a serve per creare anche i dati UNIX, -m crea l'home directory e -c specifica il nome completo.<br/>
Infine impostare la password dell'utente con:
<pre>
# smbldap-passwd username
</pre>
Per verificare il tutto usare il comando:
<pre>
# smbldap-usershow username
</pre>
Creiamo ora i gruppi per organizzare gli utenti all'interno del nostro dominio:
<pre>
# smbldap-groupadd "NomeGruppo"
</pre>
Aggiungiamo gli utenti ai gruppi desiderati:
<pre>
# smbldap-usermod -G "NomeGruppo" nome.utente
</pre>
<br/>
Se decidessimo di utilizzare la GUI fornita da phpldapadmin non dimentichiamoci di '''creare a mano''' le homes directory:
<pre>
# mkdir /home/users/nome.utente
# cp /etc/skel/.* /home/users/nome.utente/
# chown -R nome.utente /home/users/nome.utente
</pre>
== Creazione di un semplice script da eseguire al login di windows ==
E' possibile creare uno script "logon.bat" (come specificato nel file /etc/smbldap-tools/smbldap.conf) da mettere nella cartella indicata per la condivisione netlogon. Questo script conterrà alcuni comandi che saranno eseguiti all'avvio dei client Windows.
Tale script dovrà esser scritto in modalità dos, per far questo sfrutteremo il tool unix2dos contenuto nel pacchetto tofrodos.
<pre>
# apt-get install tofrodos
</pre>
creiamo lo script con l'editor che preferiamo
<pre>
# vim /dominio/netlogon/logon.bat
</pre>
syncronizziamo gli orologi del client windows con il nostro server e mappiamo una condivisione di rete scrivendo nel file
<pre>
net time %LOGONSERVER% /set /yes
net use X: \\SERVER\Nome_Condivisione
</pre>
infine
<pre>
# todos /dominio/netlogon/logon.bat
</pre>
Allo script si possono aggiungere operazioni come il montaggio di unità di rete o altre condivisioni.
Tenete conto che con queste impostazioni viene già creata un'unità di rete collegata alla home dell'utente linux.
== Test e connessione al dominio ==
Il nostro server è ora pronto per essere utilizzato. Per testarne le funzionalità è possibile procedere per gradi, in modo da isolare quelli che sono i problemi di configurazione da quelli che sono i problemi di rete o dei client Windows.<br/>
A tal fine il primo accesso può essere fatto dal server stesso con il comando:
<pre>
# smbclient -L localhost -U Administrator
</pre>
Dovrebbe essere richiesta la password impostata precedentemente per l'utente Administrator e, di seguito, dovrebbero venire elencate le condivisioni samba impostate sul server.
<br/><br/>
La procedura di connessione dei client al dominio varia a seconda del sistema operativo utilizzato sulle macchine client:
<br/><br/>
*'''Windows 95/98/ME'''
# Verificare che sia installato il "Client per Reti Microsoft" fra le proprietà di rete
# Assicurarsi che il Client per Reti Microsoft sia selezionato come protocollo di rete primario (Pannello di Controllo -> Rete -> Logon di rete primario).
# Andare su Pannello di Controllo -> Rete -> Client per reti Microsoft -> Proprietà -> Logon su Dominio NT.
# Se si è configurata su smb.conf l'opzione "add user script", selezionare il checkbox Crea un Computer Account, altrimenti creare a mano sul server Samba un utente con il nome della macchina Windows.
# Inserire il nome del proprio dominio e cliccare OK.
*'''Windows NT'''
# Andare su Pannello di Controllo -> Rete -> Identificazione Rete -> Proprietà
# Selezionare Dominio e inserire il nome del prorio dominio
# Selezionare Crea un Computer Account
# Alla richiesta della password di un amministratore inserire la login e la password di Administrator, ricordarsi che l'utente root deve essere aggiunto a smbpasswd.
# Dovrebbe comparire un messaggio che ci da il benvenuto sul dominio.
*'''Windows 2000'''
# Le procedure sono uguali a quelle per Windows NT tranne che i settaggi di rete sono trovati sotto Pannello di Controllo -> Sistema -> Identificazione Rete (oppure, sul Desktop, cliccare col tasto destro del mouse sull'icona Risorse del Computer, selezionare Proprietà, cliccare sulla tab Identificazione Rete e sul tasto Proprietà).
*'''Windows XP'''
La procedura con Windows XP è più complessa (lamentele a Microsoft che usa cambiare le specifiche e le implementazioni dei suoi protocolli anche per rendere più complicata l'interoperabilità con soluzioni alternative). Notare che solo XP Professional Edition può essere usato per far parte di un dominio, Windows XP Home Edition non può far parte di un dominio (Samba o Windows based).
# Aprire l'editor delle policy di Sicurezza Locale (Start->Pannello di controllo->Strumenti di Aministrazione->Criteri di protezione locali->Criteri locali->opzioni di protezione)
# Disabilitare la voce "Domain member: Digitally encrypt or sign secure channel (always)" (Membro di dominio: aggiunta crittografia of irma digitale ai dati del canale protetto (sempre) )
# Disabilitare la voce "Domain member: Disable machine account password changes" (Controller di dominio: rifiuta cambio password account computer)
# Disabilitare la voce "Domain member: Require strong (Windows 2000 or later) session key" (Membro di dominio: richiesta chiave di sessione avanzata (Windows 2000 o versioni successive) )
# Scaricare la patch per il registro http://www.pepinet.com/download/samba/sambapatch.reg. Per applicarla cliccare due volte sul file .reg e rispondere Si alle domande
# A questo punto ci si può unire al dominio come su Windows NT/2000: Tasto destro su Risorse del Computer, selezionare Proprietà, Nome del Computer e tasto Modifica uppure cliccare su Identificazione di Rete ed eseguire il Wizard fornendo le credenziali di Administrator.
*'''Windows Vista'''
# Non ancora testato.
*'''Windows 7'''
Il supporto a Windows 7 è stato aggiunto a partire dalla versione 3.3 di Samba; bisogna quindi provvedere all'installazione di Samba dal repository backports, come descritto nel relativo capitolo di questa guida.
# Su Windows 7 Professional o Ultimate (gli unici che possono effettuare un join a un dominio) occorre modificare due chiavi di registro:
<pre>
HKLM\System\CCS\Services\LanmanWorkstation\Parameters
DWORD  DomainCompatibilityMode = 1
DWORD  DNSNameResolutionRequired = 0
</pre>
Occorre inoltre scaricare dal sito di Microsoft un hotfix che corregge un problema di "Server DNS non trovato". Il link all'hotfix è riportato nel wiki ufficiale di Samba: http://wiki.samba.org/index.php/Windows7
<br/>
A questo punto la procedura di unione al dominio procede sulla falsariga di quella valida per Windows XP.
== Backup e restore del database LDAP ==
Vengono suggeriti di seguito alcuni metodi per effettuare dei backup del database LDAP. Consiglio di prendere seriamente in considerazione l'idea di impostare dei backup regolari magari tramite cron e suggerisco altresì di effettuare '''sempre''' un backup dei dati LDAP prima di ogni modifica o riconfigurazione del server.
=== Offline Physical Backup ===
Un offline physical backup deve essere effettuato sul server stesso. Lo svantaggio di questo tipo di backup è che il server LDAP non sarà disponibile per l'intera durata del processo.
# Stopare il server LDAP: <code>/usr/sbin/rcldap stop</code>
# Copiare tutti i files in /var/lib/ldap/ dentro una directory di backup
# Riavviare il server LDAP: <code>/usr/sbin/rcldap start</code>
=== Offline Logical Backup ===
Questo tipo di backup, noto anche come '''database dump''' richiede sempre l'arresto del servizio LDAP:
# <code>/usr/sbin/rcldap stop</code>
# <code>slapcat >ldap.\$(date +'\%Y\%m\%d-\%T')</code> Questo comando genera nella directory corrente un file LDIF che può successivamente essere archiviato
# <code>/usr/sbin/rcldap start</code>
=== Online Backup ===
Questo tipo di backup, a differenza dei precedenti, utilizza LDAP stesso per effettuare il dump dei dati del database e quindi, pur appensantendo il server, non richiede l'arresto del servizio.
# <code>ldapsearch -h LDAPServer -x -b baseDN > ldap.\$(date +'\%Y\%m\%d-\%T')</code><br/>
dove <code>LDAPServer</code> è il nome del server e <code>baseDN</code> è il distinguished name (DN) della struttura LDAP, nel nostro caso <code>dc=dominio,dc=local</code>
=== Database Restore ===
# Per ripristinare un offline backup:
## <code>/usr/sbin/rcldap stop</code>
## copiare i files salvati in /var/lib/ldap (Se Offline Physical Backup)
## <code>slapadd -l nome_del_backupfile</code> (Se Offline Logical Backup)
## <code>/usr/sbin/rcldap start</code>
# Per ripristinare un online backup:
## <code>ldapadd -D adminDN -x -w adminPassword -h LDAPServer -x -f nome_del_backupfile</code><br/>
dove <code>adminDN</code> è nel nostro caso dn=admin,dc=dominio,dc=local
== Replica del database LDAP su un altro server ==
Se siete interessati a fornire ridondanza alla vostra rete, potete prendere in considerazione l'idea di inserire un secondo server OpenLDAP sincronizzato con il server principale che abbiamo appena configurato.<br/>
In tal caso suggerisco di seguire [[Implementare un'architettura ridondante master/slave OpenLDAP | questa guida]], nella quale viene utilizzato lo stesso database LDAP che abbiamo appena configurato per costruire un server di replica.
== db4 ==
OpenLDAP ha la brutta abitudine di non risistemarsi per bene quando la donna delle pulizie inciampa nell'interruttore generale della corrente. Perciò conviene installare:
<pre>
# apt-get install db4.8-util
</pre>
Questo pacchetto contiene l'utility db4.8_recover che viene lanciata automaticamente ad ogni restart di ldap, risolvendo eventuali problemi di incongruenza del Barkley DB.
<br/>
== Interfacce web alternative per OpenLDAP ==
Altre due interfacce grafiche comode, da utilizzare congiuntamente o in alternativa a phpldapadmin, sono gosa e ldap-account-manager.
* '''LDAP-Account-Manager'''
<pre>
apt-get install ldap-account-manager libkadm55 php5-snmp php5-mhash
</pre>
Una volta installato, collegatevi col vostro browser all'indirizzo:
<pre>
http://ip_vostro_server/lam
</pre>
Prima di effettuare il login, cliccate sulla voce '''LAM configuration''', scegliete Edit Server Profiles e inserite la password di default (lam). Una volta entrati sostituite:
* la voce '''Tree Suffix''' con il DN del vostro dominio: dc=dominio,dc=local
* la voce '''List of valid users''' con l DN dell'amministratore del dominio: cn=admin,dc=dominio,dc=local
* la voce Password con la password di Administrator del dominio
Quindi cliccate su '''Edit Account Types''' e modificate le voci come segue:
* al posto di People sostituite Users
* al posto di group sostituite Groups
* al posto di machines sostituite Computers
* eliminate l'indicazione ou=domains nella voce Samba Domains
Date infine OK a questa schermata e OK alla successiva.<br/>
Come ultima cosa cliccate sulla voce '''LAM configuration''', scegliete Edit General Settings e inserite la password di default (lam). Una volta entrati sostituite la password di default con quella di Administrator del dominio.<br/>
Ora siete pronti per effettuare il login in LDAP Account Manager.<br/>
* '''GOsa'''
''To do''
* '''Luma'''
Non è un'interfaccia web, ma un'applicazione scritta in python. E' molto utile se il server che state installando è provvisto di interfaccia grafica (Gnome, Xfce o KDE). Per installarlo basta semplicemente il comando:
<pre>
apt-get install luma
</pre>
== Comandi utili e consigli finali ==
=== Creazione di utenti ===
<pre>
# smbldap-useradd -a -m -c "Descrizione Utente" nome.utente
# smbldap-passwd nome.utente
</pre>
Per verificare il tutto usare il comando
<pre>
# smbldap-usershow nome.utente
</pre>
=== Creazione di un gruppo ===
<pre>
# smbldap-groupadd "NomeGruppo"
</pre>
=== Aggiunta di un utente a un gruppo ===
Per impostare il gruppo primario dell'utente:
<pre>
# smbldap-usermod -g "NomeGruppo" nome.utente
</pre>
Per aggiungere l'utente a ulteriori gruppi:
<pre>
# smbldap-usermod -G gruppo1,gruppo2,gruppo3 nome.utente
</pre>
=== Elencare i gruppi memorizzati in LDAP ===
<pre>
# ldapsearch -x objectClass=posixGroup
</pre>
=== Elencare gli utenti di un gruppo ===
<pre>
# smbldap-groupshow "gruppo"
</pre>
=== Backuppare una directory condivisa dal server usando le credenziali di un utente specifico ===
<pre>
smbclient //nomeserver/nomecartella -U nome.utente%password.utente -N -Tc backup.tar /percorso/locale/del/backup
</pre>
=== Elencare le risorse condivise di una macchina ===
<pre>
smbclient -L nomeserver
</pre>
=== Per fare delle modifiche nel DB in maniera semplice ===
<pre>
  slapcat -l /tmp/backup.ldif   
  # stoppare il servizio
  /etc/init.d/slapd stop
  # una copia del vecchio db
  cp -r /var/lib/ldap  /var/lib/ldap.old
  mkdir /var/lib/ldap
  Modificare il file backup.ldif e quindi reimportarlo
  slapadd -c -l /tmp/backup.ldif
</pre>
=== Comandi utili LDAP ===
<pre>
ldapsearch -b "dc=miodominio,dc=local" -x
ldapsearch -b "dc=miodominio,dc=local" -LLL "cn=nomedellutente*" -x
ldapadd -x -W -D "cn=admin,dc=miodominio,dc=local" -f entry.ldif  # per importare un ldif
ldapdelete  -x  -D "cn=admin,dc=miodominio,dc=local" -W "cn= nomeutente,dc=logic"
</pre>
Nel caso si reinstalli slapd controllare non ci sia un backup in /var/backups con lo stesso numero di versione, altrimenti un dpkg.reconfigure non ricrea il file di configurazione corretto.
== Per approfondimenti ==
== Per approfondimenti ==
=== Debianizzati ===
[[Samba e OpenLDAP: creare un controller di dominio]]<br/>
[[Samba e OpenLDAP: creare un controller di dominio]]<br/>
[[Samba e OpenLDAP: creare un controller di dominio con Debian Etch]]<br/>
[[Samba e OpenLDAP: creare un controller di dominio con Debian Etch]]<br/>
Riga 1 382: Riga 1 632:
[[Samba, OpenLDAP, Kerberos: creare un controller di dominio sicuro con Debian Lenny]]<br/>
[[Samba, OpenLDAP, Kerberos: creare un controller di dominio sicuro con Debian Lenny]]<br/>
[[Implementare un'architettura ridondante master/slave OpenLDAP]]<br/>
[[Implementare un'architettura ridondante master/slave OpenLDAP]]<br/>
[[Scansione antivirus con ClamAV su condivisioni Samba]]<br/>
[[Samba: guida estesa]]<br/>
[[Accedere alle condivisioni Samba dal browser]]<br/>
[[Samba: creare un cestino di rete per le condivisioni]]<br/>
[[Creare un Cestino di rete per le condivisioni Samba]]<br/>
[[ClamAV: scansione antivirus delle condivisioni Samba]]<br />
<br/>
<br/>
----


<br/>
{{Autori
|Autore = [[Utente:Ferdybassi|Ferdybassi]]
}}
 
[[Categoria:Reti con Windows]][[Categoria:Samba]]
3 581

contributi