Diferència entre revisions de la pàgina «Samba amb LDAP»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
Línia 5: Línia 5:
 
== Introducció ==
 
== 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.
 
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.
 +
 +
<br>
  
 
== Ajustos inicials ==
 
== Ajustos inicials ==
Línia 22: Línia 24:
  
 
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.
 
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.
 +
 +
<br>
  
 
== Afegir ''schema'' de Samba al LDAP ==
 
== Afegir ''schema'' de Samba al LDAP ==
Línia 27: Línia 31:
  
 
Segueix l'[https://help.ubuntu.com/lts/serverguide/samba-ldap.html#samba-ldap-openldap-configuration article d'Ubuntu per '''afegir schema Samba a LDAP'''].
 
Segueix l'[https://help.ubuntu.com/lts/serverguide/samba-ldap.html#samba-ldap-openldap-configuration article d'Ubuntu per '''afegir schema Samba a LDAP'''].
 +
 +
<br>
  
 
== Afegir encriptació TLS a LDAP ==
 
== Afegir encriptació TLS a LDAP ==
Línia 53: Línia 59:
 
  # a2enmod ssl
 
  # a2enmod ssl
 
  # a2ensite default-ssl.conf
 
  # a2ensite default-ssl.conf
  # service apache restart
+
  # service apache2 restart
  
 
Ara ja podem accedir de forma segura a la interfície:
 
Ara ja podem accedir de forma segura a la interfície:
 
  https://ldap_server_ip/phpldapadmin
 
  https://ldap_server_ip/phpldapadmin
 +
 +
<br>
  
 
== Configurem Samba ==
 
== Configurem Samba ==
Línia 62: Línia 70:
 
# Que Samba actui com a PDC
 
# Que Samba actui com a PDC
 
#* [[Samba#Samba Server]]
 
#* [[Samba#Samba Server]]
 +
#* Particularment cal vigilar: <pre>  server role = classic primary domain controller</pre>
 
# Que utilitzi LDAP com a ''passdb backend''
 
# Que utilitzi LDAP com a ''passdb backend''
 
#* [https://help.ubuntu.com/lts/serverguide/samba-ldap.html#samba-ldap-samba-configuration Guia Ubuntu per fer-ho].
 
