8.6 KiB
title | date | draft |
---|---|---|
Introducción a OpenLDAP | 2023-01-25T13:47:32+01:00 | false |
El protocolo LDAP es muy utilizado actualmente por empresa que apuestan por el software libre al utilizar distribuciones de Linux para ejercer las funciones propias de un directorio activo en el que se gestionarán las credenciales y permisos de los trabajadores y estaciones de trabajo en redes LAN corporativas en conexiones cliente/servidor.
Realiza la instalación y configuración básica de OpenLDAP en alfa,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.
Servidor
Instalación de OpenLDAP
Instalaremos OpenLDAP en el servidor alfa, para ello ejecutaremos los siguientes comandos:
apt update
apt install slapd
Durante la instalación nos pedirá que introduzcamos la contraseña de administrador del directorio:
Una vez instalado con el comando netstat -tulpn
comprobaremos que el servicio está escuchando en el puerto 389:
Ahora, utilizando el binario ldapsearch
incluido en el paquete ldap-utils
podemos buscar sobre el directorio:
ldapsearch -x -b "dc=roberto,dc=gonzalonazareno,dc=org"
Configuración de OpenLDAP
Para lograr una mejor estructura, la información suele organizarse en forma de ramas de las que cuelgan objetos similares (por ejemplo, una rama para usuarios y otra para grupos). Organizar de esta manera la estructura nos aporta también una mayor agilidad en las búsquedas, así como una gestión más eficiente sobre los permisos. Cada rama se denomina organizational unit (OU) y cada objeto que cuelga de ella se denomina entry.
ara definir dichos objetos, haremos uso de un fichero con extensión .ldif
, en este caso he creado el fichero unidades.ldif
con el siguiente contenido:
dn: ou=Personas,dc=roberto,dc=gonzalonazareno,dc=org
objectClass: organizationalUnit
ou: Personas
dn: ou=Grupos,dc=roberto,dc=gonzalonazareno,dc=org
objectClass: organizationalUnit
ou: Grupos
Para activar el fichero de configuración, ejecutaremos el siguiente comando:
ldapadd -x -D "cn=admin,dc=roberto,dc=gonzalonazareno,dc=org" -f unidades.ldif -W
Ahora, podemos comprobar que se ha creado las ramas Personas
y Grupos
:
ldapsearch -x -b "dc=roberto,dc=gonzalonazareno,dc=org"
Podemos borrar los objetos creados con el comando ldapdelete
:
ldapdelete -x -D 'cn=admin,dc=roberto,dc=gonzalonazareno,dc=org' -W ou=Personas,dc=roberto,dc=gonzalonazareno,dc=org
ldapdelete -x -D 'cn=admin,dc=roberto,dc=gonzalonazareno,dc=org' -W ou=Grupos,dc=roberto,dc=gonzalonazareno,dc=org
Ahora vamos a crear un grupo llamado prueba en el fichero grupos.ldif
:
dn: cn=prueba,ou=Grupos,dc=roberto,dc=gonzalonazareno,dc=org
objectClass: posixGroup
gidNumber: 2001
cn: prueba
Para activar el fichero de configuración, ejecutaremos el siguiente comando:
ldapadd -x -D 'cn=admin,dc=roberto,dc=gonzalonazareno,dc=org' -W -f grupos.ldif
Ejecutando el comando ldapsearch
podemos comprobar que se ha creado el grupo:
Creación del usuario
Ahora vamos a crear un usuario llamado prueba. Antes de crearlo, vamos a ejecutar el comando slappasswd
para crear una contraseña cifrada para el usuario:
Ahora, vamos a crear el usuario en el fichero usuarios.ldif
:
dn: uid=prueba,ou=Personas,dc=roberto,dc=gonzalonazareno,dc=org
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: person
cn: prueba
uid: prueba
uidNumber: 2001
gidNumber: 2001
homeDirectory: /nfs/prueba
loginShell: /bin/bash
userPassword: {SSHA}sDPbVb9gQ37YaNSg5nPyIe776dmlU2bq
sn: prueba
mail: prueba@gmail.com
givenName: prueba
Para activar el fichero de configuración, ejecutaremos el siguiente comando:
ldapadd -x -D 'cn=admin,dc=roberto,dc=gonzalonazareno,dc=org' -W -f usuarios.ldif
Ejecutando el comando ldapsearch
podemos comprobar que se ha creado el usuario:
Configuración de NFS
Ahora vamos a configurar el servidor NFS para que pueda compartir el directorio /nfs
con los clientes.
Primero vamos a crear el directorio /nfs/prueba
y le vamos a dar permisos al usuario prueba
:
mkdir /nfs/prueba
chown 2001:2001 /nfs/prueba
Ahora vamos a editar el fichero /etc/exports
y añadir la siguiente línea, que permite que el usuario prueba
pueda acceder al directorio /nfs/prueba
:
/nfs *(rw,fsid=0,subtree_check)
Ahora vamos a reiniciar el servicio NFS:
systemctl restart nfs-server
Configuración final del servidor LDAP
Ahora vamos a configurar el servidor LDAP para que sea capaz de resolver nombres de grupos y de usuarios, consultar información a un directorio LDAP, identificarse o cachear la resolución de nombres.
Para ello, instalamos los siguientes paquetes:
apt install libpam-ldapd nscd libnss-ldap
Durante la instalación, dejamos los valores por defecto menos en las siguientes preguntas:
Como se indica al final de la instalación, vamos a editar el fichero /etc/nsswitch.conf
y añadir las siguientes líneas:
passwd: files ldap
group: files ldap
shadow: files ldap
gshadow: files ldap
hosts: files dns mymachines
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
Reiniciamos el servicio nscd
:
systemctl restart nscd
Ahora con el comando id prueba
podemos comprobar que se resuelven los nombres:
Finalmente podemos iniciar sesión con el comando login prueba
:
Cliente Ubuntu
Instalamos el siguiente paquete:
apt install ldap-utils
Ahora vamos a editar el fichero /etc/ldap/ldap.conf
y añadir las siguientes líneas:
BASE dc=roberto,dc=gonzalonazareno,dc=org
URI ldap://alfa.roberto.gonzalonazareno.org
Después de esto, con el siguiente comando comprobamos que funciona correctamente:
ldapsearch -x -b "dc=roberto,dc=gonzalonazareno,dc=org"
Ahora vamos a instalar los paquetes para las resoluciones:
apt install libnss-ldap libpam-ldapd nscd
La instalación es similar a la del sevidor, dejando valores por defecto y cambiando los mismos, además de añadir un usuario sin privilegios.
Como se indica al final de la instalación, vamos a editar el fichero /etc/nsswitch.conf
y añadir las siguientes líneas:
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
Reiniciamos el servicio nscd
:
systemctl restart nscd
NFS
Ahora vamos a instalar el paquete nfs-common
:
apt install nfs-common
Activamos el servicio
systemctl start nfs-client.target & systemctl enable nfs-client.target
Ahora vamos a crear los directorios que vamos a montar:
mkdir -p /home/nfs/prueba
chown 2001:2001 /home/nfs/prueba
Ahora vamos a montar la carpeta mediante NFS. Primero, cargamos el módulo
modprobe nfs
Con la siguiente línea se carga automáticamente:
echo NFS | tee -a /etc/modules
Y vamos a hacer un montaje mediante SystemD a través del fichero /etc/systemd/system/home-nfs.mount
:
[Unit]
Description=script de montaje NFS
Requires=network-online.target
After=network-online.target
[Mount]
What=192.168.0.1:/nfs
Where=/home/nfs
Options=_netdev,auto
Type=nfs
[Install]
WantedBy=multi-user.target
Y lo activamos:
systemctl daemon-reload
systemctl start home-nfs.mount
systemctl enable home-nfs.mount
Tras esto, ya podremos entrar correctamente con login prueba
. Podemos comprobar como los ficheros creados en el servidor se ven reflejados en el cliente: