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.
Instalamos slapd.
sudo apt install slapd
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
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
- 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.
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
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
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:
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
Y comprobamos que se haya añadido el usuario usuario1 al grupo grupo1:
ldapsearch -x -b dc=fabio,dc=gonzalonazareno,dc=org
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:
Comprobamos el estado.
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
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:
Comprobamos el uid del usuario1:
id usuario1
Finalmente, probaremos a loguearnos con el usuario usuario1, y la contraseña que establecimos anteriormente.
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”
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
Como hicimos anteriormente en el servidor, instalaremos los paquetes libnss-ldap, libpam-ldapd y nscd:
sudo apt install libnss-ldap libpam-ldapd nscd -y
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
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
Ahora probaremos a loguearnos con el usuario usuario1 (Desde el cliente ubuntu):
Como vemos, hemos podido loguearnos y hemos comprobado que estamos en el directorio configurado y podemos hacer operaciones en este.