# Guía para Instalar y Configurar un Servidor LDAP en Linux

- Link: https://binariocero.com/linux/guia-para-instalar-y-configurar-un-servidor-ldap-en-linux
- Published: 2024-08-16T21:33:16+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

### **1. Requisitos Previos**

Antes de comenzar, asegúrate de tener:

 * Un servidor Linux (puede ser cualquier distribución popular como Ubuntu, CentOS,
   Debian, etc.).
 * Acceso root o privilegios de sudo.
 * Conexión a internet para descargar paquetes.

### **2. Instalación de OpenLDAP**

#### **En Ubuntu/Debian:**

 1. **Actualiza los paquetes del sistema:**
    `sudo apt update ``sudo apt upgrade`
 2. **Instala los paquetes necesarios:**
    `sudo apt install slapd ldap-utils `Durante
    la instalación, se te pedirá que configures una contraseña para el administrador
    de LDAP (conocido como `admin`). Esta contraseña se usará para acceder al directorio
    LDAP.
 3. **Reconfigura el paquete slapd si es necesario:**
    `sudo dpkg-reconfigure slapd `
    Aquí puedes ajustar la configuración del dominio y otros parámetros.

#### **En CentOS/RHEL:**

 1. **Actualiza los paquetes del sistema:**
    `sudo yum update`
 2. **Instala los paquetes necesarios:**
    `sudo yum install openldap openldap-servers
    openldap-clients`
 3. **Habilita e inicia el servicio de LDAP:**
    `sudo systemctl start slapd ``sudo systemctl
    enable slapd`

### **3. Configuración Básica del Servidor LDAP**

La configuración básica del servidor LDAP se puede realizar a través de varios archivos
y herramientas. Aquí, nos centraremos en la configuración básica usando el archivo`
slapd.conf` o la base de datos `cn=config`.

#### **Configuración usando slapd.conf (Método tradicional)**

 1. **Edita el archivo de configuración:**
    `sudo nano /etc/ldap/slapd.conf`
 2. **Asegúrate de que tu archivo de configuración contiene las siguientes líneas:**
    `
    include /etc/ldap/schema/core.schema ``include /etc/ldap/schema/cosine.schema ``
    include /etc/ldap/schema/inetorgperson.schema ``include /etc/ldap/schema/nis.schema``
    pidfile /var/run/slapd/slapd.pid ``argsfile /var/run/slapd/slapd.args ``database
    bdb ``suffix "dc=example,dc=com" ``rootdn "cn=admin,dc=example,dc=com" ``rootpw
    secretpassword ``directory /var/lib/ldap ``index objectClass eq `Ajusta `suffix`,`
    rootdn`, y `rootpw` a tus necesidades.
 3. **Reinicia el servicio para aplicar los cambios:**
    `sudo systemctl restart slapd`

#### **Configuración usando cn=config (Método moderno)**

 1. **Accede a la base de datos de configuración:**
    `sudo ldapmodify -Y EXTERNAL -H
    ldapi:/// -f config.ldif `Aquí, `config.ldif` es un archivo que contiene los cambios
    de configuración en formato LDIF.
 2. **Crea un archivo `config.ldif` para agregar tu configuración. Por ejemplo:**
    `
    dn: olcDatabase={1}hdb,cn=config ``changetype: modify ``replace: olcSuffix ``olcSuffix:
    dc=example,dc=com ``dn: olcDatabase={1}hdb,cn=config ``changetype: modify ``replace:
    olcRootDN ``olcRootDN: cn=admin,dc=example,dc=com ``dn: olcDatabase={1}hdb,cn=config``
    changetype: modify ``replace: olcRootPW ``olcRootPW: secretpassword`
 3. **Aplica los cambios:**
    `sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f config.ldif`

### **4. Agregar Esquemas LDAP**

Los esquemas LDAP definen los tipos de datos que pueden ser almacenados. Asegúrate
de que los esquemas necesarios estén incluidos:

    ```wp-block-preformatted
    sudo cp /usr/share/doc/slapd/examples/ldif/* /etc/ldap/schema/sudo nano /etc/ldap/slapd.conf
    ```

Asegúrate de que los archivos de esquema estén incluidos en el archivo de configuración(`
slapd.conf` o `cn=config`).

### **5. Agregar Datos Iniciales al Directorio LDAP**

