LDAP - LINUX

Servicio de Directorio • Adrián L. G. P.


Instalación

apt-get update
apt install slapd ldap-utils -y

Al instalarlo nos pedirá una contraseña para la gestión del servicio slapd.

Comprobación

Debe de poner "active":

systemctl status slapd

Debe de poner "LISTEN":

ss -pltu | grep slapd

Nos pone como dominio "nodomain":

slapcat

El usuario es "anonymous":

ldapwhoami -x

Formatos

Archivos .ldif:

# Elemento 1
dn: < nombre >
    < atributos >: < valor >
    ...
[Salto de línea antes de añadir otro elemento]
# Elemento 2
dn: < nombre >
    < atributos >: < valor >
    ...

dn (Distingushed Name): Diferencia a todos los objetos de la BBDD.

Re-configurar el Servicio

Ejecutamos este comando:

dpkg-reconfigure slapd

Respuestas: No; [DOMINIO]; [NOMBRE_EMPRESA]; Meter la contraseña; No; Si.

Comprobar el estado del servidor:

slapcat

Ejecutamos este comando:

ldapwhoami -x -D "cn=admin,dc=nombre_servidor,dc=es" -W

→ Ponemos la contraseña y si devuelve "cn=admin,dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO]" está bien configurado.


Crear una Unidad Organizativa

1. Crear un archivo .ldif y abrirlo.

2. Poner en su interior:

dn: ou=[UO],dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO]
objectClass: top
objectClass: organizationalUnit
ou: [UO]

UO: Nombre personalizado que tendrá la unidad organizativa.
NOMBRE_DOMINIO: Nombre del dominio sin el (.es, .com ..).
TLD_DOMINIO: TLD del dominio (es, com ..) [Sin el punto].

3. Añadir el archivo a la base de datos:

ldapadd -x -D cn=admin,dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO] -W -f [ARCHIVO].ldif

ARCHIVO: Nombre del archivo creado en el paso 1.

4. Comprobar si en la base de datos está la nueva unidad organizativa:

slapcat

Crear un Grupo

1. Crear un archivo .ldif y abrirlo.

2. Poner en su interior:

dn: cn=[NOMBRE_GRUPO],ou=[UO],dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO]
objectClass: top
objectClass: posixGroup
gidNumber: [N_GID]
cn: [NOMBRE_GRUPO]

NOMBRE_GRUPO: Nombre personalizado que tendrá el grupo.
UO: Unidad organizativa a la que pertenecerá.
NOMBRE_DOMINIO: Nombre del dominio sin el (.es, .com ..).
TLD_DOMINIO: TLD del dominio (es, com ..) [Sin el punto].

N_GID: Número entero identificador del grupo.

3. Añadir el archivo a la base de datos:

ldapadd -x -D cn=admin,dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO] -W -f [ARCHIVO].ldif

4. Comprobar si en la base de datos está el nuevo grupo:

slapcat

Crear un Usuario

0. Crear el hash de la contraseña (Pej.: {SSHA}jJ/Sl2m---5HeZJP) con el comando:

slappasswd

1. Crear un archivo .ldif y abrirlo.

2. Poner en su interior:

dn: uid=[NOMBRE_USUARIO],ou=[UO],dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO]
objectClass: top
objectClass: account
objectClass: posixAccount
uid: [NOMBRE_USUARIO]
cn: [NOMBRE_COMÚN]
userPassword: [CONTRASEÑA]
gecos: [NOMBRE_COMPLETO]
uidNumber: [N_UID]
gidNumber: [N_GID]
homeDirectory: /home/[NOMBRE_USUARIO]
loginShell: [SHELL]

UO: Unidad organizativa a la que pertenecerá.
NOMBRE_DOMINIO: Nombre del dominio sin el (.es, .com ..).
TLD_DOMINIO: TLD del dominio (es, com ..) [Sin el punto].

NOMBRE_USUARIO: Nombre personalizado que tendrá el usuario.
NOMBRE_COMÚN: Nombre común personalizado que tendrá el usuario).
NOMBRE_COMPLETO: Nombre completo personalizado que tendrá el usuario).
CONTRASEÑA: La contraseña en hash del usuario.

N_UID: Número entero identificador del usuario. Los siguientes usuarios creados, recibirán un valor +1 alto que este.
N_GID: Número entero identificador del grupo. 0 = Ninguno.

SHELL: /bin/bash, /bin/sh.

3. Añadir el archivo a la base de datos:

ldapadd -x -D cn=admin,dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO] -W -f [ARCHIVO].ldif

4. Comprobar si en la base de datos está el nuevo usuario:

slapcat

Crear un Usuario - Perfil Móvil

Lo mismo que en "Crear un Usuario" pero cambiando la ruta de homeDirectory a la carpeta donde se almacenen estos perfiles:

homeDirectory: /[CARPETA_MÓVIL]/[NOMBRE_USUARIO]

Modificar un objeto

1. Crear un archivo .ldif:

2. Poner en su interior:

dn: [DN_COMPLETO]
changetype: modify
replace: [PROPIEDAD_CAMBIAR]
[PROPIEDAD_CAMBIAR]: [VALOR_CAMBIAR]

* Para hacer 2 cambios se pone uno debajo del otro separado por una línea en blanco.

DN_COMPLETO: Identificador del objeto dentro de la base de datos.

PROPIEDAD_CAMBIAR: Nombre de la propiedad. Pej.: "uid", "gid".
VALOR_CAMBIAR: El valor que se le va a dar a esa propiedad.

3. Modificar el registro de la base de datos:

ldapmodify -x -D "cn=admin,dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO]" -W -f [ARCHIVO].ldif

4. Comprobar si se hizo el cambio en la base de datos:

slapcat

Eliminar un objeto

Hay 2 formas:

1. Con el comando ldapdelete:

ldapdelete -x -D "cn=admin,dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO]" -W "[DN_COMPLETO]"

DN_COMPLETO: Identificador del objeto dentro de la base de datos.

2. Creando un archivo .ldif:

dn: [DN_COMPLETO]
changetype: delete
ldapmodify -x -D "cn=admin,dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO]" -W -f [ARCHIVO].ldif

Buscar un objeto

1. Con el comando ldapsearch:

ldapsearch -xLLL -b "dc=[NOMBRE_DOMINIO],dc=[TLD_DOMINIO]" [BÚSQUEDA] [ENSEÑAR]

BÚSQUEDA: El objeto que vamos a buscar según un valor. Pej.: "uid=xx", "gid=xx".

ENSEÑAR: No Obligatorio. Son los valores del objeto ya buscado que se va a enseñar. Pej.: "cn", "uid", "gid".


Adrián L. G. P.