Samba amb LDAP
Abans de recórrer aquest article cal tenir clars els conceptes bàsics. Pots mirar-te els articles relacionats:
Contingut
Introducció
Realitzarem aquesta pràctica amb Ubuntu. Posarem a punt un servidor Samba com a PDC i li posarem un servidor LDAP com a password backend. D'aquesta manera podrem centralitzar la gestió d'usuaris i contrasenyes, i alhora permetre la funcionalitat de Samba per a dominis Windows.
Instal·lació
Instal·lem tots els paquets (anem al lío):
# apt-get install slapd ldap-utils samba samba-doc smbldap-tools phpldapadmin gnutls-bin ssl-cert
Creem el primer DIT, tot i que de fet son 2: un per la BD interna del SLAPD i un altre per les nostres dades del domini.
# dpkg-reconfigure slapd
OJU, perquè quan fem això se'ns esborra tota la configuració del LDAP, i si hem afegit schemas addicionals (com el cas del Samba) caldria tornar-los a afegir.
Afegir schema de Samba al LDAP
Aquesta configuració de LDAP requereix el schema de Samba, cosa que inicialment no porta.
Segueix l'article d'Ubuntu per afegir schema Samba a LDAP.
Afegir encriptació TLS a LDAP
Segueix aquest apartat del tutorial d'Ubuntu per afegir encriptació TLS al servidor.
ULL!! És important que el CN (common name) del servidor del certificat sigui el mateix que el FQDN de la teva màquina server. En el tutorial és ldap01, ajusta-ho a la teva màquina (per exemple, funkyserver.funky.local).
Si no, et donarà errors de TLS en el log.smbd
Ajustar phpldapadmin
Solució per si apareix l'error dels usuaris (en Ubuntu 14 passa).
Ajustem el domini per defecte que mostra la interfície editant /etc/phpldapadmin/config.php. Comentem la següent línia (ens forçava a example.com):
#$servers->setValue('server','base',array('dc=example,dc=com'));
I també aquesta:
#$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
Ajustem Apache per accedir de forma segura al phpldapadmin:
# a2enmod ssl # a2ensite default-ssl.conf # service apache restart
Ara ja podem accedir de forma segura a la interfície:
https://ldap_server_ip/phpldapadmin
Configurem Samba
Hem de configurar:
- Que Samba actui com a PDC
- Que utilitzi LDAP com a passdb backend
- Accedeix per phpldapadmin i crea (per aquest ordre):
- grups
- usuaris
- maquines
Abans de crear els usuaris haurem de configurar els SID (Samba ID) com explica aquesta guía (feu-li un cop d'ull com a referència, però es crea la DB "a mà" i és complexa). Millor ho farem amb PHPLDAPADMIN
Primer de tot, hem de prendre nota del local SID de la màquina server:
# net getlocalsid
A mi em surt:
SID for domain FUNKYSERVER is: S-1-5-21-1681675730-4274209261-388585976
Creem un domini Samba i li afegim el SID de la màquina server.
A partir d'aquí caldria afegir els grups (Samba Group Mapping, no el grup Posix general):
- Domain Admins
- Domain Users
- Domain Guests
- Administrators
Ho poriem fer "a mà" amb el PHPLDAPADMIN, però en algunes ocasions la creació de Samba Group Mappings falla. Si és el cas, casi que és més fàcil agafar el LDIF template, aplicar-li modficacions i importar-lo:
- Comprova que tens un domini Samba amb el SID de la teva màquina anterior.
- Descarrega [el template d'usuaris i grups] i modifica:
- SIDs d'acord amb el del teu server
- Domini (a l'exemple és differentialdesign.org , i per vosaltres el vostre (funky.local, per exemple)
Troubleshooting
El més important (com sempre) és mirar el fitxer de log:
$ tail -f /var/log/samba/log.smbd
La comanda testparm també ens dona informació sobre si hi ha errors a smbd.conf:
$ testparm
PROBLEMA: pdb_init_ldapsam_common: Failed to retrieve LDAP password from secrets.tdb
SOLUCIÓ: afegir la contrasenya d'admin LDAP a la conf (secrets.tdb) amb (raro que calgui posar-la en clear text):
# smbpasswd -w la_password
PROBLEMA: Failed to issue the StartTLS instruction: Connect error
SOLUCIÓ: el CN (common name) del host en el certificat no coincideix amb el FQDN del servidor. Canvia un o l'altre (nom del server o bé refés el certificat).