Instalar Apache con autenticacion LDAP de dominio

Uno de tantos post que habra por internet sobre un apache con LDAP

1.- Configuracion del LDAP de Windows 2003 Server

Disponemos de un servidor Windows 2003 server instalado por defecto con el DNS y Active Directory. Este es el estado actual del servidor:

apacheldap1
Comprobamos cual es el puerto del LDAP (por defecto 389) y que esta escuchando:

apacheldap2

2.- Instalacion de Apache

Hemos descargado el ultimo apache hasta donde yo escribí esto en su momento: httpd-2.2.8.tar.gz

tar -xvzf httpd-2.2.8.tar.gz
cd httpd-2.2.8/
./configure –prefix=/usr/local/apache2 –enable-module=so –enable-ldap –enable-authnz-ldap

Donde activamos los dos modulos que vamos a utilizar ldap y authnz-ldap. Compilamos e instalamos:

make
make install

3.- Configuracion de Apache

Vamos a /usr/local/apache2/conf/ y editamos httpd.conf

Por defecto apache apunta al directorio /usr/local/apache2/htdocs/ donde hay un index y donde podemos cargar las paginas de nustro servidor web. Para direcrenciarlo me he creado un directorio /usr/local/apache2/htdocs2/ donde he introducido el index.html modificado:

<html><body><h1>Funciona el LDAP</h1></body></html>

Fichero que coge por defecto en:

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

Al final del archivo httpd.conf me he creado un directorio virtual, que al estar en el mismo puerto por defecto de apache 80, sobreescribe la configuracion del mismo y nos apuntara al directorio donde he incluido mi index.html. Los cambios introducidos al final del fichero httpd.conf son los siguientes:

NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin ismael@dominio.local
DocumentRoot “/usr/local/apache2/htdocs2/”
ServerName web-ldap.dominio.local
ErrorLog “logs/ldap-error_log”
CustomLog “logs/ldap-access_log” common
<Directory “/usr/local/apache2/htdocs2”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AuthType Basic
AuthBasicProvider ldap
AuthName “Autenticacion LDAP”
AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?sub?(objectClass=*)”
#AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?sub?”
#AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?”
AuthLDAPBindDN “CN=Administrador,CN=Users,DC=dominio,DC=local”
AuthLDAPBindPassword “**Password de Administrador**”
AuthzLDAPAuthoritative on
Require valid-user
</Directory>
</VirtualHost>

Arrancamos el apache:

/usr/local/apache2/bin/apachectl start

y accedemos ala URL http://192.168.0.18 o http://web-ldap.dominio.local

Nos pedira un usuario que este dentro de la unidad organizativa Users.
4.- Errores comunes y pruebas

Si metemos mal la URL nos saldra un error como el que sigue:

suse:/usr/local/apache2/logs # tail -f ldap-error_log
[Sun Jun 01 13:18:04 2008] [warn] [client 192.168.0.11] [14765] auth_ldap authenticate: user administrador authentication failed; URI / [ldap_search_ext_s() for user failed][No such object]
[Sun Jun 01 13:18:04 2008] [error] [client 192.168.0.11] user administrador not found: /

Esto nos puede pasar en varias cosas:

  • Mal puesto el dominio. En mi caso dominio.local fallaria si pongo “…DC=domain,DC=local…”
  • Mal puesto el nombre “OU”,”CN”,”Dc” : En mi caso y por defecto de haber hecho una instalacion de windows 2003 hay que poner CN para la unidad organizativa y no OU. Como vemos en la imagen del Active Directoru hay una unidad organizativa llamada “usuarios”. Si quisiesemos usarla si que deberiamos de poner OU.
  • Mal puesto el filtro del LDAP. Me ha funcionado tambien con:

AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?”
AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?sub?”
AuthLDAPURL “ldap://192.168.0.2:389/CN=Users,DC=dominio,DC=local?sAMAccountName?sub?(objectClass=*)”

esto es configuracion basica de LDAP.

Un servidor por defecto de Windows 2003 viene el ldap configurado para que nos pida credenciales de autenticacion en el ldap del dominio. Si quitasemos las directivas AuthLDAPBindDN y AuthLDAPBindPassword no funcionaria y nos saldria el siguiente error en el navegador:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@dummy-host2.example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.

y el log:

suse:/usr/local/apache2/logs # tail -f ldap-error_log
[Sun Jun 01 13:14:39 2008] [warn] [client 192.168.0.11] [14684] auth_ldap authenticate: user administrador authentication failed; URI / [ldap_search_ext_s() for user failed][Operations error]

Si metemos mal el usuario nos saldra un log como este, en el que ya no nos dice que el usuario administrador no se encuentra:

suse:/usr/local/apache2/logs # tail -f ldap-error_log
[Sun Jun 01 13:10:58 2008] [warn] [client 192.168.0.11] [14612] auth_ldap authenticate: user administrador authentication failed; URI / [ldap_simple_bind_s() to check user credentials failed][Invalid credentials]
[Sun Jun 01 13:10:58 2008] [error] [client 192.168.0.11] user administrador: authentication failure for “/”: Password Mismatch

Eso es todo, es bueno instalarlo uno mismo y ver como funciona sobre todo provoccando errores y mirando el log.

Etiquetas: , ,

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: