Installazione di Samba come PDC con LDAP Backend su Debian Sarge
Premessa
In questo documento spiegherò come installare e configurare Samba, in modo da poter realizzare un PDC (Primari 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: LOGIC
* 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: logic * Name of organisation: logic * Admin password: password * Confirm password: password * Allow LDAP v2: no
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=logic" rootpw "password" indexuid,uidNumber,gidNumber,memberUid eq indexcn,mail,surname,givennameeq,subinitial indexsambaSIDeq indexsambaPrimaryGroupSIDeq indexsambaDomainNameeq access to attribute=userPassword --> \ access to attrs=userPassword,sambaNTPassword,sambaLMPassword nano /etc/ldap/ldap.conf BASE dc=logic 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=logic" slavePw="password" masterDN="cn=admin,dc=logic" 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="LOGIC"
ldapTLS="0"
suffix="dc=logic"
sambaUnixIdPooldn="sambaDomainName=LOGIC,${suffix}"
defaultMaxPasswordAge="180"
userSmbHome="\\PDC-SERVER\%U"
userProfile="\\PDC-SERVER\profiles\%U"
userScript="startup.bat"
mailDomain="logic"
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 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
* Risposte di default
nano /etc/pam.d/common-account
account sufficientpam_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=logic ldap suffix = dc=logic 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


