Sinistra <- Piccoli server web - Indice Generale - Copertina - Indice analitico della Costituzione italiana -> Destra

Sistemi Liberi


Samba 3 come PDC di una rete Windows

Samba 3 come PDC di una rete Windows

di Stefano Sasso

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.



Debian Sarge (3.1)

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.

Samba (installazione)

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:

Non dobbiamo preoccuparci di eventuali errori segnalati, in quanto la configurazione vera e propria di Samba verrà fatta in un secondo momento.

LDAP

Installazione

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.

Configurazione del server LDAP

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

Configurazione del client LDAP

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

smbldap-tools

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.

Installazione

Per installare il pacchetto basta dare

# apt-get install smbldap-tools

Configurazione

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

"Popolamento" della struttura LDAP

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

Configurazione di NSS per lavorare con LDAP

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.

Samba (configurazione)

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

Creazione di utenti e gruppi

Creazione di utenti

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

Creazione di un gruppo

Per creare un gruppo dare il comando

# smbldap-groupadd "NomeGruppo"

Aggiunta di un utente a un gruppo

Per aggiungere un utente a un gruppo esistente dare il comando

# smbldap-usermod -G "NomeGruppo" stefano.sasso

Connettersi a un dominio Samba

Connessione di un client Windows

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.

Unire un server Samba al dominio

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.

Possibili ulteriori utilizzi del database centralizzato

È possibile utilizzare il database utenti del dominio anche per autenticazioni proxy, autenticazioni http e altre, ma esula dallo scopo di questo articolo.

Riferimenti bibliografici

[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'autore

Stefano 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.


Sinistra <- Piccoli server web - Indice Generale - Copertina - Indice analitico della Costituzione italiana -> Destra