PRACTICA: Infraestructura LDAP
Introducción
Para esta práctica realizaremos el siguiente esquema:

Índice de requisitos del proyecto
Y los requerimientos del proyecto son los siguientes:
ENTREGA 1
ENTREGA 2
ENTREGA 3
ENTREGA 1
1.1. Creación de dos máquinas: un servidor ubuntu y un cliente ubuntu desktop.
A estas alturas no hace falta que te explique como instalar una máquina ubuntu en virtualbox, pero por si acaso te lías con los pasos, en la documentación oficial tienes una guía muy ilustrativa.
1.2. Esquema organizativo de la empresa
Llegados a este punto, deberíais saber de que es vuestra empresa, que servicios ofrece, que departamentos contiene y que trabajadores, esto nos ayudará a crear un esquema de usuarios y requerimientos de infraestructura para nuestros empleados.
Deberás:
Crear 3 departamentos mínimo, por ejemplo: sistemas, redes y administración
Crear 4 usuarios por departamento, en el departamento de sistemas deben haber dos perfiles sí o sí que ya te he dejado en la tabla para que los rellenes.
Trata de completar una tabla como esta que en la segunda entrega trasladaremos al servicio de directorio de OpenLDAP:
Ejemplo
Sánchez Sánchez
esanchez
1501
administ
1001
e.sanchez@empresa.com
111111111
Administración
Secretario
/home/ejemplez
-
?
?
?
1550
adminldap
1010
?
?
Sistemas
Administrador de sistemas
/home/?
/bin/bash
?
?
?
1560
backupers
1020
?
?
Sistemas
Soporte sistemas
/home/?
bin/bash
Donde:
Nombre
Nombre de la persona
Apellidos
Apellidos de la persona
UID
Nombre corto del usuario (ej: esanchez) → se usará como uid
en LDAP
UID Number
Número único por cada usuario (ej: 1501, 1502...)
Grupo Primario
Grupo LDAP al que pertenece (ej: sistemas
, administ
, admin
)
GID Number
ID del grupo, uno por cada grupo (ej: 1001, 1002...)
Correo electrónico
Email empresarial (ej: jlopez@empresa.com)
Teléfono
Número de contacto interno
Departamento
Departamento simulado (soporte, ventas, sistemas...)
Rol o Cargo
Cargo dentro del equipo (coordinador, técnico, etc.)
Home Directory
Ruta que será su carpeta personal (ej: /home/jlopez
)
Shell
/bin/bash
, /bin/sh
... según lo que se quiera permitir
1.3. Creación de usuarios locales con distintos privilegios en servidor ubuntu.
A partir de los dos usuarios que te he dejado con requisitos especificos, deberás crear dos usuarios locales que también estarán en dominio ldap con diferentes privilegios:
👍 Usuario administrador de ldap
Rol en la práctica:
Puede modificar entradas LDAP.
Gestiona servicios como
slapd
,phpldapadmin
, etc.Accede a los backups y tareas de mantenimiento del sistema.
Privilegios sugeridos:
Usuario local creado con permisos de sudo limitados a tareas LDAP y administración del sistema.
Acceso completo a
/etc/ldap/
,/var/lib/ldap/
y scripts de mantenimiento.
Comando para crear localmente:
sudo adduser adminldap sudo usermod -aG sudo adminldap
Este comando añade al usuario adminldap al grupo sudo, lo cual le otorga permisos para ejecutar comandos como root usando sudo, sin afectar sus otros grupos actuales.
🎒 Usuario de backup
Ten en cuenta que este usuario no lo vas a usar hasta la entrega 3.
Rol en la práctica:
Ejecuta y supervisa los scripts de backup (cron + scp).
No gestiona LDAP ni los servicios del sistema directamente.
Privilegios sugeridos:
Usuario local con permisos sobre
/backup/
y acceso de lectura a:/etc/passwd
,/etc/group
,/etc/shadow
(si se quiere simular realismo, puede usarsudo
con restricciones)./var/log/
para ver logs.
Sin acceso a cambiar configuración del sistema o LDAP.
Comando para crear localmente:
sudo adduser backuptech
Permisos sugeridos: Crear un grupo específico para backups, cambia la propiedad del directorio
/backup/
para que sea propiedad de root y tenga el grupo backupers y establece permisos para que solo el propietario (root) y los miembros del grupo backupers puedan leer, escribir y ejecutar dentro de/backup/
, mientras que otros usuarios no tendrán acceso. Añadirlo:sudo groupadd backupers sudo usermod -aG backupers backuptech sudo chown -R root:backupers /backup/ sudo chmod -R 770 /backup/
Y limitar sus sudoers si se desea que ejecute algunos comandos:
sudo visudo -f /etc/sudoers.d/backuptech
Con algo como:
backuptech ALL=(ALL) NOPASSWD: /usr/bin/scp, /usr/bin/slapcat, /usr/bin/mysqldump
Una vez hecho esto ya puedes enseñar la práctica.
ENTREGA 2
2.1. Instalación de ldap y configuración de usuario
La instalación y toda la información sobre usuarios la puedes encontrar en la guía anterior.
Recuerda que los parámetros recomendados son:
Nombre de la organización:
nombrempresa
Nombre del dominio:
nombrempresa.local
FQDN:
ldapserver.nombrempresa.local
Contraseña del administrador LDAP: una sencilla, usala para todo ya que es una simulación.
Por lo tanto tu base DN será: dc=nombrempresa,dc=local
2.2. Autenticación de usuarios ldap en cliente
Para conectar un usuario de un servidor LDAP a una máquina cliente de Ubuntu Desktop, necesitas configurar el cliente para que autentique usuarios a través de LDAP.
Requisitos:
El cliente debe tener en el archivo hosts el dominio del servidor:
ldapserver.nombrempresa.local
Asegurate que no haya ningún problema de red y ambos servidores se hagan ping entre IPs y dominios.
Paso 1: Instalar los paquetes necesarios
Primero, necesitas instalar los paquetes necesarios para la autenticación LDAP. Abre una terminal y ejecuta:
sudo apt update
sudo apt install ldap-auth-client nslcd
sudo apt install libnss-ldap libpam-ldap ldap-utils nslcd -y
Durante la instalación, te hará preguntas de configuración, algunas repetidas:
URI del servidor LDAP: Ejemplo:
ldap://ldapserver.ifp.local/
DN base: Ejemplo:
dc=ifp,dc=local
LDAPI: cuando te lo pide, deberás modificarlo a la URI otra vez. Ejemplo:
ldap://ldapserver.ifp.local/
Versión LDAP: Usa la 3
Usar la contraseña local: Dile que sí
Usar login para la base de datos: Dile que no
Cuenta LDAP para búsquedas (opcional): Si no tienes anon bind, puedes usar algo como:
cn=admin,dc=ifp,dc=local
Password de búsqueda: Si pusiste el admin, te pedirá su contraseña
Servicios accesibles: Marca los que aparecen en la imagen para que el sistema local combine su base de datos con la del servidor, el resto no nos interesa (y siempre se puede cambiar en el archivo
/etc/nsswitch.conf
):

Paso 2: Configurar ldap.conf
ldap.conf
Edita el archivo /etc/ldap/ldap.conf
para configurar la conexión a tu servidor LDAP. Abre el archivo con un editor de texto, por ejemplo:
sudo nano /etc/ldap/ldap.conf
Añade o modifica las siguientes líneas según la configuración de tu servidor LDAP:
BASE dc=ifp,dc=local
URI ldap://ldapserver.ifp.local/
Paso 3: Configurar nslcd.conf
nslcd.conf
NSLCD es un demonio que proporciona una interfaz entre las aplicaciones que utilizan las bibliotecas de servicios de nombres (como
libc
) y un servidor LDAP. Su función principal es consultar y almacenar en caché la información de usuarios, grupos y otros datos desde un servidor LDAP:
Funcionalidad: NSLCD se encarga de realizar consultas LDAP en nombre de las aplicaciones que necesitan información de usuarios y grupos. Esto incluye autenticación y autorización.
Ventajas: Mejora el rendimiento al almacenar en caché las consultas LDAP, lo que reduce la carga en el servidor LDAP y acelera las respuestas.
Edita el archivo /etc/nslcd.conf
para configurar el servicio nslcd
:
sudo nano /etc/nslcd.conf
Asegúrate de que las siguientes líneas estén configuradas correctamente:
uid nslcd
gid nslcd
uri ldap://ldapserver.ifp.local/
base dc=ifp,dc=local
binddn cn=admin,dc=ifp,dc=local
bindpw TU_CONTRASEÑA
Paso 4: Configurar nsswitch.conf
nsswitch.conf
NSS es un mecanismo en sistemas Unix y Linux que permite a las aplicaciones obtener información de usuarios, grupos, hosts y otros datos desde varias fuentes.
Funcionalidad: NSS determina el orden en el que se consultan las diferentes fuentes de información. Por ejemplo, como en nuestra práctica, puede configurarse para consultar primero los archivos locales (
/etc/passwd
,/etc/group
) y luego un servidor LDAP.Configuración: En
/etc/nsswitch.conf
, puedes especificar las fuentes de información para diferentes tipos de datos.
Edita el archivo /etc/nsswitch.conf
para asegurarte que se ha habilitado la autenticación LDAP:
sudo nano /etc/nsswitch.conf
Modifica las líneas que comienzan con passwd
, group
y shadow
para que se vean así:
passwd: files systemd ldap
group: files systemd ldap
shadow: files ldap
Paso 5: Configurar PAM para permitir login LDAP
PAM es un framework que permite a los administradores de sistemas configurar cómo se autentican los usuarios y cómo se gestionan las sesiones en un sistema. PAM utiliza módulos que se pueden combinar para proporcionar diferentes métodos de autenticación y autorización.
Este paso es automático en versiones modernas, pero para confirmar y seleccionar:
sudo pam-auth-update
Asegúrate de que estén activadas:
Unix authentication
LDAP Authentication
Create home directory on login (marcalo, es opcional pero muy útil)

