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