Instalación de openldap en Debian 12
¿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.