GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo configurar el servidor OpenLDAP en Debian 10

Como administrador del sistema, probablemente ya esté familiarizado con el protocolo LDAP .

Si trabaja en una empresa mediana o grande, puede estar seguro de que su empresa ya posee un servidor LDAP , ya sea en Linux o Windows.

Inventado a principios de los años 80, el protocolo LDAP (para Protocolo ligero de acceso a directorios ) se creó para almacenar datos a los que se debe acceder a través de una red.

El protocolo LDAP se definió como parte de la especificación RFC 4511 y fue implementado por muchos proveedores diferentes.

En este tutorial, echamos un vistazo a una de las implementaciones del protocolo LDAP:OpenLDAP .

OpenLDAP es una implementación gratuita y de código abierto de LDAP que proporciona un servidor (llamado slapd), así como utilidades y bibliotecas para desarrolladores.

Usando este tutorial, podrá configurar un servidor OpenLDAP completo y configurarlo para usarlo para la autenticación central.

Lo que aprenderás

Si sigue este tutorial hasta el final, podrá aprender sobre los siguientes temas:

  • Cómo instalar un servidor OpenLDAP en Debian 10;
  • Cómo configurar OpenLDAP y lo que realmente significa la configuración;
  • Cómo usar LDIF y utilidades LDAP para modificar su base de datos LDAP;
  • Cómo añadir usuarios en su servidor OpenLDAP para autenticación central;
  • Cómo configurar clientes y cómo funciona la autenticación central en Linux;

Es un artículo bastante largo, así que sin más preámbulos, comencemos instalando un servidor OpenLDAP simple en Debian 10.

Instalar servidor OpenLDAP en Debian 10

Antes de comenzar, debe asegurarse de tener derechos de administrador en su sistema:los necesitará para instalar nuevos paquetes.

Para verificar si tiene derechos de sudo, ejecute el comando "sudo" con la opción "-v".

$ sudo -v

Si no está seguro de cómo otorgar derechos sudo a los usuarios de Debian 10 o CentOS 8, asegúrese de leer nuestras guías dedicadas al respecto.

Además, asegúrese de que sus paquetes estén correctamente actualizados para obtener la última versión del paquete de los repositorios.

$ sudo apt-get update

En Linux, el servidor OpenLDAP se llama “slapd “.

Es un servidor autónomo simple y configurable que se utiliza para leer, modificar y eliminar de un directorio LDAP.

El demonio slapd también viene con muchas utilidades diferentes que se pueden usar para crear nuevas entradas fácilmente, o para modificar entradas fácilmente:slapadd o slappasswd solo por nombrar algunas.

$ sudo apt-get install slapd

Al instalar este nuevo paquete, se le pedirá que configure el demonio slapd al final de la instalación.

Configuración de slapd en Debian 10

La configuración de slapd viene como interfaces basadas en texto que debe completar para configurar el servidor correctamente.

Primero, se le pide que proporcione una contraseña de administrador para el servidor LDAP.

Elija una contraseña segura porque la entrada del administrador en el directorio LDAP tiene todos los derechos sobre todo el árbol:agregar, eliminar y modificar todas las entradas, así como leer todos los atributos LDAP.

En la siguiente pantalla, se le pide que confirme la contraseña:simplemente escriba lo que escribió en la pantalla anterior.

A partir de ahí, su servidor LDAP debe inicializarse .

Al instalar el servidor slapd, la instalación también:

  • Se creó un usuario llamado "openldap ” en su servidor;
  • Creó una configuración inicial que está disponible en /etc/ldap
  • Se creó una base de datos inicial y vacía que está listo para aceptar nuevas entradas.

De forma predeterminada, el servidor OpenLDAP creará una primera entrada en la base de datos que refleje su nombre de dominio actual.

Sin embargo, si no configuró correctamente su nombre de dominio (durante la instalación, por ejemplo), existe la posibilidad de que su servidor OpenLDAP esté mal configurado.

Para echar un primer vistazo a la configuración inicial de su servidor OpenLDAP, utilice el comando "slapcat" y observe los nombres distinguidos creados por slapd.

$ sudo slapcat

$ sudo slapcat | grep dn

Por lo general, sus DN principales de OpenLDAP deben coincidir con los nombres DNS de su dominio.

Significa que si actualmente está trabajando en el dominio "devconnected.com", su servidor OpenLDAP debería tener los principales nombres distinguidos "dc=devconnected,dc=com".

Como puede ver, este no es el caso por ahora, pero afortunadamente para nosotros, hay una forma de reconfigurar el demonio slapd.

Reconfigurando slapd usando dpkg-reconfigure

Para reconfigurar el demonio slapd, ejecute “dpkg-reconfigure ” en el daemon “slapd”. Nuevamente, necesita privilegios de sudo para reconfigurar slapd.

$ sudo dpkg-reconfigure slapd

Primero, se le pregunta si desea omitir la configuración del servidor OpenLDAP.

Obviamente queremos presionar "No" en esta opción porque queremos que se cree la configuración inicial de la base de datos para nosotros.

En el siguiente paso, se le pedirá que proporcione el nombre distinguido base de su servidor LDAP.

Como puede ver, el demonio slapd describe que el nombre de dominio DNS se usa para construir el DN base de su directorio OpenLDAP.

En este caso, elegimos tener "dc=devconnected,dc=com":tenga en cuenta que debe modificar esta entrada para que coincida con su configuración de DNS actual.

Si no está seguro del dominio al que pertenece, simplemente use el comando "nombre de dominio" en su terminal.

$ domainname
devconnected.com

A continuación, se le pide que proporcione el nombre de su organización . Este es exactamente el mismo paso que el anterior, simplemente escriba el nombre de su organización y presione "Aceptar".

Finalmente, de manera similar a la primera configuración de slapd, se le pide que proporcione credenciales de administrador para su servidor LDAP .

Nuevamente, elija una contraseña segura, ya que puede usarse para leer y modificar cada entrada en el directorio LDAP.

En la siguiente pantalla, se le solicita que proporcione el back-end que utilizará LDAP.

Para este paso, desea mantener los valores predeterminados (es decir, un MDB para el back-end de MariaDB) a menos que tenga un motivo para elegir otro back-end de almacenamiento.

A continuación, se le preguntará si desea que se elimine la base de datos cuando se elimine slapd.

En este caso, seleccionaremos “No” :hay muchas situaciones en las que simplemente desea actualizar su paquete slapd o cambiar a un servidor LDAP diferente.

Si elige sí, se eliminará su base de datos, lo que puede ser un problema real si no tiene ninguna copia de seguridad de su directorio LDAP.

Finalmente, aparece una advertencia:ya hay algunos archivos en “/var/lib” directorio de su servidor.

En este directorio, actualmente tiene almacenada su antigua base de datos. Mientras intenta reconfigurar su servidor OpenLDAP, sobrescribirá el contenido de esta carpeta.

Al elegir "Sí", la utilidad slapd hará una copia de seguridad del contenido de su base de datos existente en la carpeta "/var/backups".

¡Hecho!

Su servidor slapd ahora está configurado correctamente para que coincida con su configuración de DNS actual.

Para echar un primer vistazo al contenido de su base de datos LDAP, simplemente ejecute "slapcat" (con privilegios sudo si no está conectado actualmente como root)

$ sudo slapcat

Con esta configuración inicial:

  • Tus archivos de configuración se almacenan en “/etc/ldap”:almacenan el archivo de configuración de ldap, los esquemas que puede agregar a slapd, así como el directorio slapd.d utilizado para la personalización del servidor;
  • Tu base de datos se almacena en "/var/lib/ldap" en la base de datos "data.mdb":probablemente debería configurar copias de seguridad de este archivo para asegurarse de que no perderá todo.

Configuración de reglas de cortafuegos para LDAP

Si está utilizando un firewall, es muy probable que deba aceptar solicitudes entrantes a su servidor LDAP.

Como recordatorio rápido, OpenLDAP se ejecuta en el puerto 389.

