Configurar un servidor y un cliente de LDAP en Linux CentOS 7

¿Qué es LDAP y para qué sirve?

El servicio de LDAP se utiliza mucho en los sistemas Linux como base de datos centralizadora de usuarios. De esta manera, cuando hay que gestionar muchos usuarios, por ejemplo, los de toda una compañía, no hace falta crearlos en cada uno de los servidores, si no que únicamente se crean en el servidor de LDAP y cada sistema Linux cliente, se conecta al servidor para permitir o no el acceso al sistema.

Por lo tanto, se puede decir que LDAP es una base de datos de usuarios con una serie de atributos ordenados lógicamente. Mejor os dejo el enlace de la Wikipedia donde lo explica muy bien. En el siguiente tutorial vamos a ver cómo configurar LDAP.

Configuración del servidor de LDAP

Voy a instalar el servidor de LDAP en un Linux CentOS 7.5. Lo primero que haremos, será instalar el software con el comando:

yum -y install openldap openldap-clients openldap-servers nss-pam-ldapd authconfig authconfig-gtk migrationtools

Generamos una contraseña LDAP para el usuario root

[[email protected] ~]# slappasswd
New password:
Re-enter new password:
{SSHA}WafqlarNUYNbabKveFBkTrtKHEOlgQVu
[[email protected] ~]#

El texto que aparece lo tendremos que añadir más tarde en el fichero /etc/openldap/slapd.conf.

Copiamos los ficheros de configuración de LDAP por defecto a un directorio personalizado

