Diferència entre revisions de la pàgina «Servidor LDAP en Debian/Ubuntu»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
Línia 7: Línia 7:
 
Referències:
 
Referències:
 
* [http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP a Wikipedia]
 
* [http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol LDAP a Wikipedia]
* Llegeix del [https://help.ubuntu.com/12.10/serverguide/openldap-server.html HOWTO de Ubuntu els conceptes clau de LDAP].
 
 
* Més informació a [[LDAP]] (cacauet).
 
* Més informació a [[LDAP]] (cacauet).
 
* Bons tutorials de DigitalOcean:
 
* Bons tutorials de DigitalOcean:
Línia 19: Línia 18:
 
== Instal·lació a Debian / Ubuntu ==
 
== Instal·lació a Debian / Ubuntu ==
 
Primer l'instal·larem com de costum:
 
Primer l'instal·larem com de costum:
  # apt-get install slapd
+
  # apt-get install slapd ldap-utils
  
Després s'ha de reconfigurar per configurar els arxius bàsics:
+
La via fàcil: reconfigurar els arxius amb un assistent:
 
  # dpkg-reconfigure slapd
 
  # dpkg-reconfigure slapd
  
Evidentment, cal que recordeu la contrassenya que heu generat per l'usuari "admin".
+
Evidentment, cal que recordeu la contrasenya que heu generat per l'usuari "admin".
  
=== LDAP segur amb SSL ===
+
=== Seguretat LDAP ===
Si voleu aplicar les configuracions de seguretat (encriptació SSL) mireu-vos això:
+
Per fer un sistema segur del tot ens caldria, a més:
* https://help.ubuntu.com/community/SecuringOpenLDAPConnections
+
* [https://help.ubuntu.com/community/SecuringOpenLDAPConnections Encriptació SSL de l'autenticació].
 +
* Inhabilitar el ''anonymous bind'', ja que tothom pot veure les dades del directori (llevat de les contrasenyes).
  
 
<br>
 
<br>
  
== Webmin ==
+
== Editors per LDAP ==
Webmin és un paquet que administra molts serveis via web: http://www.webmin.com
+
Editar els arxius de LDAP a mà és una feina dura i complexa. És convenient utilitzar eines gràfiques que ens ho posin fàcil:
 
+
* <strike>'''Webmin''' : se suposa que hauria de permetre editar el servidor LDAP, però les proves realitzades han estat negatives.</strike>
Lamentablement no ens serà molt útil per LDAP en Ubuntu, així que '''millor utilitzar el Apache Directory Studio''' (veure més avall).
+
* '''Apache Directory Studio''' : requereix Java en el client.
 
+
* '''PHPLDAPADMIN (recomanat)''' : interfície web. Molt còmode: <pre># apt-get install phpldapadmin</pre>
Si igualment el voleu instal·lar, aneu a la web http://www.webmin.com, a la secció DOWNLOADS, on hi ha la descàrrega del package per Debian i les instruccions per instal·lar-ho.
+
*: Si us apareix un error en crear usuaris [http://stackoverflow.com/questions/20673186/getting-error-for-setting-password-field-when-creating-generic-user-account-phpl mireu aquesta solució].
 
 
Amb la versió Ubuntu 12.04 sembla que Webmin no funciona d'entrada per gestionar el servidor LDAP.
 
  
 
<br>
 
<br>
  
== Apache Directory Studio ==
+
=== Apache Directory Studio ===
 
ADS és una eina stand alone que ens anirà perfecte per administrar el servidor LDAP.
 
ADS és una eina stand alone que ens anirà perfecte per administrar el servidor LDAP.
 
* Primer instal·leu un Java JRE (si teniu instal·lat el Eclipse ja el deveu tenir).
 
* Primer instal·leu un Java JRE (si teniu instal·lat el Eclipse ja el deveu tenir).
Línia 63: Línia 61:
 
<br>
 
<br>
  
== Creant els primers usuaris ==
+
=== Creant els primers usuaris amb Apache Directory Studio ===
 
Per crear els usuaris amb l'Apache Directory Studio:
 
Per crear els usuaris amb l'Apache Directory Studio:
 
* Clicar amb botó dret sobre el domini (dc=..., dc=...) -> "New Entry"
 
* Clicar amb botó dret sobre el domini (dc=..., dc=...) -> "New Entry"

Revisió del 19:26, 13 des 2015

LDAP és una especificació de servei de directori. Es sol utilitzar per centralitzar comptes d'usuari per diferents aplicacions.

L'objectiu d'aquest article és crear un directori bàsic per autenticació d'aplicacions web.

No cobrirem la creació d'usuaris per validació amb el SO Linux ni la compatibilitat amb Windows.

Referències:



Instal·lació a Debian / Ubuntu

Primer l'instal·larem com de costum:

# apt-get install slapd ldap-utils

La via fàcil: reconfigurar els arxius amb un assistent:

# dpkg-reconfigure slapd

Evidentment, cal que recordeu la contrasenya que heu generat per l'usuari "admin".

Seguretat LDAP

Per fer un sistema segur del tot ens caldria, a més:


Editors per LDAP

Editar els arxius de LDAP a mà és una feina dura i complexa. És convenient utilitzar eines gràfiques que ens ho posin fàcil:

  • Webmin : se suposa que hauria de permetre editar el servidor LDAP, però les proves realitzades han estat negatives.
  • Apache Directory Studio : requereix Java en el client.
  • PHPLDAPADMIN (recomanat) : interfície web. Molt còmode:
    # apt-get install phpldapadmin
    Si us apareix un error en crear usuaris mireu aquesta solució.


Apache Directory Studio

ADS és una eina stand alone que ens anirà perfecte per administrar el servidor LDAP.

  • Primer instal·leu un Java JRE (si teniu instal·lat el Eclipse ja el deveu tenir).
  • Descarregueu-la de http://directory.apache.org/studio/
  • Versió Linux:
    • Es desempaqueta a un directori tipus "ApacheDirectoryStudio-linux-x86-2.0.0.v20130131" (tar xvf)
    • Convé moure aquesta carpeta al directori ~/bin de l'usuari i fer-hi un link perquè puguem executar l'aplicació directament amb
      $ ApacheDirectoryStudio

Abans de connectar-nos cal obrir el port 389 (LDAP), tingueu-ho en compte si esteu treballant en una màquina remota (AWS o el què sigui).

Tingueu en compte que també ens podem connectar de forma anònima (deixa llegir, però no escriure).

Per connectar-nos a la nostra màquina cal crear una connexió amb els paràmetres (exemples):

  • Authentication Method: Simple Authentication
  • Bind DN or user: cn=admin,dc=enric,dc=local
  • Bind password: la que hagueu posat.

NOTA: si veiem que tenim dificultats per connectar-nos, va bé primer fer una connexió anònima (sense autenticació, permet llegir els usuaris), amb el què ens trobarà el nom del domini (dc=enric,dc=local, per exemple).

Creant els primers usuaris amb Apache Directory Studio

Per crear els usuaris amb l'Apache Directory Studio:

  • Clicar amb botó dret sobre el domini (dc=..., dc=...) -> "New Entry"
  • Crear un Organizational Unit (ou). Ens servirà de "carpeta" pels usuaris. Li podeu assignar l'atribut:
    • ou=usuaris
  • Crearem els usuaris dintre d'aquesta OU.
  • Crear un nou objecte amb les objectClass següents: "person", "uidObject" (i "top" que ens ho posa automàticament):
    • person: ens permetrà afegir els atributs:
      • cn = Common Name
      • sn = surname, ens obligarà a posar-ho.
    • uidObject: ens permetrà afegir els atributs:
      • uid = user id (per autenticació)
      • userPassword : la necessitarem per autenticar-nos. Potser la més segura és SSHA (Salted SHA1).
  • Assignar tots aquests atributs comentats

Comprovar passwords abans de fer el codi

Amb l'Apache DS podeu comprovar l'usuari des de l'editor de passwords. Té la opció "Verify" i "Bind" (si no funcionen les dues segur que el codi PHP tampoc funcionarà).

Aquest post clarifica possibles problemes amb la password, en particular si hem afegit el "lang", cosa que no s'ha de fer i el wizard ens proposa al crear la password.


Configuració de clients LDAP

Recorda que si estàs treballant sobre una màquina AWS hauràs d'obrir el port 389 per poder-te connectar al servei LDAP.


Client Ubuntu (login)

Anem a canviar el mode d'autenticació d'un client Ubuntu perquè utilitzi el servidor LDAP. Bàsicament el que farem serà aplicar uns canvis sobre el PAM (Pluggable Authentication Module) perquè validi a través del servidor LDAP abans de provar a la BD d'usuaris de la màquina local.

IMPORTANT: quan toquem aquestes configuracions del PAM podem produir errors irrecuperables de la màquina. En aquests casos es pot intentar solventar arrencant el client en mode segur (menú d'arrencada del GRUB).

Utilitza els següents tutorials de DigitalOcean per configurar el teu Ubuntu a que faci el login del sistema mitjançant autenticació LDAP:

Si tens problemes comprova abans:

  • Que les màquines es veuen (mateixa xarxa, etc).
  • Que has configurat la xarxa de la màquina client
  • Que el servidor LDAP està visible.
  • Que hem configurat el client correctament contra un servidor ldap://.... (no ldapi:// o ldaps:// )

Si cal reconfigurar alguna cosa pots fer:

$ sudo dpkg-reconfigure ldap-auth-config


Aplicació web en PHP com a client LDAP

Necessitem la llibreria php5-ldap:

# apt-get install php5-ldap
# service apache2 restart

I ja podem provar d'autenticar-nos sobre el nostre servidor:

<h1>prova LDAP</h1>

<?php
$ldapconfig['host'] = 'localhost';
$ldapconfig['port'] = NULL; // es el 389 però amb NULL l'agafa per defecte
$ldapconfig['basedn'] = 'ou=usuaris,dc=enric,dc=local';
$ldapconfig['authrealm'] = 'My Realm';

$username = "manolo";
$passw = "manolo123";

echo "Inici...</br>";

$ds = ldap_connect($ldapconfig['host'],$ldapconfig['port']);

if( !$ds ) {
    echo "Error en la connexio</br>";
    exit(0);
}

echo "buscant usuari... <b>".$username."</b><br>\n";

$r = ldap_search( $ds, $ldapconfig['basedn'], 'uid=' . $username );
if ($r) {
    echo "usuari trobat: <b>".$username."</b><br>\n";
    $result = ldap_get_entries( $ds, $r);
    var_dump($result);
    echo "\n<br><br>\n";
        if (count($result)>0)
            if($result[0]) {
            // Eps! si no, no va!
            ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
            // check passw
            if (ldap_bind( $ds, $result[0]['dn'], $passw) ) {
                //return $result[0];
                echo "Contrasenya OK<br>\n";
            } else {
                echo "Contrasenya ERRONIA<br>\n";
            }
        }
}
?>