Para asegurarse de que se está ejecutando correctamente, ejecute el comando "systemctl status" en el servidor "slapd".

$ sudo systemctl status slapd

Si está usando distribuciones recientes de Debian, probablemente esté usando UFW como cortafuegos predeterminado.

Para habilitar OpenLDAP en UFW, ejecute el comando "ufw allow" en el puerto 389 de su servidor. Puede aceptar conexiones TCP y UDP juntas.

$ sudo ufw allow 389

Rule added
Rule added (v6)

A continuación, puede verificar que la regla se creó correctamente con el comando de estado.

En la siguiente sección, veremos cómo puede agregar fácilmente nuevas entradas a su servidor LDAP usando archivos LDIF.

Agregar entradas OpenLDAP usando archivos LDIF

Al agregar nuevas entradas a su servidor OpenLDAP, puede usar la utilidad "slapadd" para agregar un nuevo archivo LDIF.

Sin embargo, esta no es la utilidad que vamos a utilizar, sino que vamos a utilizar “ldapadd”.

Diferencia entre slapadd y ldapadd

Antes de agregar nuevas entradas, es importante que conozca la diferencia entre las utilidades slap y las utilidades ldap.

Ambas utilidades toman archivos con formato LDIF como argumento y tenían el contenido en la base de datos.

Sin embargo, cuando use slapadd, tendrá que reiniciar su servidor LDAP para que se apliquen los cambios.

Este no es el caso cuando se utilizan utilidades ldap como “ldapadd”:las modificaciones se realizan directamente en el árbol de directorios.

Para poder utilizar “ldapadd”, “ldapsearch” y otras utilidades LDAP, debe instalar el paquete “ldap-utils” en su sistema.

$ sudo apt-get install ldap-utils

Creando su primer archivo LDIF

Como se explicó anteriormente, si está utilizando la línea de la consola, necesitará crear archivos LDIF y agréguelos a su base de datos o configuración LDAP actual.

El formato LDIF es un formato utilizado para agregar o modificar entradas existentes en un directorio LDAP.

Con LDIF, especifica el nombre distinguido del nodo que desea modificar y describe las modificaciones que se realizarán.

Como ejemplo, supongamos que desea crear un nuevo nodo en su directorio LDAP llamado "usuarios".

Agregar un grupo de usuarios

Para lograrlo, cree un nuevo archivo LDIF llamado "users.ldif" y agregue el siguiente contenido.

$ sudo touch /etc/ldap/users.ldif

# Content of the users file

dn: ou=People,dc=devconnected,dc=com
objectClass: organizationalUnit
ou: People

Como puede ver, se nos proporciona el DN completo del nodo que se agregará, especificamos la clase de objeto y el nombre del nodo que se creará.

Para agregar esta entrada a su directorio LDAP, debe usar el comando "ldapadd" y especificar el archivo LDIF que se usará.

$ sudo ldapadd -D "cn=admin,dc=devconnected,dc=com" -W -H ldapi:/// -f users.ldif

Enter LDAP Password:
added new entry "ou=People,dc=devconnected,dc=com"

Si no está familiarizado con las opciones de la utilidad ldap, aquí hay una descripción de las opciones proporcionadas:

  • -D :se utiliza para especificar un nodo al que vincularse. Al agregar nuevas entradas a un servidor LDAP, puede elegir su mecanismo de autenticación, pero generalmente desea vincularse al nodo de administración para obtener todos los privilegios en el árbol;
  • -W :se usa para especificar que queremos que se solicite la contraseña al conectarse;
  • -H :se utiliza para especificar el servidor LDAP al que conectarse. En este caso, nos estamos conectando a un servidor LDAP disponible en localhost;
  • -f :para especificar el archivo LDIF que se agregará al servidor LDAP.

Tenga en cuenta que no puede usar una autenticación externa para agregar nuevas entradas a LDAP de forma predeterminada:las ACL no están configuradas para hacer eso.

Ahora que su nodo está agregado a su árbol, puede intentar encontrarlo usando el comando "ldapsearch".

