En este post vamos a ver como se pobla un servidor LDAP desde un fichero “.json” creado para añadir todos lo usuarios necesarios. Uno de los atributos que añadiremos será “Clave pública ssh” de cada usuario la cual usaremos posteriormente para configurar el servicio ssh para que obtenga las claves públicas de los usuarios del servidor LDAP.

El primer paso es crear el arbol de LDAP, proceso que realizamos en este post Configuracion sistema centralizado con LDAP una vez creado.

Añadir esquema openssh-ldk

Dicho esquema nos permite añadir el atributo clave publica.

Vamos a añadir el esquema mediante un .ldif mediante la api de OpenLDAP

Una vez tengamos el fichero lo añadimos con la api de “OpenLDAP” ldapadd -H ldapi:/// -Y EXTERNAL -f openssh-lpk.ldif:

Una vez añadido ya podremos usar el atributo “sshPublicKey”.

Agregamos el grupo “2asir” con “gidNumber=2002”, para ello creamos un fichero grupo.ldif

Y lo añadimos al árbol ldapadd -x -D "cn=admin,dc=jlramirez,dc=gonzalonazareno,dc=org" -W -f grupos.ldif

Creación de script en python para cargar fichero “.json”

Vamos a crear un script en python el cual podrás encontrar en mi Python-LDAP Juanlu Ramirez, para poblar mediante el fichero JSON creado entre todos mi árbol de LDAP, para ello instalamos el siguiente paquete apt install python-ldap, para obtener un correcto funcionamiento del script en python:

Y ejecutamos nuestro “Poblar-LDAP.py”:

Info! Importante nuestro dominio va a variar en este caso segun nuestro nombre pero podeis poner el nombre que querais.

Autentificación usuarios con LDAP + PAM

Vamos a autentificar los usuarios con “LDAP + PAM” para ello vamos a proceder a instalar los siguientes paquetes apt install libnss-ldapd:

Una vez instalados los paquetes configuramos el fichero para las autentificaciones /etc/nsswitch.conf y añadimos lo siguiente:

Info! Puede venir configurado, si es así no toques nada, sino, añadir “ldap” al final.

Y ahora vamos a configurar para que se creen la carpeta de directorio de cada usuario al vuelo para ello configuramos el fichero /etc/pam.d/common-session y añadamos la siguiente linea:

Una de las directivas añadidas concretamente la primera la de creación del usuario no funcionará correctamente ya que debemos generar un fichero de configuración el cual añadirá la directiva.

Vamos a crear el fichero de configuración de PAM /usr/share/pam-configs/mkhomedir para que cree los home al vuelo con el inicio de sesión.

Configurar servicio SSH para acceder con los usuarios añadidos

Para poder autentificar los usuarios que tenemos en ldap con su clave publica vamos a realizar el siguiente script autentificacion_ssh.sh que se encuentra en mi github Python-LDAP Juanlu Ramirez:

Y añadimos las siguientes lineas a /etc/ssh/sshd_config, para que “sshd” ejecute el script automáticamente cuando intentes conectarte al usuario:

Info! El script debe estar alojado en la ruta que podemos observar arriba /etc/ssh/ssh.sh, pero el script se puede llamar diferente.

Y reiniciamos el servicio service sshd restart:

Una vez configurado el apartado anterior, para crear al vuelo el “home” del usuario y ya desde un cliente donde tengamos la clave privada nos conectamos al servidor “barney” y observamos se crea el home y ya tenemos acceso al usuario:

Eliminar usuarios del arbol

Desde el servidor LDAP ejecutamos el script en python Eliminar-LDAP.py que encontraras en mi github Python-LDAP Juanlu Ramirez el cual debemos hacer pequeñas modificaciones para que funcione en nuestro dominio, dado que cada uno va a tener un dominio distinto.
Vamos a modificar cn=admin,dc=barney,dc=jlramirez,dc=gonzalonazareno,dc=org, por el nuestro, es importante que dicho script se encuentre en el mismo directorio que el fichero .json