auth-ldap: Módulo de Autenticación LDAP para NGINX
Instalación
Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:
- RedHat Enterprise Linux 7, 8, 9 y 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 y Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-auth-ldap
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-auth-ldap
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ngx_http_auth_ldap_module.so;
Este documento describe nginx-module-auth-ldap v0.3 lanzado el 28 de mayo de 2020.
Módulo LDAP para nginx que soporta autenticación contra múltiples servidores LDAP.
Ejemplo de configuración
Define la lista de tus servidores LDAP con los requisitos de usuario/grupo necesarios:
http {
ldap_server test1 {
url ldap://192.168.0.1:3268/DC=test,DC=local?sAMAccountName?sub?(objectClass=person);
binddn "TEST\\LDAPUSER";
binddn_passwd LDAPPASSWORD;
group_attribute uniquemember;
group_attribute_is_dn on;
require valid_user;
}
ldap_server test2 {
url ldap://192.168.0.2:3268/DC=test,DC=local?sAMAccountName?sub?(objectClass=person);
binddn "TEST\\LDAPUSER";
binddn_passwd LDAPPASSWORD;
group_attribute uniquemember;
group_attribute_is_dn on;
require valid_user;
}
}
Y añade los servidores requeridos en el orden correcto en tu directiva de ubicación/servidor:
server {
listen 8000;
server_name localhost;
auth_ldap "Forbidden";
auth_ldap_servers test1;
auth_ldap_servers test2;
location / {
root html;
index index.html index.htm;
}
}
Parámetros de configuración disponibles
url
valor esperado: cadena
Esquemas de URL disponibles: ldap://, ldaps://
binddn
valor esperado: cadena
binddn_passwd
valor esperado: cadena
group_attribute
valor esperado: cadena
group_attribute_is_dn
valor esperado: on o off, por defecto off
require
valor esperado: valid_user, user, group
satisfy
valor esperado: all, any
max_down_retries
valor esperado: un número, por defecto 0
Conteo de reintentos para intentar reconectar a un servidor LDAP si se considera "DOWN". Esto puede suceder si una conexión KEEP-ALIVE a un servidor LDAP se agota o es terminada por el servidor después de un tiempo.
Esto puede ayudar generalmente con el siguiente error:
http_auth_ldap: ldap_result() failed (-1: Can't contact LDAP server)
connections
valor esperado: un número mayor que 0
ssl_check_cert
valor esperado: on o off, por defecto off
Verifica el certificado remoto para conexiones LDAPs. Si está deshabilitado, cualquier certificado remoto será aceptado, lo que te expone a posibles ataques de hombre en el medio. Ten en cuenta que el certificado del servidor deberá estar firmado por una CA adecuada confiable por tu sistema si esto está habilitado. Consulta a continuación cómo confiar en CAs sin instalarlas a nivel del sistema.
Esta opción necesita OpenSSL >= 1.0.2; no está disponible si se compila con versiones anteriores.
ssl_ca_file
valor esperado: ruta de archivo
Confía en el certificado CA en este archivo (ver ssl_check_cert arriba).
ssl_ca_dir
valor esperado: ruta de directorio
Confía en todos los certificados CA en este directorio (ver ssl_check_cert arriba).
Ten en cuenta que necesitas proporcionar enlaces simbólicos basados en hash en el directorio para que esto funcione; básicamente necesitarás ejecutar el comando c_rehash de OpenSSL en este directorio.
referral
valor esperado: on, off
El valor predeterminado de la biblioteca LDAP es on. Esta opción desactiva el uso de mensajes de referencia del servidor LDAP. Útil para autenticar contra un servidor AD de solo lectura sin acceso a escritura.
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-auth-ldap.