jueves, 17 de agosto de 2006

Proteger directorios en Apache

Proteger una zona de nuestra web solicitando usuario y contraseña

Este texto pretende mostrar los pasos que seguí para protejer una serie de de directorios con la combinación .htpassd y .htaccess.

Necesitaremos

  • Servidor Apache corriendo
  • Un editor de texto
  • Esta receta :-D

Importante: debemos tener acceso al directorio del servidor para subir los archivos .htaccess y .htpasswd.


Receta

Básicamente este documento está basado en ésta web, pero agrega algo que allí no se menciona y que me hizo doler bastante la cabeza :-P.

Creamos nuestro archivo con las claves encriptadas, para ello ejecutamos el siguiente comando:

fernando@www.aulasur.com.ar:/directorio/secreto/inaccesible$ htpasswd -c .htpasswd nombre_usuario

El /directorio/secreto/inaccesible es una ubicación dentro de nuestra máquina, no necesariamente accesible via web. La opción -c indica que es la primera vez que creamos el archivo, luego no la usaremos más. Debemos reemplazar el "nombre_usuario" por el usuario que queremos. Luego, por cada usuario, haremos:

fernando@www.aulasur.com.ar:/directorio/secreto/inaccesible$ htpasswd .htpasswd nombre_usuario2
fernando@www.aulasur.com.ar:/directorio/secreto/inaccesible$ htpasswd .htpasswd nombre_usuario3
....
fernando@www.aulasur.com.ar:/directorio/secreto/inaccesible$ htpasswd .htpasswd nombre_usuarioN

Con nuestro editor de texto preferido, creamos un archivo llamado .htaccess, y lo ubicamos en el directorio que queremos proteger, en nuestro caso /var/www/protegido

AuthUserFile /directorio/secreto/inaccesible/.htpasswd
AuthGroupFile /dev/null
AuthName AQUI PONER EL NOMBRE DEL RECURSO COMPARTIDO
AuthType Basic


require user nombre_usuario nombre_usuario3 nombre_usuarioN


Aquí AuthUserFile /directorio/secreto/inaccesible/.htpasswd le damos la ruta a nuestro .htpasswd y en require user nombre_usuario nombre_usuario3 nombre_usuarioN le decimos al Apache qué usuarios pueden acceder al recurso.

A tener en cuenta

  • En mi /etc/apache/httpd.conf tenía la opción AllowOverride en none y tuve que cambiarla por all, quedando de esta manera:

#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
AllowOverride all

Una vez que realizamos este cambio (esto era lo que no estaba en la web original!) reiniciamos Apache:

fernando@www.aulasur.com.ar:# invoke-rc.d apache restart

  • Por cada directorio que queremos protejer debemos crear un .htaccess.
  • Tambien podemos ir agregando usuarios a nuestro .htpasswd a medida que sea necesario.
  • Para dar acceso a un usuario a una parte de nuestra web, sólo debemos agregarlo en el .htaccess de nuestro directorio, en la sección:

require user nombre_usuario nombre_usuario3 nombre_usuarioN ULTIMO_USUARIO_AGREGADO

Bueno, creo que eso era todo... dudas o preguntas en el foro!

Espero sea útil, saludos!

Mi empresa: NiuX.

No hay comentarios.: