Saltar a contenido

Instalación y configuración inicial de OpenLDAP

Realiza la instalación y configuración básica de OpenLDAP en thor,utilizando como base el nombre DNS asignado. Deberás crear un usuario llamado prueba y configurar una máquina cliente basada en Debian y Rocky para que pueda validarse en servidor ldap configurado anteriormente con el usuario prueba.


Instalación de LDAP

Comprobamos el FQDN de thor.

Untitled

Instalamos slapd.

sudo apt install slapd

Untitled

Durante la instalación nos pide la contraseña para el usuario administrador de LDAP.

Comprobamos el estado para verificar que todo esta funcionando.

sudo service slapd status

Untitled

El siguiente paso es instalar el paquete que contiene las herramientas con las que vamos a trabajar.

sudo apt install ldap-utils

Una vez instalado vamos a realizar una prueba con el comando ldapsearch introduciendo las credenciales que introducimos en el proceso de instalación (Para realizar la búsqueda como administrador) para buscar el contenido que tenemos en nuestro directorio.

ldapsearch -x -D "cn=admin,dc=fabio,dc=gonzalonazareno,dc=org" -b "dc=fabio,dc=gonzalonazareno,dc=org" -W

Untitled

  • Con el parámetro x indicamos que vamos a utilizar autenticación simple en lugar de SASL.
  • El parámetro D se refiere al enlace del dn.
  • Con el parámetro b especificamos el nombre distinguido (dn) base para la búsqueda.
  • Con el parámetro W indicamos que se va a introducir una contraseña.

En definitiva, el comando ldapsearch abre una conexión a un servidor LDAP, se vincula y realiza una búsqueda utilizando parámetros específicos. En este caso, como no hemos proporcionado ningún filtro, se utiliza el filtro predeterminado (objectClass=)*.

Con esto validamos la correcta instalación de LDAP.

Creación y configuración de Unidades Organizativas(UO), grupos y usuarios.

Para crear usuarios, grupos y unidades organizativas vamos a configurar un fichero .ldif.

El formato LDIF (LDAP Data Interchange Format) es el estándar para ficheros con configuraciones de LDAP. Se trata de un fichero escrito en texto plano, donde agregaremos, modificaremos o eliminaremos el nombre de los registros que serán cargados mediante un comando.

Para comprobar el funcionamiento, vamos a crear dos objetos de tipo "Unidad Organizativa". Para ello, crearemos un fichero .ldif con la siguiente estructura:

dn: ou=Usuarios,dc=fabio,dc=gonzalonazareno,dc=org
objectClass: top
objectClass: organizationalUnit
ou: Personas

dn: ou=Grupos,dc=fabio,dc=gonzalonazareno,dc=org
objectClass: top
objectClass: organizationalUnit
ou: Grupos

Como vemos, hemos definido 2 Unidades Organizativas, "Personas" y "Grupos". Para cargar la configuración de este fichero usamos el comando:

sudo ldapadd -x -D "cn=admin,dc=fabio,dc=gonzalonazareno,dc=org" -f UnidadesOrganizativas.ldif -W
  • Con el parámetro f (file) indicamos el fichero.

Untitled

Para borrar las unidades organizativas podemos ejecutar el siguiete comando:

ldapdelete -x -D 'cn=admin,dc=fabio,dc=gonzalonazareno,dc=org' -W ou=Usuarios,dc=fabio,dc=gonzalonazareno,dc=org
ldapdelete -x -D 'cn=admin,dc=fabio,dc=gonzalonazareno,dc=org' -W ou=Grupos,dc=fabio,dc=gonzalonazareno,dc=org

Vamos a comprobar que los cambios hayan tenido efecto:

sudo ldapsearch -x -b dc=fabio,dc=gonzalonazareno,dc=org

Untitled

Además de las unidades organizativas, vamos a crear un grupo llamado grupo1, y lo añadiremos a la unidad organizartiva Grupos:

dn: cn=grupo1,ou=Grupos,dc=fabio,dc=gonzalonazareno,dc=org
objectClass: top
objectClass: posixGroup
gidNumber: 2001
cn: grupo1

Una vez definamos el fichero grupos.ldif, cargamos la configuración:

ldapadd -x -D 'cn=admin,dc=fabio,dc=gonzalonazareno,dc=org' -W -f grupos.ldif

Untitled

Si quisieramos borrarlo, usamos el comando:

ldapdelete -x -D 'cn=admin,dc=fabio,dc=gonzalonazareno,dc=org' -W cn=grupo1,ou=Grupos,dc=fabio,dc=gonzalonazareno,dc=org

Ahora vamos a crear una contraseña cifrada para un usuario que crearemos posteriormente. Para cifrar la contraseña haremos uso del comando slappasswd:

Untitled

Lo que debemos de hacer es copiar la contraseña obtenida en el campo userPassword, a la hora de crear el usuario.

Para definir el usuario (En este caso se llamará usuario1) crearemos el fichero usuarios.ldif y copiaremos el siguiente contenido:

dn: uid=usuario1,ou=Usuarios,dc=fabio,dc=gonzalonazareno,dc=org
objectClass: top
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: person
cn: grupo1
uid: usuario1
uidNumber: 2001
gidNumber: 2001
homeDirectory: /home/usuario1
loginShell: /bin/bash
userPassword: {SSHA}79yxgRi/iCZZIY7lh5i3adTs3wvsPySo
sn: usuario1
mail: usuario1@gmail.com
givenName: usuario1

Cargamos la configuración:

