879 palabras
4 minutos
Introducci贸n a OpenLDAP

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:

Instalaci贸n de OpenLDAP

Una vez instalado con el comando netstat -tulpn comprobaremos que el servicio est谩 escuchando en el puerto 389:

Instalaci贸n de OpenLDAP

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"

ldapsearch1

Configuraci贸n de OpenLDAP#

esquemaLDAP

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

ldapadd

Ahora, podemos comprobar que se ha creado las ramas Personas y Grupos:

ldapsearch -x -b "dc=roberto,dc=gonzalonazareno,dc=org"

ldapsearch2

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:

ldapadd2

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:

slappasswd

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:

ldapadd3

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:

ldapinstall ldapinstall2

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:

id

Finalmente podemos iniciar sesi贸n con el comando login prueba:

login

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"

ldapsearch

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:

nfs

Introducci贸n a OpenLDAP
https://www.robertops.com/posts/2023-01-25_introduccion_ldap/
Autor
Roberto Rodr铆guez
Publicado el
2023-01-25