1. Introducción
Se puede utilizar el módulo adicional ngx_http_auth_request_module, pero se necesita una versión de nginx precompilada con este módulo adicional. Para Ubuntu se podría instalar nginx-extras pero da problemas.
sudo apt install nginx-extras#DA PROBLEMAS
sudo apt update sudo apt upgrade
# Install requiered packages
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev git
# Download nginx versison 1.27.3
wget http://nginx.org/download/nginx-1.27.3.tar.gz
tar -xzvf nginx-1.27.3.tar.gz
cd nginx-1.27.3
# Clone LDAP Module
git clone https://github.com/kvspb/nginx-auth-ldap.git
# Configure Nginx with the LDAP Module
./configure --add-module=./nginx-auth-ldap --with-http_ssl_module --with-http_v2_module
# Compile and Install Nginx:
make sudo make install
# Verify Installation: Check the installed Nginx binary for the LDAP module:
/usr/local/nginx/sbin/nginx -V
2. Configurar LDAP
dsquery user -name "Ximo Dante"
"CN=Ximo Dante,OU=SISTEMAS,OU=USUARIOS IMPORTANTES,DC=edificio,DC=municipio"
- dominio "edificio.municipio"
- un usuario CN "Ximo Dante"
- dos unidades organizativas OU "SISTEMAS" y "USUARIOS IMPORTANTES"
- Nuestro servidor LDAP es: "municipio-dc-03.edificio.municipio"
- la contraseña de este usuario es "mi_contraseña"
Según CHATGPT esto sirve: para el fichero /usr/local/nginx/conf/nginx.conf OJO: NO estamos en /etc/nginx/conf/nginx.conf
http { ldap_server my_ldap_server { url ldap://municipio-dc-03.edificio.municipio:389/dc=edificio,dc=municipio?uid?sub?(objectClass=person); binddn "cn=Ximo Dante,ou=SISTEMAS,ou=USUARIOS IMPORTANTES,dc=edificio,dc=municipio";
binddn_passwd "mi_contraseña"; #group_attribute member;
group_attribute memberUid;
#group_attribute_is_dnon;
group_attribute_is_dn off;require valid_user; } server { listen 80; server_name example.com; location /protected { auth_ldap "Restricted Area"; auth_ldap_servers my_ldap_server;
proxy_pass http://backend_server; } } }
Y aclara:
Explicación de la configuración:
ldap_server my_ldap_server
:- Define un servidor LDAP con el nombre my_ldap_server.
url
: Especifica la URL del servidor LDAP. En este caso,ldap://municipio-dc-03.edificio.municipio:389
.dc=edificio
,dc=municipio
: Indica la base de búsqueda en el árbol LDAP.?uid
: Especifica el atributo de búsqueda del usuario (generalmenteuid
ocn
).?sub
: Define el alcance de la búsqueda (sub
para buscar recursivamente en subárboles).(objectClass=person)
: Filtro para encontrar objetos LDAP que representan usuarios.
binddn
ybinddn_passwd
:- Credenciales usadas por Nginx para consultar el servidor LDAP.
auth_ldap
yauth_ldap_servers
:- Habilita la autenticación LDAP en el bloque de ubicación.
3. Proteger rutas específicas
En este ejemplo, solo las solicitudes al directorio /protected
requieren autenticación LDAP. Si la autenticación es exitosa, el usuario puede acceder; de lo contrario, se muestra un desafío de autenticación.
Pruebas y solución de problemas
Revisar los logs:
- Logs de acceso:
/var/log/nginx/access.log
- Logs de error:
/var/log/nginx/error.log
- Logs de acceso:
Asegurar conectividad con el servidor LDAP:
- Probar la conexión desde el servidor donde está Nginx (escribiendo en una sola línea):
- Probar la conexión desde el servidor donde está Nginx (escribiendo en una sola línea):
ldapsearch -H
ldap://municipio-dc-03.edificio.municipio
-D "cn=Ximo Dante,ou=SISTEMAS,ou=USUARIOS IMPORTANTES,dc=edificio,dc=municipio"
-w "mi_contraseña"
-b "dc=edificio,dc=municipio"
Supongamos que
Depurar errores comunes:
- Credenciales incorrectas:
- Revisar
binddn
sobre todo no dejarse ningún OU ni DC ni por supuesto el CN. Para ello hemos ejecutado en Windows : dsquery user -name "Ximo Dante" - Revisar
binddn_passwd
. - URL LDAP incorrecta: Verificar que el servidor LDAP y la base DN sean correctos.
Conclusión
Usar LDAP con Nginx es posible con el módulo adecuado, como ngx_http_auth_ldap_module
o la solución comercial de Nginx Plus. Este enfoque permite autenticar usuarios centralmente mediante un servidor LDAP, lo cual es útil en entornos empresariales.
3. Configurar LDAP. Error nginx[1190358]: [emerg] 1190358#1190358: unknown directive "ldap_server" in /etc/nginx/nginx.conf:
No hay comentarios :
Publicar un comentario