$ sudo ldapsearch -x -b "dc=devconnected,dc=com" ou

¡Genial!

Ahora que se agregó la unidad organizativa "Personas", agreguemos algunos usuarios a su árbol LDAP.

Adición de nuevos usuarios a LDAP

Para agregar nuevos usuarios, vamos a seguir la misma lógica:crear un archivo LDIF que contenga entradas individuales para los usuarios.

Como se describió anteriormente, OpenLDAP usa esquemas para definir "objetos ” que se puede agregar al directorio.

En este caso, vamos a utilizar el esquema "posixAccount" que ya está agregado a la configuración de su base de datos de manera predeterminada.

La “cuenta posix El objeto ” tiene varios campos que se pueden usar para describir una cuenta de usuario de Linux, como el nombre de usuario, el apellido, pero lo más importante, la contraseña de usuario .

Cree un nuevo archivo LDIF y agregue el siguiente contenido:

$ sudo touch /etc/ldap/new_users.ldif

# Content of new_users LDIF file

dn: cn=john,ou=People,dc=devconnected,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: john
uid: john
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/john
userPassword: <password>
loginShell: /bin/bash

Cuando haya terminado, guarde su archivo y use el comando ldapadd para agregar su entrada al árbol de directorios LDAP.

$ sudo ldapadd -D "cn=admin,dc=devconnected,dc=com" -W -H ldapi:/// -f new_users.ldif

Enter LDAP Password:
added new entry "cn=john,ou=People,dc=devconnected,dc=com"

Felicitaciones, ahora tiene su primer usuario almacenado en OpenLDAP.

Puede leer la información del usuario emitiendo un comando de búsqueda LDAP. Tenga en cuenta que no podrá leer la contraseña de usuario ya que está restringido por las ACL.

$ sudo ldapsearch -x -b "ou=People,dc=devconnected,dc=com"

Impresionante, ahora que su servidor LDAP está configurado, configuremos un cliente para configurar la autenticación central.

Configuración de clientes LDAP para autenticación centralizada

En la última sección de esta configuración del servidor OpenLDAP, veremos cómo puede configurar clientes LDAP (es decir, sus máquinas host) para que se conecten utilizando la información LDAP.

Cómo funciona la autenticación de cliente LDAP

Antes de emitir cualquier comando, es importante que tenga una comprensión global de lo que realmente estamos construyendo.

Antes de LDAP (y NIS), si deseaba configurar usuarios y permisos de grupo en varias computadoras de una red, tenía que conectarse a ellas una por una y cambiar su configuración.

LDAP es una gran solución para esto:LDAP centralizará la información del usuario en un solo lugar en su red.

Cuando un cliente se conecta a cualquier máquina de su dominio, el host primero se comunicará con el servidor LDAP y verificará que la contraseña de usuario proporcionada sea correcta.

La biblioteca cliente vinculará (o autenticará) al servidor LDAP remoto utilizando la cuenta de administrador y recuperar la información asociada con el usuario que intenta conectarse.

Luego, recuperará la contraseña asociada con la cuenta y la comparará con la contraseña que ingresó cuando inició sesión.

Si las contraseñas coinciden, iniciará sesión en su cuenta; de lo contrario, se le negará.

Configurar la autenticación LDAP del cliente en Debian

Para configurar la autenticación LDAP del cliente, deberá instalar el "libnss-ldap ” paquete en su cliente.

$ sudo apt-get install libnss-ldap

Al instalar este paquete, se le harán muchas preguntas diferentes para configurar la autenticación centralizada del cliente.

Primero, se le pide que proporcione la URL de su servidor LDAP:se recomienda configurar una dirección IP (configurada como estática, obviamente) para evitar problemas en las resoluciones de DNS.

En el servidor, identifique su dirección IP con el comando ip y complete el campo correspondiente en el cliente.

# On the server

$ ip a

Nota :asegúrese de que está utilizando el protocolo LDAP y no el protocolo LDAPI. Por alguna razón, no se podrá acceder a su servidor si utiliza el protocolo LDAPI.