Paso 6: Reiniciar los servicios
Reinicia los servicios nslcd
y nscd
para aplicar los cambios:
sudo systemctl restart nslcd
sudo systemctl restart nscd
Paso 7: Probar la configuración
Ahora deberías poder autenticar usuarios desde tu servidor LDAP. Prueba iniciar sesión en tu máquina Ubuntu Desktop con un usuario que exista en tu servidor LDAP:
Desde terminal:
su alex
Gráficamente:
Cierra sesión desde la pestaña de arriba a la derecha, dale a "¿No está en la lista" y pon las credenciales de uno de los usuarios posix.

Si todo está configurado correctamente, el usuario LDAP debería poder iniciar sesión en la máquina cliente de Ubuntu Desktop.
2.4. Compartición de una carpeta NFS a través de un grupo
Para poder realizar esta práctica debemos revisar, ¿Qué necesitamos tener listo primero?
✅ Servidor LDAP configurado y funcionando.
✅ Grupo LDAP creado (por ejemplo, grupo_nfs
).
✅ Usuarios LDAP que formen parte de ese grupo.
✅ Un servidor NFS instalado y funcionando.
✅ Un cliente que pueda montar ese recurso.
Dicho esto, el tutorial lo encontrarás aquí.
2.5. Instalar servicios web en servidor
La idea de esta parte es recrear lo que ya habéis estado trabajando en local en un XAMPP en un servidor ubuntu.
Todo lo relativo a estos servicios puedes encontrarlo en la siguiente guía pero mi recomendación es ir instalando y comprobando según este orden:
MySQL
PHP
phpmyadmin
Apache2
Virtualhost de apache2

2.6. Copia de seguridad comprimida
Crea una carpeta dentro del servidor ubuntu que se llame /backups que contenga las siguientes subcarpetas:
/backup/
├── system.tar.gz
├── ldap.tar.gz
├── apache.tar.gz
├── mysql.tar.gz
└── logs.tar.gz
Ahora vas a tener que hacer copias incrementales de los siguientes archivos y guardarlos como tar.gz en la carpeta correspondiente, te he puesto anotaciones de como obtener algunos archivos especiales, el resto usa el comando tar -czf $DEST/ARCHIVO.tar.gz -C $CARPETAORIGEN .
/sistema:
/etc/passwd
/etc/group
/etc/shadow
/backup/
/openldap:
ldap_backup.ldif -> la copia la obtienes con: slapcat -l /backup/ldap_backup.ldif
/etc/ldap/
/apache:
/etc/apache2/
/var/www/
/mysql:
mysqldump -u root -p --all-databases > /backup/mysql_backup.sql
/logs:
/var/log/auth.log
/var/log/apache2/access.log
/var/log/apache2/error.log
/var/log/syslog
ENTREGA 3
3.1. Creación de un servidor ubuntu con RAID1
El tipo de matriz RAID 1 se implementa mediante la duplicación de datos en todos los discos disponibles. Cada disco de una matriz RAID 1 obtiene una copia completa de los datos, lo que proporciona redundancia en caso de fallo del dispositivo.
Beneficio principal: redundancia entre dos dispositivos de almacenamiento.
Cosas a tener en cuenta: Dado que se mantienen dos copias de los datos, solo se podrá utilizar la mitad del espacio en disco.
✅ REQUISITOS:
ISO de Ubuntu Server (recomiendo 22.04 LTS)
VM con dos discos duros de 25GB cada uno (ej:
/dev/sda
y/dev/sdb
), es importante que sean de igual tamaño y recuerda no usar discos con datos importantes, se formatearán
Vamos primero a crear el RAID1 desde cero en la instalación del servidor por lo que primero hacemos la instalación de forma normal hasta llegar a la parte "Partition disks".
Paso 1.
Aquí es donde harás la magia de RAID.
Elige: "Custom Storage Layout"
Verás una lista de tus discos:

