Usando mod_digest de Apache podemos implementar una forma mucho más segura de restringir el acceso a determinados lugares de un sitio web que la habitual “Basic Authentication”.
La “Digest Authentication” es muchísimo menos común, y podríamos decir en cierto modo que “Digest” es a la “Basic Authentication”, lo que el SSH es al Telnet. Que sea mucho menos popular también nos beneficia, en la práctica, a nivel de seguridad, pues seguramente seamos descartados por muchos “bots” de búsqueda que intentan acceder a directorios del tipo /admin/ detectando la petición de password con los métodos tradicionales.
Asumiendo que sabes como usar la habitual Basic Authentication, vamos a ver cómo activar y usar mod_digest:
1) Activar el módulo, normalmente en el archivo /etc/httpd/conf/httpd.conf
LoadModule auth_digest_module /usr/lib/httpd/modules/mod_auth_digest.so
2) Añadiendo al archivo .htaccess, o bien en la configuración del “vhost” de Apache:
<Directory /path/to/secret_folder> AuthType Digest AuthName "AUTH_SDS_DOWNLOAD" AuthDigestDomain /secret_folder/ http://www.mydomain.com/secret_folder/ AuthDigestFile /etc/httpd/conf/digest.lock require valid-user BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On </Directory>
3) Para crear el archivo de contraseñas de tipo “digest”, usaremos la herramienta “htdigest” en lugar de “htpasswd”. Recordemos que “-c” lo usamos cuando creamos el archivo de passwords la primera vez.
# htdigest [ -c ] passwdfile realm username
Siendo “passwdfile” el AuthDigestFile del paso 2.
“realm” lo que pusimos en AuthName,
y “username” a la vieja usanza de htpasswd.
Enlaces con más información:
http://httpd.apache.org/docs/2.0/mod/mod_auth_digest.html
http://httpd.apache.org/docs/2.0/programs/htdigest.html
http://httpd.apache.org/docs/1.3/mod/mod_auth_digest.html
http://httpd.apache.org/docs/1.3/programs/htdigest.html