venerdì, Aprile 19, 2024

Installazione di Samba come PDC con LDAP Backend

Alessandro Pensato
Alessandro Pensatohttp://www.alessandro-pensato.it
Ciao a tutti, sono Alessandro, sono nato a Palermo il 24/01/1983 e vivo a qualche chilometro dalla città. Da anni coltivo la passione per i computer e tutto quello che ci sta attorno, con un occhio di riguardo per il mondo delle reti. Nel 2000 mi avvicino al mondo di Linux e ne resto impressionato da ciò che consente di fare, nonchè alla filosofia dell’opensource. Nel Aprile 2005 ho conseguito la certificazione Cisco CCNA. Da Novembre 2006 sono membro del CUG. Ho completato il corso HP IT Essential I e II e Cisco Network Security. Ho svolto uno stage presso Jump2Future dove mi sono occupato di redigere una ralazione per la realizzazione di un cluster basato su RedHat GFS (Global File System). Lavoro per l’IBIM-CNR di Palermo dal 2002 come tecnico informatico e gestione rete. Sto cominciando ad acquisire conoscenze nel campo del VoIP con software quali Trixbox e Elastix, realizzazione e uso di macchine virtuali basate su VMWare.

Premessa

In questo documento spiegherò come installare e configurare Samba, in modo da poter realizzare un PDC (Primary Domain Controller). Solitamente la funzione di un PDC è associata all’uso di un server Win NT/2000/2003, infatti il nostro obiettivo è quello di evitare l’uso di questi OS proprietari, così da ottenere un PDC a costo zero, ma con le stesse funzioni di uno realizzato con sistemi Microsoft®.

Risorse Hardware e Software

Per il mio scopo ho utilizzato un pc, composto da un processore Pentium III 7330MHz, 256 MB di RAM, Hard Disk da 30GB IDE, scheda di rete RTL8139C 10/100Mbit. Dal lato software ho utilizzato Debian Sarge, Samba e OpenLDAP.

Installazione su Debian Sarge

Preparazione del sistema

Useremo dei pacchetti già pronti per l’installazione tramite apt, scaricandoli dai alcuni mirror riportati di seguito:

# /etc/apt/sources.list
deb http://debian.fastweb.it/debian stable main contrib non-free
deb http://packages.dotdeb.org stable all
apt-get update

Durante l’installazione dei pacchetti software il sistema ci chiederà di inserire vari parametri, possiamo anche ignorarli in quanto in una fase successiva sarà ricreato il file di configurazione sia di Samba che di OpenLDAP.

Installazione di Samba

Adesso possiamo installare Samba e installarli nel sistema con l’uso di apt.

apt-get install samba smbclient nmap
dpkg-reconfigure samba
   * Nome del Dominio/Workgroup: CED
   * Utilizzare password cifrate: SI
   * Utilizzare DHCP per i nomi Netbios: NO
   * Avviare Samba come demoni (no inetd)
   * Creare il database delle password: NO

Installazione di OpenLDAP

Installiamo sul sistema il software OpenLDAP, che gestirà il database degli account utenti del PDC grazie ad un apposito file (samba.schema).

apt-get install slapd ldap-utils samba-doc -y
dpkg-reconfigure slapd
   * DNS domain name: ced.local
   * Name of organisation: ced.local
   * Admin password: password
   * Confirm password: password
   * Allow LDAP v2: Yes

Configurazione di OpenLDAP

Adesso procediamo con la configurazione di LDAP. Dato che in fase d’installazione è stato generato un file in base alle risposte scelte, è utile rinominare l’attuale file e crearne uno nuovo. Procediamo come segue:

zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > \
/etc/ldap/schema/samba.schema
nano /etc/ldap/slapd.conf
       include /etc/ldap/schema/samba.schema
	rootdn  "cn=admin,dc=ced,dc=local"
	rootpw  "password"
	index 	uid,uidNumber,gidNumber,memberUid eq
	index 	cn,mail,surname,givenname eq,subinitial
	index 	sambaSID eq
	index 	sambaPrimaryGroupSID eq
	index 	sambaDomainName	eq
	attrs=userPassword,sambaNTPassword,sambaLMPassword