Paso 2.
Ahora seleccionaremos cada uno de los discos y al dar enter se nos desplegarán las opciones, en ambos casos seleccionaremos usarlos como boot, de esta forma nos aseguraremos que ambos discos puedan ejecutar el sistema de forma independiente:

Paso 3.
Ahora abre el menú desplegable del espacio libre y selecciona la opción de añadir partición GPT. Una vez se abra la ventana deberás dejar la opción de tamaño por defecto y la partición sin formato.

Al terminar deberia aparecer el espacio disponible como "partition 2, new, unused
"
Paso 4.
Ahora si, vamos a la sección de más abajo de creación de software RAID (md), desde aquí veremos todas las opciones disponibles, a partir de aquí es bastante intuitivo.
Ponle un nombre al RAID1
Selecciona el nivel como 1 (fijate que desde aquí puedes crear el resto por si te interesa).
Selecciona las particiones creadas.

Paso 5.
Ahora deberías ver solamente un "dispositivo" que es el raid que hemos creado, desde aquí debes revisar lo que está creado (opción "format
" dentro del dispositivo) para montar la raíz del sistema o bien por si te interesa ponerle otro formato que no sea el por defecto o crear un directorio distinto del raíz. De forma que te quede así:

Sigue con la instalación, no deberias tener más problemas, si es así, vuelve atrças y vuelve a seguir los pasos.
Paso 6.
Para comprobar si el proceso ha funcionado accede a tu máquina y lista los discos con lsblk
, verás algo así:

Ahora para poder revisar nuestro RAID podemos usar:
sudo mdadm -D /dev/md127
Desde aquí podemos ver información de nuestro RAID creado, aquí te explico cada parte y lo que hace:
mdadm
: herramienta para administrar dispositivos RAID (software RAID en Linux).-D
o--detail
: muestra información detallada sobre un array RAID existente./dev/speculum
: es el nombre del dispositivo RAID que quieres inspeccionar. Normalmente verías algo como/dev/md0
,/dev/md1
, etc. — en este caso, parece que has llamado al RAID "speculum".
¿Qué tipo de información muestra?
Cuando ejecutas mdadm -D
, obtienes un informe como este:
/dev/md0:
Version : 1.2
Creation Time : 2024-04-10
Raid Level : raid1
Array Size : 976630464 (931.51 GiB)
Used Dev Size : 976630464 (931.51 GiB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Consistency Policy : resync
Name : ubuntu:0 (local to host ubuntu)
UUID : 7ac4f2e4:89e6c0da:3f540000:1a0c0000
Events : 27
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
Donde:
Raid Level
Nivel RAID usado (ej. raid1
, raid5
, etc.)
Array Size
Tamaño total del RAID
Used Dev Size
Tamaño usado de cada disco
Raid Devices
Número de dispositivos requeridos
Total Devices
Número total de dispositivos en el RAID
State
Estado general del RAID (ej. clean
, degraded
)
Active Devices
Discos funcionando activamente
Failed Devices
Discos que han fallado
Spare Devices
Discos de reemplazo disponibles
UUID
Identificador único del RAID
Lista de discos
Cada disco usado, su posición, estado (active sync
, spare
, etc.)
Listo! Ya tienes tu sistema RAID1 en tu servidor ubuntu para redundancia, espero que no tengas ningún fallo ahora!
3.2. Implementar un servicio de monitorización del servidor
Como servicio de monitorización te recomiendo una solución eficiente e inteligente, 1Panel que tiene integración con linux, docker y cron, entre otras cosas.
Alternativamente, para subir nota puedes mirar de instalar:
Prometheus + Grafana + Loki
3.3. Script de copias de seguridad con scp
Por último, se te pide crear un script en el servidor ubuntu que copie el contenido de la carpeta /backup de la entrega anterior una vez a la semana con cron y lo envíe por scp al servidor ubuntu de backup.
La copia esta vez será una copia de seguridad completa semanal que deberá guardarse con el nombre: serverbkp_DDMMAAAA.tar.gz
Última actualización