PRACTICA: Infraestructura LDAP
Última actualización
Última actualización
Para esta práctica realizaremos el siguiente esquema:
Y los requerimientos del proyecto son los siguientes:
ENTREGA 1
ENTREGA 2
ENTREGA 3
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
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:
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:
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.
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 usar sudo
con restricciones).
/var/log/
para ver logs.
Sin acceso a cambiar configuración del sistema o LDAP.
Comando para crear localmente:
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:
Y limitar sus sudoers si se desea que ejecute algunos comandos:
Con algo como:
Una vez hecho esto ya puedes enseñar la práctica.
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
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.
Primero, necesitas instalar los paquetes necesarios para la autenticación LDAP. Abre una terminal y ejecuta:
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
):
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:
Añade o modifica las siguientes líneas según la configuración de tu servidor LDAP:
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
:
Asegúrate de que las siguientes líneas estén configuradas correctamente:
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:
Modifica las líneas que comienzan con passwd
, group
y shadow
para que se vean así:
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:
Asegúrate de que estén activadas:
Unix authentication
LDAP Authentication
Create home directory on login (marcalo, es opcional pero muy útil)
Reinicia los servicios nslcd
y nscd
para aplicar los cambios:
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:
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.
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.
La idea de esta parte es recrear lo que ya habéis estado trabajando en local en un XAMPP en un servidor ubuntu.
MySQL
PHP
phpmyadmin
Apache2
Virtualhost de apache2
Crea una carpeta dentro del servidor ubuntu que se llame /backups que contenga las siguientes subcarpetas:
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 .
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.
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".
Aquí es donde harás la magia de RAID.
Elige: "Custom Storage Layout"
Verás una lista de tus discos:
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:
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
"
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.
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.
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:
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".
Cuando ejecutas mdadm -D
, obtienes un informe como este:
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!
A) Netdata (rápido y visual):
B) Zabbix:
Instalar Zabbix Agent en el servidor principal.
Zabbix Server en servidor de respaldo.
Acceder desde navegador web.
C) Prometheus + Grafana:
Instalar Prometheus:
Instalar Grafana desde su repo oficial.
Configurar Prometheus para monitorizar node_exporter
desde el servidor LDAP.
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
1.1. .
1.2.
1.3.
2.1.
2.2.
2.3.
2.4.
2.4.
2.5.
3.1.
3.2.
3.3.
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 .
La instalación y toda la información sobre usuarios la puedes encontrar en la .
Dicho esto, el tutorial lo encontrarás .
Todo lo relativo a estos servicios puedes encontrarlo en lapero mi recomendación es ir instalando y comprobando según este orden:
La información sobre el funcionamiento de cron
la tienes .
La información sobre el funcionamiento de scp
la tienes .