A continuación, se le pide que proporcione el nombre distinguido raíz de su servidor LDAP . Si no está seguro, debe ejecutar un comando ldapsearch en el servidor para obtener esta información.

En la siguiente pantalla, se le preguntará la versión de LDAP que desea utilizar:elija la versión 3 de LDAP por ahora.

A continuación, se le preguntará si desea que la raíz local sea el administrador de la base de datos.

Quieres escribir "Sí" a esta opción ya que desea cambiar la contraseña de usuario directamente desde la máquina host.

Con esta opción, podrá ejecutar "passwd" y modificar la contraseña directamente en el directorio LDAP, lo cual es bastante útil.

De forma predeterminada, la base de datos LDAP no requiere un inicio de sesión, por lo que puede escribir "No" en esta opción.

Nota :la base de datos LDAP no tiene inicio de sesión, pero tiene una cuenta de administrador en la parte superior de su directorio LDAP. Esos son dos conceptos diferentes que son muy diferentes el uno del otro.

A continuación, escriba la cuenta de administrador de LDAP para ser utilizado para bindinds.

Como recordatorio, esta es la cuenta que se utilizará para obtener la información de la contraseña de usuario del servidor.

Finalmente, escriba la contraseña asociada con la cuenta de administrador en el servidor LDAP.

Listo, ahora debería poder consultar su servidor LDAP.

Vincular la información del cliente a LDAP

Para vincular la información de su cliente (como el nombre de usuario y la contraseña) al directorio LDAP, debe modificar el archivo nsswitch.

Como recordatorio, el archivo nsswitch se usa para vincular cierta información en su sistema (como usuarios, grupos o hosts) a varias fuentes diferentes (local, LDAP, NIS u otras).

Edite el archivo /etc/nsswitch.conf y agregue una entrada "ldap" a las primeras cuatro secciones:passwd, group, shadow, gshadow.

$ sudo nano /etc/nsswitch.conf

Guarde su archivo y ahora debería poder listar usuarios desde el servidor LDAP.

$ getent passwd

Nota :si no está familiarizado con el comando getent, aquí están todos los comandos usados ​​para listar usuarios en Linux.

¡Impresionante!

Ahora que su usuario se puede recuperar a través de LDAP, podrá iniciar sesión en esta cuenta utilizando la contraseña de usuario que especificó en el directorio LDAP.

$ su - john

<Type password specified in LDAP>

[email protected]:/home/john

Conclusión

En este tutorial, aprendió cómo puede configurar fácilmente un servidor OpenLDAP simple en Debian 10 utilizando la utilidad slapd.

También aprendiste sobre las utilidades LDAP que puede usar para agregar y buscar entradas en su directorio LDAP.

Finalmente, ha visto cómo puede configurar máquinas cliente para usar la autenticación LDAP para conectarse a sus máquinas.

Esta es una arquitectura que se puede usar en la arquitectura de TI de la mayoría de las empresas:tenga en cuenta que deberá configurar el cifrado TLS para que las contraseñas no se transmitan a través de la red en texto claro.

Si está interesado en la administración del sistema Linux, tenemos una sección completa dedicada a ella en el sitio web, ¡así que asegúrese de consultarla!


Debian
  1. Cómo habilitar SSH en Debian 9 o 10

  2. Cómo instalar el servidor OpenLDAP en Debian o Ubuntu

  3. Cómo configurar el servidor Rsyslog en Debian 11

  4. Cómo instalar el servidor Redis en Debian 11

  5. Cómo instalar MySQL 8.0/5.7 en Debian 11/Debian 10

Cómo configurar Symfony 4 en el servidor Debian 9

Cómo instalar MySQL 8 en Debian 10

Instalar y configurar OpenLDAP en Ubuntu 16.04 / Debian 8

Cómo configurar el servidor NFS en Debian 9 / Ubuntu 16.04 / LinuxMint 18

Cómo instalar Todoman en el servidor Debian 11

Cómo:Configuración inicial del servidor Debian 8.2