<- Piccoli server web - Indice Generale - Copertina - Indice analitico della Costituzione italiana -> |
Sistemi Liberi
L'articolo...In questo articolo vedremo come installare un server basato su Debian Sarge e Samba 3 con backend LDAP perché funga da Primary Domain Controller di una rete Windows. Lo stesso server LDAP verrà utilizzato anche per la gestione degli utenti Unix, in modo da avere un controllo sia sugli utenti Windows che sugli utenti Linux. |
Questo articolo non vuole essere né una guida all'installazione di Debian 3.1 né una guida alla messa in sicurezza, quindi si presuppone che il server sia già configurato e pronto a tutto.
Partiamo subito dall'installazione dei pacchetti Samba, quindi come root diamo i seguenti comandi:
# apt-get install samba samba-client samba-doc |
Il pacchetto samba-doc è richiesto in quanto al suo interno si trova lo schema LDAP per Samba. Per il momento, come configurazione di base, rispondete così alle domande che vi vengono poste:
In parole povere il server LDAP è un database gerarchico che viene utilizzato per memorizzare tutti i dati degli utenti,
dei gruppi e dei computer appartenenti al dominio.
Per installare il server LDAP occorre dare i comandi
# apt-get install slapd ldap-utils |
Durante l'installazione verranno chieste alcune informazioni per configurare in maniera appropriata il server LDAP.
In particolare verrà chiesto un nome di dominio, che può essere inventato (non deve per forza essere un FQDN).
In questo articolo utilizzeremo il dominio fake.net per il server LDAP (che verrà convertito in dc=fake,dc=net) e
FAKE_NET come "dominio" Windows.
In seguito verrà richiesta la password dell'amministratore LDAP. Consiglio di scegliere una password particolarmente
sicura, in quanto chiunque ne entrasse in possesso potrebbe avere accesso a tutte le informazioni del dominio.
Per tutte le altre domande confermate le impostazioni di default.
Passiamo ora alla configurazione del server LDAP.
Innanzitutto dobbiamo copiare nella directory di LDAP lo schema per Samba:
# zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema |
dopodiché passiamo alla modifica del file di configurazione (/etc/ldap/slapd.conf) e nella sezione "Schema and objectClass definitions" aggiungiamo
include /etc/ldap/schema/samba.schema |
Nella sezione "Indexing options" aggiungiamo una serie di indicizzazioni che ottimizzeranno le interrogazioni al database
index objectClass eq index uid,uidNumber,gidNumber,memberUid eq index cn,mail,surname,givenname eq,subinitial index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq |
Per ultima cosa dobbiamo consentire agli utenti di cambiare, oltre alla password Unix, anche la password Samba; modifichiamo quindi la riga
access to attribute=userPassword |
in
access to attrs=userPassword,sambaNTPassword,sambaLMPassword |
Ora possiamo ricaricare il server LDAP con
# /etc/init.d/slapd restart |
Per consentire l'accesso alle informazioni memorizzate nell'albero LDAP dobbiamo modificare il file /etc/ldap/ldap.conf aggiungendo o modificando le righe
BASE dc=fake,dc=net URI ldap://localhost |
I programmi forniti con gli smbldap-tools sostituiscono i comandi standard per la gestione di utenti/gruppi/password, dialogando direttamente con il server LDAP per gestire contemporaneamente gli account Unix e Samba.
Per installare il pacchetto basta dare
# apt-get install smbldap-tools |
Innanzitutto è necessario copiare i file smbldap.conf e smbldap_bind.conf in /etc/smbldap-tools
# cd /etc/smbldap-tools # zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > ./smbldap.conf # cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf ./smbldap_bind.conf |
Ora è necessario modificare il file smbldap_bind.conf inserendo il DN dell'amministratore (cn=admin,dc=fake,dc=net) LDAP e la sua password.
Andiamo quindi a modificare il file principale smbldap.conf secondo la nostra configurazione:
nel campo "SID=" inseriamo l'output del comando # net getlocalsid, le altre variabili vanno modificate a
seconda della configurazione che vogliamo avere.
Terminate le modifiche assegnamo ai due file i permessi appropriati:
# chmod 0644 /etc/smbldap-tools/smbldap.conf # chmod 0600 /etc/smbldap-tools/smbldap_bind.conf |
Per "inizializzare" il database LDAP eseguiamo il comando
smbldap-populate -k 0 |
Il parametro k serve a impostare l'UID dell'utente Administrator a 0, facendolo di fatto coincidere con
l'utente root.
Infine è necessario cambiare la password di Administrator con il comando
smbldap-passwd Administrator |
Per far lavorare correttamente Samba è necessario configurare NSS con LDAP. Samba infatti si aspetta di trovare un utente di sistema con lo stesso nome di un utente Samba. Per questo occorre recuperare le informazioni sugli utenti dal database LDAP. È necessario quindi installare libnss-ldap
# apt-get install libnss-ldap |
Verrà chiesto il server LDAP e il dominio (fake.net), per tutte le altre domande
è possibile mantenere le risposte di default.
Dopo l'installazione è necessario modificare il file di configurazione di NSS
(/etc/nsswitch.conf) come segue
passwd: compat ldap group: compat ldap shadow: compat ldap |
È possibile verificare le impostazioni con il comando
getent passwd |
che dovrebbe riportare anche gli utenti Samba come Administrator.
Terminiamo la configurazione di Samba modificando il file /etc/samba/smb.conf.
Innanzitutto impostiamo il netbios name, il dominio e l'autenticazione a username.
workgroup = FAKE_NET netbios name = HULK security = user |
Quindi sostituiamo il backend predefinito
passdb backend = tdbsam guest |
con il backend basato su LDAP
passdb backend = ldapsam:ldap://127.0.0.1 ; configurazione del backend LDAP ldap admin dn = cn=admin,dc=fake,dc=net ldap suffix = dc=fake,dc=net ldap group suffix = ou=Groups ldap user suffix = ou=Users ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap ; permettiamo ai client Windows di modificare il database (cambio password, etc...) ldap passwd sync = Yes passwd program = /usr/sbin/smbldap-passwd %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated* add user script = /usr/sbin/smbldap-useradd -m "%u" ldap delete dn = Yes delete user script = /usr/sbin/smbldap-userdel "%u" add machine script = /usr/sbin/smbldap-useradd -w "%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" |
Inoltre dobbiamo configurare Samba in modo che si comporti da PDC
os level = 255 domain master = yes domain logons = yes preferred master = yes |
e rendere scrivibili le home directory (di default sono in sola lettura)
[homes] comment = Home Directories browseable = no writable = yes create mask = 0700 directory mask = 0700 |
Quindi decommentiamo le share [netlogon] e [profiles]
[netlogon] comment = Network Logon Service path = /home/samba/netlogon guest ok = yes writable = no share modes = no [profiles] path = /home/samba/profiles read only = no create mask = 0600 directory mask = 0700 |
Affinché i roaming profiles funzionino correttamente è necessario che la cartella puntata dalla share [profiles] esista e abbia permessi 1757.
Il file ora pronto. Salviamo e testiamolo con
# testparm |
Ora è necessario inserire nel database Samba la password per l'accesso a LDAP
# smbpasswd -w <password> |
Facciamo ripartire Samba
# /etc/init.d/samba restart |
e creiamo le cartelle necessarie per netlogon e profiles
# mkdir /home/samba/netlogon # mkdir /home/samba/profiles # chmod 1757 /home/samba/profiles |
Per creare un utente e successivamente cambiare la sua password dare i comandi
# smbldap-useradd -a -m -c "Stefano Sasso" stefano.sasso # smbldap-passwd stefano.sasso |
Per verificare il tutto usare il comando
# smbldap-usershow stefano.sasso |
Per creare un gruppo dare il comando
# smbldap-groupadd "NomeGruppo" |
Per aggiungere un utente a un gruppo esistente dare il comando
# smbldap-usermod -G "NomeGruppo" stefano.sasso |
Attenzione: non è possibile accedere a un dominio con Windows XP Home Edition.
Windows 2000 può fare join al dominio con il metodo tradizionale, mentre in Windows XP è necessario modificare una chiave del registro con regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\netlogon\parameters "RequireSignOrSeal"=dword:00000000 |
dopodiché si può fare join in maniera tradizionale.
Nel caso nella rete ci sia un altro server Samba e si voglia utilizzare un unico database utenti
è possibile fare join al dominio dal secondo server Samba.
Modificare /etc/samba/smb.conf come segue
workgroup = FAKE_NET netbios name = SERVER2 security = domain |
far ripartire Samba e dare il seguente comando per unire il server al dominio e creare l'utente macchina
net rpc join -U Administrator |
Infine, affinché un utente sia riconosciuto da Samba deve anche essere un utente di sistema valido, quindi è necessario installare libnss-ldap e configurarlo in modo da recuperare le informazioni degli utenti dal server LDAP.
È possibile utilizzare il database utenti del dominio anche per autenticazioni proxy, autenticazioni http e altre, ma esula dallo scopo di questo articolo.
[1] Debian:
http://www.debian.org/
[2] Samba:
http://www.samba.org/
[3] Openldap:
http://www.openldap.org/
[4] IDEALX (smbldap-tools):
http://samba.idealx.org/index.en.html
L'autoreStefano Sasso (http://www.dscnet.org/stefano) utilizza Linux dal 2000 e si diverte a programmare in Java, PHP, Perl e Python. Frequenta il corso di laurea in Ingegneria Informatica presso l'Università di Padova e a tempo perso è consulente informatico su piattaforme Open Source. |
<- Piccoli server web - Indice Generale - Copertina - Indice analitico della Costituzione italiana -> |