El listado de directorios es una función del servidor que muestra los archivos y carpetas cuando no hay un archivo de índice. Deshabilitarlo es un paso crítico en la seguridad de un sitio web para evitar la divulgación de información. Este artículo explica los riesgos del listado de directorios, cómo desactivarlo en Apache, Nginx e IIS, y las mejores prácticas para proteger los directorios de su servidor.
Qué es el listado de directorios y por qué debe desactivarlo
El listado de directorios es el comportamiento predeterminado de los servidores web que muestra todo el contenido de un directorio cuando no existe un archivo de índice como index.html, index.php o default.htm. El navegador muestra los archivos y carpetas como enlaces, lo que permite a los visitantes acceder o descargarlos directamente.
Aunque esta función puede ser útil para compartir archivos rápidamente o para depuración, representa un grave riesgo de seguridad. Los atacantes pueden aprovechar el listado de directorios para descubrir archivos sensibles como copias de seguridad de bases de datos, archivos de configuración (.env, config.php), registros o scripts que deberían permanecer privados. Esta información puede usarse para ataques posteriores como navegación forzada o enumeración de directorios.
Dejar activado el listado de directorios es como entregar un mapa de todos sus archivos confidenciales a posibles atacantes.
Ejemplo de un listado de directorios activo
Si el listado de directorios no está deshabilitado, cuando alguien accede a un directorio sin un archivo de índice, verá una pantalla similar a la siguiente.

Cómo deshabilitar el listado de directorios en diferentes servidores
El método para deshabilitar el listado de directorios depende del servidor web que esté utilizando. A continuación se presentan guías técnicas para los servidores más comunes: Apache, Nginx e IIS.
1. Deshabilitar el listado de directorios en Apache
En Apache, puede controlar el listado de directorios mediante el archivo .htaccess o la configuración del host virtual. Se utilizan principalmente dos directivas: Options -Indexes e IndexIgnore.
Usar Options -Indexes
Agregue la siguiente línea a su archivo .htaccess en el directorio raíz o dentro de un bloque <Directory> en la configuración principal:
Options -IndexesEsta directiva evita que Apache genere listados de directorios. Cuando un usuario accede a un directorio sin un archivo de índice, el servidor devuelve una respuesta 403 Forbidden. Este es el método recomendado, ya que bloquea completamente el acceso.

Usar IndexIgnore
Una alternativa es la directiva IndexIgnore, que oculta archivos o directorios específicos del listado. Ejemplo:
IndexIgnore *Este comando oculta todos los archivos, haciendo que el listado de directorios parezca vacío. Sin embargo, a diferencia de Options -Indexes, el directorio sigue siendo accesible si alguien conoce el nombre exacto del archivo. Por lo tanto, IndexIgnore es menos seguro.

Advertencia: Si utiliza Options -Indexes pero necesita permitir el acceso a ciertos archivos, puede combinarlo con DirectoryIndex o reglas de reescritura.
2. Deshabilitar el listado de directorios en Nginx
Nginx utiliza el módulo ngx_http_autoindex_module para gestionar el listado de directorios. Por defecto, autoindex está desactivado. Sin embargo, puede asegurarlo agregando la siguiente configuración dentro de un bloque location o server:
location / {
autoindex off;
}Para deshabilitarlo en todo el servidor, colóquelo en el bloque http o server. Para verificar si autoindex está activo, use nginx -T para ver la configuración completa.
3. Deshabilitar el listado de directorios en IIS (Internet Information Services)
En IIS, el listado de directorios se gestiona mediante la función Exploración de directorios. Puede deshabilitarlo a través del Administrador de IIS:
- Abra el Administrador de IIS, seleccione el sitio o directorio que desea configurar.
- Haga doble clic en la función Exploración de directorios.
- En el panel Acciones, haga clic en Deshabilitar.
Alternativamente, puede modificar la configuración mediante el archivo web.config agregando el siguiente elemento:
<configuration>
<system.webServer>
<directoryBrowse enabled="false" />
</system.webServer>
</configuration>Método alternativo: crear archivos de índice vacíos
Si no tiene acceso a la configuración del servidor, el método más sencillo es crear un archivo de índice vacío en cada directorio. Simplemente cree un archivo llamado index.html (o index.php) sin contenido. Cuando los usuarios accedan al directorio, el servidor mostrará una página en blanco o redirigirá a ese archivo.
Este enfoque funciona para sitios web pequeños, pero se vuelve poco práctico para directorios con miles de carpetas. Además, un archivo de índice vacío sigue siendo accesible y no ofrece protección si alguien adivina los nombres de los archivos.
Para máxima seguridad, combine los archivos de índice vacíos con la desactivación del listado de directorios a nivel de servidor.
Mejores prácticas de seguridad para directorios
Además de deshabilitar el listado de directorios, considere estos pasos adicionales para fortalecer la seguridad de sus directorios:
- Restrinja el acceso con autenticación: Use
.htpasswden Apache o la autenticación integrada en Nginx/IIS para proteger directorios administrativos. - Coloque los archivos sensibles fuera de la raíz de documentos: Almacene los archivos de configuración y datos críticos en directorios no accesibles a través de la web.
- Audite regularmente: Use escáneres de seguridad o rastreadores para detectar directorios que aún tengan el listado habilitado.
- Deshabilite la ejecución de scripts en directorios de carga: Use
Options -ExecCGIen Apache o reglas equivalentes en otros servidores.
OWASP (Open Web Application Security Project) recomienda deshabilitar siempre el listado de directorios como parte del endurecimiento del servidor. Puede leer su guía oficial en la página de OWASP sobre navegación forzada.
Conclusión
Deshabilitar el listado de directorios es un paso fundamental para asegurar su sitio web. Siguiendo las guías anteriores, puede prevenir la divulgación accidental de información. Elija el método que se adapte a su infraestructura de servidor: use Options -Indexes en Apache, autoindex off en Nginx o desactive la Exploración de directorios en IIS. Combine estas medidas con otras prácticas de seguridad para crear una defensa en profundidad.
Para obtener más documentación, visite las páginas oficiales de Apache mod_autoindex y de Nginx ngx_http_autoindex_module.