[[email protected] ~]# mkdir /var/lib/ldap/ldapdavtst
[[email protected] ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/ldapdavtst/DB_CONFIG
[[email protected] ~]# chown -R ldap:ldap /var/lib/ldap

Permitimos la autentificación de usuarios por LDAP

[[email protected] ~]# grep ldap /etc/nsswitch.conf
passwd: files sss ldap
shadow: files sss ldap
group: files sss ldap
[[email protected] ~]#

Desactivamos la configuración de LDAP por defecto

[[email protected] ~]# mv /etc/openldap/slapd.d /etc/openldap/slapd.original
[[email protected] ~]#

Creamos el fichero de configuración del servidor de LDAP

[[email protected] ~]# cat /etc/openldap/slapd.conf
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/pmi.schema

# Allow connections from Openldap 2.x clients
allow bind_v2

database monitor
database bdb

# Process ID file
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args

# LDAP domain name
suffix «dc=ldapdavtst,dc=com»

# The rootdn entry is the Distinguished Name (DN) for a user who is unrestricted by access controls or administrative limit parameters set for operations on the LDAP directory.
rootdn «cn=root,dc=ldapdavtst,dc=com»

# Root password generated by command slappasswd
rootpw {SSHA}WafqlarNUYNbabKveFBkTrtKHEOlgQVu

# Logs
#loglevel -1

directory /var/lib/ldap/ldapdavtst

# Indices a mantener para esta base de datos
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
[[email protected] ~]#

Arrancamos el servidor de LDAP

[[email protected] ~]# systemctl start slapd
[[email protected] ~]# systemctl status slapd
● slapd.service – OpenLDAP Server Daemon
Loaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2018-11-26 10:38:21 CET; 4s ago
Docs: man:slapd
man:slapd-config
man:slapd-hdb
man:slapd-mdb
file:///usr/share/doc/openldap-servers/guide.html
Process: 3571 ExecStart=/usr/sbin/slapd -u ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS (code=exited, status=0/SUCCESS)
Process: 3555 ExecStartPre=/usr/libexec/openldap/check-config.sh (code=exited, status=0/SUCCESS)
Main PID: 3573 (slapd)
Tasks: 2
Memory: 31.0M
CGroup: /system.slice/slapd.service
└─3573 /usr/sbin/slapd -u ldap -h ldapi:/// ldap:///

Nov 26 10:38:20 Centos7 systemd[1]: Starting OpenLDAP Server Daemon…
Nov 26 10:38:20 Centos7 check-config.sh[3555]: Configuration directory ‘/etc/openldap/slapd.d’ does not exist.
Nov 26 10:38:20 Centos7 check-config.sh[3555]: Warning: Usage of a configuration file is obsolete!
Nov 26 10:38:20 Centos7 runuser[3561]: pam_unix(runuser:session): session opened for user ldap by (uid=0)
Nov 26 10:38:21 Centos7 runuser[3561]: pam_unix(runuser:session): session closed for user ldap
Nov 26 10:38:21 Centos7 slapd[3571]: @(#) $OpenLDAP: slapd 2.4.44 (May 16 2018 09:55:53) $
[email protected]:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/…rs/slapd
Nov 26 10:38:21 Centos7 slapd[3573]: slapd starting
Nov 26 10:38:21 Centos7 systemd[1]: Started OpenLDAP Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[[email protected] ~]#

Damos de alta un usuario en el servidor de LDAP

Para poder conectarnos al servidor de LDAP necesitaremos que esté abierto el puerto TCP 389.

Creamos un fichero LDIF con la estructura de datos lógica que entiende LDAP

[[email protected] ~]# grep -v «#» personas.ldif |grep -v ^$
dn: cn=ldapuser2,ou=Personal,dc=ldapdavtst,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
cn: ldapuser2
sn: ldapuser2
uid: ldapuser2
userpassword: passwdtst
mail: [email protected]
description: Es un tio muy majo
loginShell: /bin/bash
uidNumber: 1002
gidNumber: 1002
homeDirectory: /home/ldapuser2
[[email protected] ~]#

Añadimos el usuario

ldapadd -x -w ContraseñaDeLDAP -D «cn=root,dc=ldapdavtst,dc=com» -f personas.ldif

Comprobamos que se ha registrado correctamente:

[[email protected] ~]# ldapsearch -x -b ‘cn=ldapuser2,ou=Personal,dc=ldapdavtst,dc=com’ ‘(objectclass=*)’
# extended LDIF
#
# LDAPv3
# base <cn=ldapuser2,ou=Personal,dc=ldapdavtst,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# ldapuser2, Personal, ldapdavtst.com
dn: cn=ldapuser2,ou=Personal,dc=ldapdavtst,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
cn: ldapuser2
sn: ldapuser2
uid: ldapuser2
userPassword:: cGFzc3dkdHN0
mail: [email protected]
description: Es un tio muy majo
loginShell: /bin/bash
uidNumber: 1002
gidNumber: 1002
homeDirectory: /home/ldapuser2

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1
[[email protected] ~]#

Configuración del cliente de LDAP

Ahora queremos que en cualquier servidor Linux podamos autentificarnos con los usuarios que están dados de alta en el servidor de LDAP. Igual que en el punto anterior, lo primero que tenemos que hacer es instalar el software. De nuevo, utilizo Linux CentOS 7.5.

yum -y install authconfig openldap-clients nss-pam-ldapd

Permitimos la autentificación de usuarios con el servidor de LDAP

[[email protected] etc]# authconfig –enableldap –enableldapauth –ldapserver=ldap://ldapserver:389/ –ldapbasedn=»ou=Personal,dc=ldapdavtst,dc=com» –enablecache –disablefingerprint –kickstart
[[email protected] etc]#

Configuramos el fichero /etc/nsswitch.conf permitiendo LDAP

[[email protected] ~]# grep ldap /etc/nsswitch.conf
passwd: files sss ldap
shadow: files sss ldap
group: files sss ldap
netgroup: files sss ldap
automount: files ldap
[[email protected] ~]#

Habilitamos el servicio local LDAP name service daemon

systemctl enable nscd
systemctl start nscd
systemctl enable autofs
systemctl start autofs

Comprobamos que desde el cliente de LDAP ya podemos obtener información del usuario dado de alta en el servidor de LDAP:

[[email protected] ~]# getent passwd ldapuser2
ldapuser2:*:1002:1002:ldapuser2:/home/ldapuser2:/bin/bash
[[email protected] ~]#

Y, además, podemos hacer login:

[[email protected] ~]# su – ldapuser2
Creating home directory for ldapuser2.
/usr/bin/id: cannot find name for group ID 1002
[[email protected] ~]$ pwd
/home/ldapuser2
[[email protected] ~]$

Si queremos que el directorio HOME del usuario sea un filesystem NFS, configuraremos el servicio autofs de la siguiente manera:

[[email protected] ~]# vim /etc/auto.master
/home /etc/auto.misc
[[email protected] ~]# vim /etc/auto.misc
* -fstype=nfs,rw,nosuid,soft ldapserver:/home/&
[[email protected] ~]# systemctl restart autofs
[[email protected] ~]# systemctl enable autofs
ln -s ‘ /usr/lib/systemd/system/autofs.service’ ‘ /etc/systemd/system/multi-user.target.wants/autofs.service’
[[email protected] ~]# su – ldapuser2
Last login: Sun May 15 04:34:03 IST 2016 on pts/1
[[email protected] ~]#

En los parámetros de NFS del cliente es una buena práctica añadir noatime, ya que con que se actualice en el nodo en el servidor de NFS es suficiente. No hace falta que el cliente pierda el tiempo haciendo lo mismo. De esta manera, mejoraremos algo el rendimiento.

Corrupción de la base de datos de LDAP

He tenido una incidencia con un servidor de VMWare que ha provocado que uno de los servidores se parara de manera abrupta y luego el servicio de LDAP no podía arrancar debido a que se había corrompido su base de datos interna, dando el siguiente error:

[[email protected] ldap]# service ldap start
Checking configuration files for slapd:  bdb_db_open: unclean shutdown detected; attempting recovery.
bdb_db_open: Recovery skipped in read-only mode. Run manual recovery if errors are encountered.
bdb(dc=forja,dc=ctti,dc=local): PANIC: fatal region error detected; run recovery
bdb_db_open: Database cannot be opened, err -30974. Restore from backup!
bdb(dc=forja,dc=ctti,dc=local): DB_ENV->lock_id_free interface requires an environment configured for the locking subsystem
backend_startup_one: bi_db_open failed! (-30974)
slap_startup failed (test would succeed using the -u switch)
                                                           [FAILED]
stale lock files may be present in /aqd/app/ldap           [WARNING]
[[email protected] ldap]#

Recuperar la base de datos de LDAP

Para recuperar la base de datos de LDAP, simplemente hay que ejecutar el comando slapd_db_recover de la siguiente manera:

[[email protected] ldap]# /usr/sbin/slapd_db_recover -v -h /aqd/app/ldap
Finding last valid log LSN: file: 209 offset 1040918
Recovery starting from [169][3058228]
Recovery complete at Fri Mar 22 10:21:10 2019
Maximum transaction ID 8344ce5d Recovery checkpoint [209][1041971]
[[email protected] ldap]# 

Una vez finalizado el proceso, ya podemos arrancar el servicio de LDAP con normalidad:

[[email protected] ldap]# service ldap start
Checking configuration files for slapd:  bdb_db_open: unclean shutdown detected; attempting recovery.
bdb_db_open: Recovery skipped in read-only mode. Run manual recovery if errors are encountered.
config file testing succeeded
                                                           [  OK  ]
Starting slapd:                                            [  OK  ]
[[email protected] ldap]#

Esto me ocurrió en un servidor bastante antiguo con Linux RedHat 5.2.

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

Portátiles

Rebajas
Lenovo S145-15AST - Ordenador portátil 15.6" FullHD (AMD A9-9425, 8GB de RAM, 512GB SSD,...
  • Pantalla de 15,6"fullhd 1920x1080 pixeles
  • Procesador amd a9-9425, dualcore 3.1ghz hasta 3.7ghz, 1m
  • Memoria ram de 8gddr4, 2133mhz
Lenovo S145-15AST - Ordenador portátil 15.6" FullHD (AMD A6-9225, 8GB de RAM, 256GB SSD,...
  • Pantalla de 15,6"FullHD 1920x1080 pixeles
  • Procesador AMD A6, DualCore 3.1GHz hasta 3.7GHz, 1MB
  • Memoria RAM de 8GB DDR4, 2133Mhz
Rebajas
Acer A315-54K - Ordenador portátil de 15.6" HD (Intel Core i3-7020U, 8GB de RAM, 256GB...
  • Pantalla de 15.6", HD (1366x768 pixels)
  • Procesador intel core i3-7020u (2 núcleos, 3MB cache, hasta 2.3 GHz)
  • Memoria RAM de 8GB DDR4, 2133 MHz
Lenovo S145-15AST - Ordenador portátil 15.6" FullHD (AMD A6-9225, 8GB de RAM, 256 SSD,...
  • Pantalla de 15,6"fullhd 1920x1080 pixeles
  • Procesador amd a6-9225, dualcore 2.6ghz hasta 3ghz, 1mb
  • Memoria ram de 8gb ddr4, 2133mhz

Monitores PC

Rebajas
HP 22w - Monitor 21.5" (Full HD, 1920 x 1080 pixeles, tiempo de respuesta de 5 ms, 1 x...
  • Regálale a tu escritorio un toque de elegancia
  • Esta pantalla IPS de 53.61 cm (21,5 pulgadas) en diagonal dispone de 178 ángulos de visualización para ofrecer una experiencia de entretenimiento...
  • Con los puertos VGA y HDMI, esta pantalla hace que conectar tu ordenador portátil o pc de sobremesa sea una tarea sencilla y fluida
Rebajas
Samsung LC24F390FHU - Monitor para PC Desktop de 24'' (1920 x 1080 pixeles, Full HD, HD...
  • Pantalla de 24 pulgadas con una resolución de 1920 x 1080 píxeles
  • Brillo de pantalla: 250 cd / m²
  • Interfaz de montaje VESA 75 x 75 mm
Rebajas
BenQ GW2470HL - Monitor para PC Desktop de 23.8" Full HD (1920x1080, VA, 16:9, 2x HDMI,...
  • Los niveles ajustables de baja luz azul eliminan la luz azul peligrosa y mantienen la luz beneficiosa para una comodidad de visualización prolongada
  • Disfruta de gráficos nítidos con una resolución de 1920 x 1080
  • Minimiza las distracciones y crea una configuración de varios paneles con monitores de bisel estrecho

Discos Externos

Toshiba Canvio Basics, Disco Duro, 1, Negro
  • Disco duro externo de 2.5"
  • Acabado mate
  • Puerto superspeed usb 3.0
WD Elements - Disco duro externo portátil de 2 TB con USB 3.0, color negro
  • Capacidad de almacenamiento de 2 TB
  • Conexión USB 3.0 y compatibilidad con versiones anteriores de dispositivos USB 2.4
  • Compatibilidad: con formato NTFS para Windows 10, Windows 8.1 o Windows 7. Puede requerir reformatear para otros sistemas operativos. El nivel de...
WD Elements - Disco duro externo portátil de 3 TB con USB 3.0, color negro
  • Conexión USB 3.0 y compatibilidad con versiones anteriores de dispositivos USB 2.5
  • Diseñado para ordenadores con sistema operativo Windows, formatable para Mac

También te puede gustar

Tutorial de fail2ban

Tabla de contenidos1 ¿Qué es fail2ban?2 Instalar fail2ban en Linux Centos 73 Configuración de fail2ban3.1 Protección de servicios concretos4 Logs

Leer más »

Deja un comentario

About Author