nano /etc/ldap/ldap.conf
	BASE dc=ced,dc=local
 	URI ldap://localhost

Salvati i file, procediamo con il riavvio del server LDAP e controlliamo che tutto sia funzionante.

/etc/init.d/slapd restart
ldapsearch -x

Installazione di Smb-ldap

SMBLDAP-TOOLS sono una raccolta di script che consentono la gestione di utenti e gruppi con LDAP. Sono utilizzati per aggiungere, cancellare e modificare utenti e gruppi. Per il corretto funzionamento degli stessi, sono necessarie delle librerie che installeremo.

apt-get install smbldap-tools -y

Configurazione di Smb-LDAP

Copiare i file smbldap.conf e smbldap_bind.conf in /etc/smbldap-tools.

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

Modificare il file /etc/smbldap-tools/smbldap_bind.conf

nano /etc/smbldap-tools/smbldap_bind.conf
	slaveDN="cn=admin,dc=ced,dc=local"
	slavePw="password"
	masterDN="cn=admin,dc=ced,dc=local"
	masterPw="password"

Modificare il file /etc/smbldap-tools/smbldap.conf modificando la stringa “SID” con il valore generato dal comando net getlocalsid

nano /etc/smbldap-tools/smbldap.conf
 	SID="S-1-5-21-351105684-3651906924-4293240841"	
	sambaDomain="CED"
 	ldapTLS="0"
 	suffix="dc=ced,dc=local"
 	sambaUnixIdPooldn="sambaDomainName=CED,${suffix}"
 	defaultMaxPasswordAge="180"
 	userSmbHome="\\DEBIAN\%U"
 	userProfile="\\DEBIAN\profiles\%U"
 	userScript="startup.bat"
 	mailDomain="ced.local"

Per non compromettere la sicurezza del sistema è opportuno impedire agli utenti di avere accesso alle password di amministratore di LDAP, settando i permessi come indicato di seguito.

chmod 0644 /etc/smbldap-tools/smbldap.conf
chmod 0600 /etc/smbldap-tools/smbldap_bind.conf

A questo punto è possibile popolare il db di LDAP con i dati neccessari alla gestione dei dominio.

Configurazione degli utenti e database LDAP

Il prossimo passo è quello di creare gli utenti che avranno accesso al PDC e di creare la struttura del database che li conterrà. Per automatizzare l’aggiunta di in computer al dominio è necessario che l’utente Administrator, che si userà per connettere per la prima volta il pc al dominio, abbia l’uid uguale a quello di root (pari a 0).
Imposta l’uid di Administrator a 0

smbldap-populate -k 0
smbldap-populate -a Administrator -b nobody -u 2000 -g 2000

Setta la password per root

smbpasswd -a root

Setta la password per Administrator

smbldap-passwd Administrator
smbldap-usermod -J Administrator

Testa le informazioni sull’utente specificato

ldapsearch -x uid=Administrator

Mostra il contenuto del database ldap

slapcat | grep Group | grep dn

È necessario configurare anche l’autenticazione sulla macchina stessa dov’è installato ldap.

apt-get install libnss-ldap -y
	* LDAP Server: ldap://127.0.0.1/
	* DC: dc=ced,dc=local
 	* LDAP Version: 3
	* LDAP Account root: cn=admin,dc=ced,dc=local
	* LDAP root password: password
nano /etc/nsswitch.conf
 	passwd:	compat ldap
 	group: 	compat ldap
 	shadow:	compat ldap

Verifichiamo che tuuto sia corretto e funzionante con il comando getent passwd, che restuirà un output simile a questo qui di seguito.

getent passwd	
	[...]
	sshd:x:100:65534::/var/run/sshd:/usr/sbin/nologin
	openldap:x:101:104:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false
	root:x:0:0:Netbios Domain Administrator:/home/root:/bin/false
	nobody:x:999:514:nobody:/dev/null:/bin/false
	Administrator:x:0:0:Netbios Domain Administrator:/home/Administrator:/bin/false
apt-get install libpam-ldap -y
	* Make local root DB admin: Yes 
	* LDAP root require login: No
	* LDAP account for root: cn=admin,dc=ced,dc=local
	* LDAP root password: password