ldapadd -x -D 'cn=admin,dc=fabio,dc=gonzalonazareno,dc=org' -W -f usuarios.ldif

Untitled

Y comprobamos que se haya añadido el usuario usuario1 al grupo grupo1:

ldapsearch -x -b dc=fabio,dc=gonzalonazareno,dc=org

Untitled

Si quisieramos borrar el usuario usuario1, usamos:

sudo ldapdelete -x -D 'cn=admin,dc=fabio,dc=gonzalonazareno,dc=org' -W uid=usuario1,ou=Usuarios,dc=fabio,dc=gonzalonazareno,dc=org

Configuración NFS en el servidor

En un principio el usuario no tendrá acceso a su cuenta, ya que hemos definido que su directorio home será /home/usuario1 pero este no existe. Por lo que vamos a crearlo, además le aplicaremos como propietario y grupo el uid y gid que hemos definido anteriormente (Pertenecientes al usuario prueba):

mkdir /home/usuario1
chown 2001:2001 /home/usuario1

Una vez hecho esto, pasaremos a configurar el servidor NFS, para exportar el directorio /home del usuario usuario1. Para ello editamos el fichero /etc/exports y añadimos la siguiente línea:

Untitled

Comprobamos el estado.

Untitled

Instalación de Name Service Switch (NSS), Pluggable Authentication Module (PAM) y Name Service Cache Daemon (NSCD) en el servidor

En el servidor LDAP, necesitamos instalar una serie de paquetes, que nos permitirán resolver nombres de usuarios (UID), grupos (GID), identificación, consultar información referente a un directorio o cachear resoluciones de nombres. Instalaremos los paquetes necesarios mediante el comando:

sudo apt install libpam-ldapd nscd libnss-ldap

Untitled

Untitled

Untitled

Untitled

En este caso, las demás pantallas de configuración las dejaremos por defecto. Si queremos restablecer esta configuración, usamos:

dpkg-reconfigure libnss-ldap

Una vez instalada la paquetería necesaria vamos a modificar el contenido del fichero /etc/nsswitch.conf. En este fichero, modificaremos las líneas referentes a passwd,group,shadow y gshadow. De la siguiente forma:

Untitled

Comprobamos el uid del usuario1:

id usuario1

Untitled

Finalmente, probaremos a loguearnos con el usuario usuario1, y la contraseña que establecimos anteriormente.

Untitled

Configuración del cliente (loki)

Lo primero que haremos será instalar el paquete que contiene las herramientas de ldap:

apt install ldap-utils

Lo siguiente que vamos a hacer será, modificar el fichero de configuración para el cliente, añadiendo las dos siguientes líneas:

BASE dc=fabio,dc=gonzalonazareno,dc=org
URI ldap://thor.fabio.gonzalonazareno.org

Cuando terminemos de modificar el fichero de configuración, comprobaremos que se hayan aplicado los cambios, con el comando:

sudo ldapsearch -x -b "dc=fabio,dc=gonzalonazareno,dc=org”

Untitled

Como vemos, podemos realizar una búsqueda de todos los objetos que hemos creado anteriormente en el servidor (Desde el cliente Ubuntu).

Para verificar que podamos autenticarnos, ejecutamos el siguiente comando (Posteriormente introducimos la contraseña del usuario usuario1):

ldapwhoami -x -D "uid=usuario1,ou=Usuarios,dc=fabio,dc=gonzalonazareno,dc=org" -W

Untitled

Como hicimos anteriormente en el servidor, instalaremos los paquetes libnss-ldap, libpam-ldapd y nscd:

sudo apt install libnss-ldap libpam-ldapd nscd -y

Untitled

Untitled

Untitled

Lo siguiente será configurar el fichero /etc/nsswitch.conf

# /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 ldap
gshadow:        files ldap

hosts:          files dns
networks:       files

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

netgroup:       nis

Una vez configurado, reinciamos el servicio nscd.

systemctl restart nscd

Untitled

Con esto ya podremos logearnos desde el cliente, con el usuario usuario1, pero no podremos acceder a su directorio personal. Para ello vamos a crear una unidad systemd, con la cual montaremos el directorio mediante NFS.

Por lo que antes que nada crearemos el directorio donde montaremos el home del usuario prueba y le aplicamos el propietario:

sudo mkdir /home/usuario1
sudo chown 2001:2001 /home/usuario1

Instalaremos el paquete que contiene el cliente NFS:

sudo apt install nfs-common -y

Iniciamos y habilitamos el servicio:

systemctl start nfs-client.target & systemctl enable nfs-client.target

Creamos la unidad nfs:

sudo nano /etc/systemd/system/home-usuario1.mount

Y añadimos el siguiente contenido:

[Unit]
Description=Montaje NFS (/home/usuario1)
Requires=network-online.target
After=network-online.target
[Mount]
What=192.168.0.2:/home/usuario1
Where=/home/usuario1
Options=_netdev,auto
Type=nfs
[Install]
WantedBy=multi-user.target

Recargamos el demonio systemd para que reconozca el nuevo fichero con extensión .mount:

sudo systemctl daemon-reload

Iniciamos y habilitamos la unidad:

sudo systemctl start home-usuario1.mount
sudo systemctl enable home-usuario1.mount

Comprobamos el estado con:

sudo systemctl status home-usuario1.mount

Untitled

Ahora probaremos a loguearnos con el usuario usuario1 (Desde el cliente ubuntu):

Untitled

Como vemos, hemos podido loguearnos y hemos comprobado que estamos en el directorio configurado y podemos hacer operaciones en este.