Listado de directorio (Index Of)
Una lista de directorios se expone de forma inapropiada, lo que proporciona información potencialmente confidencial a los atacantes.
Una lista de directorio proporciona a un atacante el índice completo de todos los recursos ubicados dentro del directorio. Los riesgos y consecuencias específicos varían según los archivos enumerados y accesibles.
Deshabilitar Index Of en Apache
Las siguientes configuraciones fueron realizadas en un servidor Debian 9, Apache 2.4 y usuario con privilegios sudo. Dependiendo del caso puede elegir una de las siguientes opciones para deshabilitar el listado de directorio.
DEBIAN
1. Deshabilitar el módulo autoindex
Es el método más efectivo, pero se tiene que hacer un análisis previo para aplicarlo, ya que deshabilita esta funcionalidad a nivel global, es decir, si se quiere compartir archivos por HTTP (No recomendado) ya no se podría hacer, y los cambios afectarían a todas las aplicaciones bajo el servidor.
$ sudo a2dismod autoindex
Después de ejecutar se mostrará el mensaje de advertencia al cual responder con la siguiente frase:
To continue type in the phrase 'Yes, do as I say!' or retry by passing '-f': Yes, do as I say!
Reiniciar el servidor
Reiniciar el servidor
$ sudo systemctl restart apache2.service
2. Deshabilitar por archivo de configuración del sitio
Este método es el recomendable, ya que permite deshabilitar esta funcionalidad solo para el sitio en cuestión. Por ejemplo si se tiene el sitio www.sitio-de-prueba.com con el archivo de configuración (virtualhost) sitio-de-prueba.conf
. Agregar en el archivo la siguiente directiva:
<VirtualHost *:80>
......
<Directory /var/www/sitio-de-prueba>
AllowOverride All
Options -Indexes
</Directory>
.......
</VirtualHost>
Guardar y recargar la configuración.
$ sudo systemctl reload apache2.service
3. Deshabilitar a través del archivo .htaccess
Es una alternativa similar al archivo de configuración y se tiene modificar o crear dependiendo del caso el archivo .htaccess y agregar:
Options -Indexes
Guardar el archivo y reiniciar el servidor.
$ sudo systemctl restart apache2.service
El resultado de aplicar una de las configuraciones anteriores, será la restricción de listar archivos y carpetas.
RHE/CENTOS
1. Deshabilitar por archivo de configuración
Este método es el recomendable, ya que permite deshabilitar esta funcionalidad solo para el sitio en cuestión. Por ejemplo si se tiene el sitio www.sitio-de-prueba.com su correspondiente configuración está en el archivo de configuración httpd.conf
ubicado en /etc/httpd/conf/httpd.conf
Agregar en la configuración del virtualhost correspondiente al sitio la siguiente directiva:
<VirtualHost *:80>
......
<Directory /var/www/html/sitio-de-prueba>
AllowOverride All
Options -Indexes
</Directory>
.......
</VirtualHost>
Guardar y reiniciar el servidor.
$ sudo /etc/init.d/httpd restart
3. Deshabilitar a través del archivo .htaccess
Para esta opción se tiene que habilitar el módulo rewrite
. Es una alternativa similar al archivo de configuración y se tiene modificar o crear dependiendo del caso el archivo .htaccess y agregar:
Options -Indexes
Guardar el archivo y probar la configuración.
CPANEL
En ocasiones las páginas web de las entidades están publicadas en un servicio de web hosting al acceden desde el cpanel, y la configuración por defecto mantiene habilitado los índices en los directorios del cpanel y por ende en la capeta public_html
.
- Ingresar a cpanel, buscar y seleccionar la opción
Índices
.2.Seleccionar la carpeta
public_html
.3.Seleccionar la opción
Sin índice
.
Aplicar la misma configuración en el resto de carpetas del sitio, ya que desde cpanel no es posible aplicar una configuración global que deshabilite el index of.
Tambien se puede aplicar las siguientes opciones:
A. Desde el cPanel
- Accedemos al panel de control (cPanel) y buscamos el menú de opciones Herramientas Avanzadas.
- Entramos en la sección Index Manager donde se nos mostrará un árbol con todos los directorios de nuestra web.
- Navegamos hasta el directorio que deseemos proteger. Para entrar en los directorios hay que hacer click en el icono que está a la izquierda del nombre de la carpeta. Cuando encontremos la carpeta que deseamos proteger hacemos click en el nombre de la misma donde podemos marcar la opción No Indexar.
B. Desde el archivo .htaccess
- Introduzca la siguiente línea de código
Options -Indexes
- También se puede evitar que se listen unos determinados archivos en concreto según su extensión. Por ejemplo, para evitar que se listen archivos de extensión .php y .html escriba:
IndexIgnore *.php *.html
- Este método sirve para que se listen los directorios pero haciendo que estos aparezcan en blanco. De esta forma cualquier tipo de fichero no se mostrará a la hora de acceder a su correspondiente carpeta:
IndexIngnore *
C. Desde un archivo index en blanco
Esta solución es sencilla, solo se debe crear un documento en blanco llamado index.html (o index.php) para evitar el listado de los archivos cuando se acceda al directorio. El problema de este método es que se debe añadir un archivo index en blanco en cada uno de los directorios en los que no se quiere mostrar los archivos.