Gestión básica de acceso en Apache (Parte 4: Gestión básica del archivo de configuración personalizada de directorios)

  Otra de las opciones que tiene el servidor web Apache para administrar el acceso a sus recursos es el archivo de configuración personalizada de directorios, denominado ".htaccess" predeterminadamente.
  Este fichero permite a un usuario determinar la configuración de cada directorio del servidor sin necesidad de que sea el administrador, puesto que el fichero se encuentra en un directorio que dicho usuario controla sin necesidad de permisos especiales.
  Lo que aquí se expondrá es cómo configurar el archivo ".htaccess" y el archivo de configuración del propio servidor web Apache para controlar el acceso a ciertos recursos del servidor alojados dentro de un directorio concreto que pertenece a un usuario determinado.

  Si se pretende cambiar el nombre predeterminado del archivo de configuración personalizada de directorios se debe editar el archivo "apache2.conf", alojado en la ruta "/etc/apache2/" con un editor de texto; el comando para ello, dentro del directorio donde se encuentra el archivo, es sudo (nombre del editor de texto) apache2.conf. Abierto el archivo, se busca la directiva "AccessFileName", se descomenta (quitándole la "#" del principio de la línea), y se cambia su valor por el nombre que el usuario desee para su archivo de configuración personalizada de directorios. En este mismo archivo se encuentra la directiva de sección "<FilesMatch>", que sirve para impedir que los archivos que comiencen por ".ht" no sean visibles ni accesibles por los programas y equipos clientes a nivel de servidor (afecta a todos los directorios virtuales del servidor Apache). Aquí se dejará todo predeterminado.
  El fichero ".htaccess" (en este caso, el "." es parte inicial del nombre del archivo, y no una muestra de terminación del tipo del mismo) permite delegar las configuraciones del servidor, lo que es útil en webs personales, y hace innecesario reiniciar el servidor Apache cada vez que se hagan cambios en dichas configuraciones. No obstante, antes de esto, hay que editar el archivo "000-default.conf" (dentro de la ruta "/etc/apache2/sites-available/") como administrador.
  Como el servidor debe buscar el archivo de configuración fuera de sí mismo, se debe crear un directorio virtual usando la directiva "Alias" (si no se sabe hacer esto, puede verse el método en este enlace). En este ejemplo, se usará la directiva de sección "<Directory>" relativa al directorio "wiki". Si este directorio ya se ha creado y usado anteriormente, se pueden borrar todas las otras directivas y dejar únicamente "AllowOverride", o bien se pueden dejar el resto de directivas y, si no está ya, añadir esta última. En ambos casos, para que el archivo ".htaccess" sobreescriba todas las directivas en el directorio, hay que añadirle el valor "all".
  Tras guardar los cambios y cerrar el archivo que se está editando, se reinicia el servidor. Acto seguido, se puede crear el archivo ".htaccess" en el directorio "wiki", mediante el editor de texto con el comando antes mencionado para ello (recordemos que hay numerosos editores de texto en Linux, como Vim, Nano o Mousepad). Se pondrán todas las directivas que se necesiten como si se pusieran en una directiva de sección "<Directory>", pero sin especificar esta última, puesto que el archivo ya se encuentra en el directorio donde se aplicará su configuración. También se añadirán las directivas de control de acceso para los equipos de la red virtual mediante la directiva de sección "<RequireAny>" (se debe recordar poner la dirección IP de la puerta de enlace y su tipo de red en la directiva apropiada).
  Luego se prueba el acceso total en el navegador de red escribiendo "http://(dirección IP del servidor)/wiki" (en este ejemplo) en la barra de navegación.
  Con el acceso total asegurado, se puede comenzar a restringir el acceso del recurso del servidor. En primer lugar, se añade el archivo para usuarios del servidor Apache y sus contraseñas al tiempo que se crea su primer usuario para este directorio. El comando para ello es sudo htpasswd -c /home/elb/wiki/.htpasswd wiki.
   Después, se edita el archivo ".htaccess" y se añaden las directivas apropiadas para una autenticación básica (ver el siguiente enlace si no se conoce este tipo de directivas). El archivo quedaría, básicamente, como en la siguiente imagen.

  Sin necesidad de reiniciar el servidor, se escribirá en la barra de navegación del navegador de red  la dirección "http://(dirección IP del servidor)/wiki" (en este ejemplo) para comprobar todos estos cambios.
  
   Ahora bien, ya que se ha comprobado que el usuario autorizado puede entrar en ese directorio concreto gracias a la configuración de su archivo de configuración personalizada de directorios, se verá otra variable de la directiva "AllowOverride".
  En este caso, se editará el archivo "000-default.conf" y se cambiará el valor de "AllowOverride" por "AuthConfig" para que se sobreescriban únicamente las directivas de control de acceso. Tras guardar y cerrar el archivo, se reinicia el servidor Apache.
  Acto seguido hay que editar también el archivo ".htaccess" y anular las directivas que no sobreescribirá de algún modo, para evitar errores internos del sistema. Se pueden seleccionar y borrar, o bien simplemente, comentarlas añadiendo una "#" al principio de sus líneas (en esta demostración se optó por la segunda opción).
  Ahora, si se vuelve con el navegador de red a la misma dirección de antes, seguirá pidiendo autenticación, pero, al no disponer el directorio de directivas "DirectoryIndex" ni "Options", el servidor no encontrará el directorio solicitado ni el archivo, dando un error 403 "Forbidden" y 404, como se puede ver a continuación.
  Para subsanar este problema, lo mejor es que, al editar el archivo "000-default.conf", se mantengan las directivas que no sobreescribirá el ".htaccess" antes mencionadas en el directorio con el que se esté trabajando o, si estas faltan, se añaden y se reinicia el servidor Apache.
  Luego se comprueba en el navegador de red que, efectivamente, tras autenticarse el usuario antes creado, accede a los recursos del servidor sin problema.
  Puede hacerse lo mismo cambiando el valor de "AllowOverride" por "Indexes", y haciendo los cambios necesarios en el fichero ".htaccess", para que sólo se sobreescriban las directivas de indexación de directorios.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.