Control de acceso por carpetas en los servidores Apache

Post date: Jun 8, 2011 12:59:17 PM

.htaccess es el nombre de un archivo de configuración especial que provee directivas (comandos) para controlar y configurar el servidor web Apache así como algunos módulos que pueden incluirse en la instalación de Apache o incluirse durante la ejecución como mod_rewrite (para acceso a htacceess), mod_alias (para redirecciones htaccess) y mod_ssl (para controlar conexiones SSL).

Htaccess permite un manejo descentralizado de la configuración de un servidor web, lo que facilita la gestión de configuración a empresas de hospedaje de sitios y sus clientes en base al concepto de hospedaje virtual.

Creación de archivos de acceso

El nombre por defecto de los archivos de configuración de acceso es .htaccess; este nombre puede ser cambiado en la configuración del servidor Apache. Los archivos de acceso son leídos en cada solicitud, por lo que los cambios en ellos tienen efecto inmediato.

Cada carpeta del sitio puede tener su propio archivo de acceso. Apache busca en toda la jerarquía que necesita visitar para servir archivos la presencia de archivos de acceso.

Sintaxis de archivos de acceso

La sintaxis de los archivos de acceso es similar a la de los archivos de configuración de Apache, pero no todas las directivas de configuración del servidor pueden ser cambiadas en los archivos de acceso.

Por ejemplo, la configuración siguiente activa la protección por clave, especifica la página de error cuando no logra la autentificación y activa SSI (Server side includes) para archivos .html.

AuthName "Área para miembros" AuthUserFile /path/to/password/file/.htpasswd AuthType Basic require valid-user ErrorDocument 401 /error_pages/401.html AddHandler server-parsed .html

Una vez creado el archivo se sube al servidor (vía FTP, modo ASCII para archivos remotos) en la carpeta en donde se requiere la protección especificada.

Documentos de error

Al crear un documento de error se evita que los usuarios reciban avisos de error del tipo '404 FIleNot Found'. En lugar de ello reciben un mensaje explicativo que puede contener las posible soluciones al problema presentado.

Con las líneas siguientes se especifica el error tratado y la página explicativa (dentro del área servida).

ErrorDocument 401 /error_pages/401.html ErrorDocument 404 /error_pages/404.html ErrorDocument 500 /error_pages/500.html

Si en vez de una página estática se utiliza un script para responder a los errores, se puede aprovecha para almacenar el mensaje de error y otros datos que provee el servidor al llamar a la página de errores.

Reenvíos

Con los reenvíos se puede dirigir a un visitante de un documento a otro dentro del sitio web. Esto resulta útil si han reorganizado los contenidos del sitio y se quiere que los enlaces externos ya existentes sigan funcionando.

Para manejar un reenvío se utiliza el comando Redirect. En el ejemplo siguiente se especifica que los accesos a la carpeta old_dir ahora debe ir a una carpeta específica en un nuevo dominio.

Redirect /old_dir/ http://www.yourdomain.com/new_dir/index.html

Protección por claves

El uso más frecuente de los archivos de acceso es la protección por clave. Esta protección es manejada por el servidor directamente, el cual informa al navegador que debe solicitar nombre de usuario y clave para acceder al recurso solicitado. Para configurar la protección por claves se usan los siguientes comandos.

AuthName "Área para miembros" AuthUserFile /path/to/password/file/.htpasswd AuthType Basic require valid-user

La primera línea sirve para agregar un calificativo al área protegida que será mostrado a quienes intenten acceder a ella. La segunda fila especifica la ubicación del archivo de claves. La tercera especifica el tipo de autentificación, que en este caso es Basic (realizada como parte del protocolo http) y la cuarta especifica que únicamente se accede a la carpeta si se presentan las credenciales correctas (es decir, una combinación correcta de usuario y clave). Este tipo de protección no ofrece mecanismo de desconexión. Una vez conectado, el usuario tendrá acceso a los archivos de la carpeta hasta que cierre el navegador. El archivo de claves contiene líneas con pares de la forma usuario:clave_encriptada (bajo Windows la clave va en claro).

Para generar un archivo de claves se puede usar el comando linux htpasswd.

$ htpasswd -c pwd alex New password: Re-type new password: Adding password for user alex $cat pwd alex:30r1HxVYYXRfY $

Cursos relacionados