Instalación de openldap en Debian 12

openldap

¿Que es openldap?

OpenLDAP es una herramienta de software libre que implementa el protocolo LDAP (Lightweight Directory Access Protocol) y permite a los usuarios autenticarse en un servidor centralizado.

Requisitos

  • Sistema Debian 12 actualizado.
  • Privilegios de root o sudo.
  • Acceso a internet.

Instalacion servidor

Para instalar openldap en Debian 12, ejecutamos el siguiente comando:

Durante la instalación nos pedirá que ingresemos una contraseña para el administrador de la base de datos, la ingresamos y confirmamos.

root@ldap:~# apt install slapd ldap-utils -y

Configuración servidor

Para realizar la configuración inicial de openldap, ejecutamos el siguiente comando:

root@ldap:~# dpkg-reconfigure slapd

Nos pedirá que introduzcamos un nombre de dominio, lo ingresamos y confirmamos.

Para agregar un usuario, creamos un archivo llamado user.ldif con el siguiente contenido:

root@ldap:~# nano user.ldif
dn: uid=user,dc=example,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: User Name
uid: user
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/user
loginShell: /bin/bash
gecos: User Name
userPassword: {SSHA}password_hash

El campo userPassword debe contener la contraseña encriptada, para generarla utilizamos el siguiente comando:

root@ldap:~# slappasswd

New password:
Re-enter new password:
{SSHA}nozlspIlP1HOz0mYCBFtyQ9qiS7uh1p8

Para agregar el usuario, ejecutamos el siguiente comando:

root@ldap:~# ldapadd -x -D "cn=admin,dc=example,dc=local" -W -f user.ldif

Para verificar que el usuario se haya agregado correctamente, ejecutamos el siguiente comando:

root@ldap:~# ldapsearch -x -LLL -H ldap:/// -b "dc=example,dc=local" "(uid=user)"

dn: uid=user,dc=example,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: User Name
uid: user
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/user
loginShell: /bin/bash
gecos: User Name

Instalación cliente

Para instalar los paquetes necesarios en el cliente, ejecutamos el siguiente comando:

root@ldap-client:~# apt install ldap-utils libpam-ldap -y

Durante la instalación nos pedirá que ingresemos la dirección IP del servidor, la base de busqueda en el servidor y tenemos que seleccionar los servicios que queremos utilizar con LDAP. En este caso seleccionamos passwd, group y shadow.

Configuración cliente

Para comprobar que el instalador haya configurado correctamente el archivo /etc/nsswitch.conf, ejecutamos el siguiente comando:

root@ldap-client:~# nano /etc/nsswitch.conf

Si la configuración es correcta, el archivo debe contener las lineas passwd, group y shadow con ldap.

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         files systemd ldap
group:          files systemd ldap
shadow:         files systemd ldap
gshadow:        files systemd

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Reiniciamos el servicio nscd, ejecutamos el siguiente comando:

root@ldap-client:~# systemctl restart nscd

Para comprobar que el cliente se pueda conectar al servidor, ejecutamos la siguiente consulta:

root@ldap-client:~# ldapsearch -x -H ldap://192.168.50.25 -b "dc=example,dc=local" -LLL

dn: dc=example,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: example.local
dc: example

dn: uid=user,dc=example,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: User Name
uid: user
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/user
loginShell: /bin/bash
gecos: User Name

tamien podemos buscar usuarios de ldap con el siguiente comando:

root@ldap-client:~# getent passwd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-network:x:998:998:systemd Network Management:/:/usr/sbin/nologin
systemd-timesync:x:997:997:systemd Time Synchronization:/:/usr/sbin/nologin
messagebus:x:100:107::/nonexistent:/usr/sbin/nologin
usuario:x:1000:1000:usuario,,,:/home/usuario:/bin/bash
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
nslcd:x:102:109:nslcd name service LDAP connection daemon,,,:/run/nslcd:/usr/sbin/nologin
user:x:10001:10001:User Name:/home/user:/bin/bash

Prueba de autenticación

Para probar la autenticación, nos conectamos con el usuario user al cliente, en mi caso será por ssh desde mi máquina windows.

PS C:\Users\ringedbeak> ssh user@192.168.50.13

user@192.168.50.13's password:
Linux ldap-client 6.1.0-13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.55-1 (2023-09-29) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Wed Nov  8 18:26:22 2023 from 192.168.50.49
user@ldap-client:~$

Como podemos ver, nos hemos conectado correctamente con el usuario user al cliente sin problemas.

Para eliminar el usuario de ldap, ejecutamos el siguiente comando:

root@ldap:~# ldapdelete -x -D "cn=admin,dc=example,dc=local" -W "uid=user,dc=example,dc=local"

Con esto hemos terminado la instalación y configuración de openldap en Debian 12.