nano /etc/pam.d/common-account
	account sufficient	pam_ldap.so
	account required 	pam_unix.so
nano /etc/pam.d/common-auth
	auth    sufficient      pam_ldap.so nullok_secure
	auth    required        pam_unix.so use_first_pass
nano /etc/pam.d/common-password
	password    sufficient    pam_ldap.so
	password    required      pam_unix.so try_first_pass nullok obscure min=4 max=8 md5
nano /etc/pam.d/common-session
	session    sufficient      pam_ldap.so
	session    required        pam_unix.so

Configurazione di Samba

Adesso possiamo procedere alla configurazione di Samba per consentire l’integrazione con LDAP. Come per OpenLDAP, è opportuno rinominare il file creato al momento dell’installazione e crearne uno nuovo.

mv /etc/samba/smb.conf /etc/samba/smb.conf.old
nano /etc/samba/smb.conf
	wins support = yes
	security = user
	passdb backend = ldapsam:ldap://127.0.0.1
	ldap admin dn = cn=admin,dc=ced,dc=local
	ldap suffix = dc=ced,dc=local
	ldap group suffix = ou=Groups
	ldap user suffix = ou=Users
	ldap machine suffix = ou=Computers
	ldap idmap suffix = ou=Idmap
	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"

	os level = 255
 	domain master = yes
 	domain logons = yes
 	preferred master = yes

	[homes]
		comment = Home Directories
		browseable = no
		writable = yes
		create mask = 0700
		directory mask = 0700

	[netlogon]
		comment = Network Logon Service
		path = /var/lib/samba/netlogon
		guest ok = yes
		writable = no
		share modes = no

	[profiles]
		path = /var/lib/samba/profiles
		read only = no
		create mask = 0600
		directory mask = 0700

Controlliamo se i parametri sono corretti con il comando testparm. Ci verranno riepilogati i parametri appena settati e cosa importante da controllare è la presenza della riga Server role: ROLE_DOMAIN_PDC che conferma la configurazione di Samba come PDC.

Creiamo le directory dove saranno salvati i profili degli utenti.

mkdir /var/lib/samba/netlogon
mkdir /var/lib/samba/profiles
chmod 1757 /var/lib/samba/profiles

A questo punto è necessario riavviare Samba in maniera tale da usare il nuovo file di configurazione.

/etc/init.d/samba restart

Occore utilizzare il comando di seguito per cambiare la password per l’amministrazione di smbldap.

smbpasswd -w password

Si devono assegnare i diritti ai gruppi del dominio per consentire la corretta creazione delle directory che conterrano i profili e le altre impostazioni.

net -S DEBIAN -U Administrator rpc rights grant "DOMAIN\Domain Admins" \
SeMachineAccountPrivilege SePrintOperatorPrivilege SeAddUsersPrivilege \
SeDiskOperatorPrivilege SeRemoteShutdownPrivilege
net -S DEBIAN -U Administrator rpc rights grant "DOMAIN\Print Operators" \
SePrintOperatorPrivilege

Gestione degli utenti/gruppi presenti nel database LDAP

Uno strumento molto utile è PhpLdapAdmin, che è molto simile al noto programma php per la gestione dei database mysql, PhpMyAdmin.

apt-get install phpldapadmin xml-core php-pear php5-dev -y
   * Authentication type: session
   * Configure webserver: apache2
   * Restart: yes
apt-get install db4.4-util -y

Ora che tutto è pronto, possiamo cominciare ad aggiungere i client al dominio appena realizzato. Nel caso si usino macchine con installato WinXP Pro, ricordo che WinXP Home non ha il supporto per essere integrato con un dominio, occorre modificare una chiave di registro come riportato di seguito:

Su WinXP – Pro eseguire REGEDIT

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\netlogon\parameters
 "RequireSignOrSeal"=dword:00000000

Articoli correlati

Non perdere il lancio online della Community GDPR Day: 26 marzo 2024

La sicurezza dei dati e delle informazioni non è più un'opzione, ma una necessità imprescindibile. Lo dimostrano i tanti attacchi informatici che, con frequenza...

Digital Transformation


 

Noleggia una Tesla per il tuo evento ICT!

Categorie