#* [https://help.ubuntu.com/lts/serverguide/samba-ldap.html#samba-ldap-samba-configuration Guia Ubuntu per fer-ho].
Línia 86: Línia 95:
  
 
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 [https://wiki.samba.org/index.php/3.0:_Initialization_LDAP_Database#3.2._Preload_LDIF agafar el LDIF template], aplicar-li modficacions i importar-lo:
 
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 [https://wiki.samba.org/index.php/3.0:_Initialization_LDAP_Database#3.2._Preload_LDIF 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.
+
* Comprova que tens un domini Samba amb el SID de la teva màquina.
 
* Descarrega [el template d'usuaris i grups] i modifica:
 
* Descarrega [el template d'usuaris i grups] i modifica:
 
** SIDs d'acord amb el del teu server
 
** SIDs d'acord amb el del teu server
Línia 97: Línia 106:
  
 
== Configurem smbldap-tools ==
 
== Configurem smbldap-tools ==
Per poder manipular tot el tinglado necessitem una sèrie de comandes contingudes en el package '''ldap-tools'''. Curiosament, [https://bugs.launchpad.net/ubuntu/+source/smbldap-tools/+bug/126038 no es configuren correctament per defecte i cal fer alguns arreglos com indica aquest bug].
+
Per poder manipular tot el tinglado necessitem una sèrie de comandes contingudes en el ''package'' '''ldap-tools'''. Curiosament, [https://bugs.launchpad.net/ubuntu/+source/smbldap-tools/+bug/126038 no es configuren correctament per defecte i cal fer alguns arreglos com indica aquest bug].
  
 
La qüestió és bàsicament copiar els (inexistents) arxius de conf al lloc què li toca. En Ubuntu 14.04:
 
La qüestió és bàsicament copiar els (inexistents) arxius de conf al lloc què li toca. En Ubuntu 14.04:
Línia 112: Línia 121:
 
  # smbldap-useradd -t 0 -w "makina1"
 
  # smbldap-useradd -t 0 -w "makina1"
  
Pot ser que el script dongui errors. Al objecte sambaDomainName cal afegir-li el objectClass sambaUnixIdPool i omplir els GID i UID amb dos nombres, per ex. 4000 i 5000
+
Probablement es queixarà (un altre ''bug'') de que no pot trobar els següents GID i UID: <code>Failed to find sambaUnixIdPool to get next gidNumber</code>. Per solucionar-ho afegirem aquestes propietats de l'objecte '''sambaUnixIdPool''' al '''sambaDomainName''' (que sol estar a l'arrel del DIT LDAP):
 +
* Entrar a PhpLdapAdmin i anar al sambaDomainName
 +
* Clicar "veure atributs interns"
 +
* Afegir un '''objectClass''' del tipus '''sambaUnixIdPool'''
 +
* Omplir els GID i UID amb nombres pertinents (p.ex. 500 i 1500).
 +
 
 +
Testejem les eines del paquet afegint la màquina de la darrera comanda.
  
 
<br>
 
<br>
Línia 132: Línia 147:
  
 
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).
 
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).
 +
 +
SOLUCIÓ2: desactivar el TLS (<code>ldap ssl = off</code> en /etc/samba/smb.conf)

Revisió del 20:27, 29 des 2015

Abans de recórrer aquest article cal tenir clars els conceptes bàsics. Pots mirar-te els articles relacionats:

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.


Ajustos inicials

Abans de poder començar:

  • Ajusta la IP de la màquina convenientment.
  • Tria un nom de domini adequat i sense confusions (canviar-ho a mig procés ens liarà).
  • Ajusta el FQDN de la màquina de forma convenient al domini que vols fer:
    maquina.domini.local


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

Aquesta passa és optativa. Això assegurarà la connexió amb el servidor LDAP. Si és una màquina externa és imprescindible. Però si tenim el Samba i el LDAP a la mateixa màquina podem simplement desactivar l'ús del TLS amb:

[global]
    ...
    ldap ssl = off

Per implementar TLS: 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 apache2 restart

Ara ja podem accedir de forma segura a la interfície:

https://ldap_server_ip/phpldapadmin


Configurem Samba

Hem de configurar:

  1. Que Samba actui com a PDC
    • Samba#Samba Server
    • Particularment cal vigilar:
        server role = classic primary domain controller
  2. Que utilitzi LDAP com a passdb backend
  3. 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.
  • 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)

Per poder modificar contrasenyes harem d'instal·lar el paquet libnss-ldap o libnss-ldapd i podrem modificar les contrasenyes amb la habitual comanda:

$ sudo smbpasswd -a <nom_usuari>


Configurem smbldap-tools

Per poder manipular tot el tinglado necessitem una sèrie de comandes contingudes en el package ldap-tools. Curiosament, no es configuren correctament per defecte i cal fer alguns arreglos com indica aquest bug.

La qüestió és bàsicament copiar els (inexistents) arxius de conf al lloc què li toca. En Ubuntu 14.04:

# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/
# cp /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz /etc/smbldap-tools/
# cd /etc/smldap-tools
# gunzip smbldap.conf.gz

Editeu els fitxers i poseu-hi els valors pertinents al vostre domini: (potser és més fàcil deshabilitant TLS).

  • DN del admin
  • SID

Testejem, per exemple, afegir una màquina nova (necessari per afegir Windows al domini):

# smbldap-useradd -t 0 -w "makina1"

Probablement es queixarà (un altre bug) de que no pot trobar els següents GID i UID: Failed to find sambaUnixIdPool to get next gidNumber. Per solucionar-ho afegirem aquestes propietats de l'objecte sambaUnixIdPool al sambaDomainName (que sol estar a l'arrel del DIT LDAP):

  • Entrar a PhpLdapAdmin i anar al sambaDomainName
  • Clicar "veure atributs interns"
  • Afegir un objectClass del tipus sambaUnixIdPool
  • Omplir els GID i UID amb nombres pertinents (p.ex. 500 i 1500).

Testejem les eines del paquet afegint la màquina de la darrera comanda.


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

SOLUCIÓ2: desactivar el TLS (ldap ssl = off en /etc/samba/smb.conf)