Para agregar datos iniciales (como la base de datos de usuarios y grupos), necesitarás
crear archivos LDIF y cargarlos en el servidor LDAP.

 1. **Crea un archivo LDIF para agregar una estructura básica:**
    `dn: dc=example,dc
    =com ``objectClass: top ``objectClass: dcObject ``objectClass: organization ``o:
    Example Inc ``dc: example ``dn: ou=people,dc=example,dc=com ``objectClass: organizationalUnit``
    ou: people ``dn: ou=groups,dc=example,dc=com ``objectClass: organizationalUnit ``
    ou: groups`
 2. **Guarda el archivo como `base.ldif` y cárgalo en el servidor LDAP:**
    `sudo ldapadd-
    x -D "cn=admin,dc=example,dc=com" -W -f base.ldif `Se te pedirá la contraseña que
    configuraste para el administrador.

### **6. Administrar Usuarios y Grupos**

#### **Agregar Usuarios**

 1. **Crea un archivo LDIF para un usuario:**
    `dn: uid=john.doe,ou=people,dc=example,
    dc=com ``objectClass: inetOrgPerson ``objectClass: posixAccount ``objectClass: 
    top ``cn: John Doe ``sn: Doe ``uid: john.doe ``uidNumber: 1001 ``gidNumber: 1001``
    homeDirectory: /home/john.doe ``userPassword: {SSHA}passwordhash`
 2. **Agrega el usuario al directorio LDAP:**
    `sudo ldapadd -x -D "cn=admin,dc=example,
    dc=com" -W -f user.ldif`

#### **Agregar Grupos**

 1. **Crea un archivo LDIF para un grupo:**
    `dn: cn=developers,ou=groups,dc=example,
    dc=com ``objectClass: posixGroup ``objectClass: top ``cn: developers ``gidNumber:
    1001`
 2. **Agrega el grupo al directorio LDAP:**
    `sudo ldapadd -x -D "cn=admin,dc=example,
    dc=com" -W -f group.ldif`

### **7. Configuración del Cliente LDAP**

Para que los clientes Linux usen LDAP para autenticarse, debes configurar el cliente
LDAP.

 1. **Instala los paquetes necesarios:**
    `sudo apt install libnss-ldap libpam-ldap 
    nslcd`
 2. **Configura el archivo `/etc/nsswitch.conf`:**Asegúrate de que las líneas de `passwd`,`
    group`, y `shadow` incluyan `ldap`:
    `passwd: files ldap ``group: files ldap ``shadow:
    files ldap`
 3. **Configura el archivo `/etc/ldap/ldap.conf`:**Edita o crea este archivo para incluir:
    `
    BASE dc=example,dc=com ``URI ldap://localhost`
 4. **Configura el archivo `/etc/nslcd.conf`:**Asegúrate de que contenga:
    `uri ldap://
    localhost ``base dc=example,dc=com`
 5. **Reinicia los servicios:**
    `sudo systemctl restart nslcd ``sudo systemctl restart
    nsswitch`

### **8. Verificación y Solución de Problemas**

 1. **Verifica la configuración LDAP:**
    `ldapsearch -x -b "dc=example,dc=com" -D "cn
    =admin,dc=example,dc=com" -W `Asegúrate de ingresar la contraseña correcta para
    el administrador LDAP.
 2. **Revisa los logs en caso de problemas:**Los logs de LDAP suelen estar en `/var/
    log/` dependiendo de la configuración de tu distribución. Revisa los archivos para
    obtener detalles sobre errores.

### **9. Mantenimiento y Seguridad**

 1. **Realiza copias de seguridad periódicas** de tu base de datos LDAP. Utiliza herramientas
    como `slapcat` para realizar copias de seguridad.
    `sudo slapcat -l backup.ldif`
 2. **Actualiza regularmente** OpenLDAP y otros paquetes del sistema para mantener 
    la seguridad.
 3. **Configura el cifrado** usando TLS/SSL para proteger las conexiones LDAP. Debes
    generar certificados SSL/TLS y configurar OpenLDAP para usarlos. Aquí tienes un
    ejemplo de cómo configurar TLS en OpenLDAP:
 4.  * **Genera certificados y claves:**
       `openssl req -new -x509 -nodes -out /etc/ssl/
       certs/ldapserver.crt -keyout /etc/ssl/private/ldapserver.key -days 365`
     * **Configura TLS en OpenLDAP:**Edita el archivo de configuración de OpenLDAP 
       para incluir los siguientes parámetros:
       `olcTLSCACertificateFile: /etc/ssl/certs/
       ca-certificates.crt olcTLSCertificateFile: /etc/ssl/certs/ldapserver.crt olcTLSCertificateKeyFile:/
       etc/ssl/private/ldapserver.key`
     * **Reinicia el servicio de LDAP:**
       `sudo systemctl restart slapd`

Con esta guía, deberías tener un servidor LDAP funcional en Linux, capaz de manejar
la autenticación y la gestión de usuarios y grupos
