Désactiver le listing de fichiers « index of » dans les répertoires web

écrit par Aymeric

Attention à Googlebot, l'indiscret

En utilisant les opérateurs de recherche Google dernièrement, je me suis encore rendu compte que le nombre de listing de répertoires indexés était hallucinant... Certains webmasters oublient parfois l'essentiel en terme de sécurité: l'affichage des fichiers contenus dans les dossiers (je ne parle même pas des freenautes qui utilisent le FTP perso pour stocker des fichiers privés voir confidentiels... une vraie cata).

Pour rappel, quand vous appelez la racine d'un répertoire d'un site via votre navigateur, le serveur Web peut tenter d'afficher les fichiers contenus dans ce répertoire si jamais les fichiers à afficher par défaut (index.html, index.php par exemple) n'existent pas.

Parfois, il suffit de quelques minutes comme le renommage de fichier index.php ou la suppression temporaire d'un index.htm et un passage à ce moment là de GoogleBot pour qu'il trouve l'index de votre répertoire et récupère des liens vers des fichiers de type sauvegarde de base de données & co. peu souhaitable... Il n'est pas compliqué d'ailleurs en enchaînant les bonnes commandes Google de récupérer des mots de passe ou listing d'adresses mail, surtout avec la commande filetype :-/

Voici une petite piqûre de rappel pour bien protéger vos fichiers des regards indiscrets sur différents serveurs Web et empêcher l'indexation des dossiers.

A - APACHE

Trois possibilitées:

1) Dans la configuration globale:

Il vous faudra d'abord localiser le fichier de configuration principale: httpd.conf (ou les fichiers de vhosts si vous utilisez hôtes virtuels). Voilà où vous le trouverez (à priori):

- Debian et les autres: /etc/apache2/httpd.conf
- Freebsd: /usr/local/etc/apache22/httpd.conf
- Windows:
Apache 1.x: C:\Program Files\Apache Group\Apache2\conf\httpd.conf
Apache 2.0.x: C:\Program Files\Apache Group\Apache2\conf\httpd.conf
Apache 2.2.x: C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf
- Mac: /etc/httpd/httpd.conf

Le fichier httpd.conf d' Apache contient:


Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/

Afin d' empêcher Apache de lister le contenu des répertoires, on va transformer le Options Indexes en Options -Indexes, d'ailleurs je désactiverais aussi les Symlinks tant qu'on y est, pour que les liens symboliques ne soient pas suivis, on ne sait jamais...


Options -Indexes -FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/

2) Directement dans le répertoire racine du serveur Web:

Cette configuration n'est possible que si la directive AllowOverride Indexes ou AllowOverride All est activée sur le répertoire dans la configuration du serveur ou de l'hôte virtuel

Créer un fichier .htaccess contenant

Options -Indexes

et l'envoyer dans le répertoire qui ne doit pas afficher l'index. La directive se répercutera dans les sous-répertoires si elle est placée à la racine du serveur Apache.

3) Désactiver le module autoindex

Encore plus radical: désactiver le module "autoindex" d'Apache dans le fichier de configuration httpd.conf en commentant la ligne suivante:

#LoadModule autoindex_module modules/mod_autoindex.so

Sinon via la console sous Debian et d'autres distributions similaires, via la commande a2dismod vous pourrez le désactiver:

a2dismod autoindex

Apache site officiel

B - Nginx

L'affichage du contenu des dossiers se fait via le module Autoindex de Nginx. Il est activé par défaut avec la directive autoindex à "off", donc à priori rien à faire dans une installation standard de Nginx. Dans le cas contraire, il faut modifier le fichier de configuration nginx.conf.
Vous le trouverez dans ce répertoire: /etc/nginx/nginx.conf

Dans la partie Location ajouter autoindex off; ou retirer autoindex on; :

location  /  {
  autoindex  off;
}

Dans le cas ou on souhaiterait juste afficher le contenu d'un seul répertoire (ex: répertoire /download), ajoutez les lignes suivantes au fichier de configuration:

location  /download  {
  autoindex  on;
}

Deux paramètres optionnels permettent:
- d'afficher le poids des fichiers arrondi (en Kb, Mb, Gb et non en bytes) -> autoindex_exact_size off (on par défaut)
- d'afficher la date des fichiers -> autoindex_localtime on (off par défaut)

Nginx site officiel

C - Lighttpd

L'affichage du contenu des dossiers se fait via le module mod_dirlisting de LightHttpd. Il est activé par défaut.
Pour le déactiver, il faut modifier le fichier de configuration.

Linux: /etc/lighttpd/lighttpd.conf
Windows: C:\Program Files\LightTPD\conf\lighttpd-inc.conf
MAC: /opt/local/etc/lighttpd/

dir-listing.activate = "enable"

par

dir-listing.activate = "disable"

On a aussi la possibilité de ne l'activer que pour certains répertoires:

$HTTP["url"] =~ "^/download($|/)" {
     dir-listing.activate = "enable" 
   }

Lighthttpd a pas mal d'options concernant l'affichage des index (bon ça va un peu à contre sens- de mon article mais c'est ibon à savoir) comme l'appel d'une feuille de style spécifique dir-listing.external-css, l'affichage d'un header.txt etc. Plus d'infos ici: Module mod_dirlisting

LightHttpd site officiel

D - LiteSpeed

Sur ce petit serveur Web "deux fois plus rapides" qu'Apache avec mod_php (1 Litespeed = 2 Apache selon le site officiel), l'indexation des répertoires est activée par défaut si vous n'avez pas de fichier index dans vos répertoires. Il vous faudra accéder à l'interface web pour la configuration du server (http://ip:31000 par défaut) pour désactiver l'indexation auto:
Dans le menu principal, Configuration -> Server
- Onglet "General", descendre jusqu'à "Index Files" puis Edit
- Mettre l'option "Auto Index" à No
et redémarrer le serveur.

Litespeed site officiel

E - IIS

Bon en fait je ne connais que très peu IIS, mais a priori après l'ouverture du gestionnaire de services Internet IIS et suite à une bonne dizaine de clics , la sélection d'onglets multiples, des clics gauches et/ou droits, il doit y avoir une option qui traîne quelque part du genre "Exploration de répertoires" à décocher...
Bon allez, un petit coup de pouce : beurk

Après la configuration pour le listage des répertoires

N'oubliez pas de redémarrer l'application sur le serveur afin que les paramètres soient pris en compte. Si vous ne voulez pas toucher à la configuration du serveur, il vous reste une ultime solution: créer un fichier index.html vide dans tout les répertoires de votre site, bon courage :-))

PS: Si jamais des listings de répertoires de votre site sont déjà indexés, tout n'est pas perdu: supprimer les URL en question avec Google Webmasters Tools.

Sources:
- Lighthttpd
- Nginx

N'hésitez pas à laisser vos commentaires si jamais j'ai fait des erreurs ou pour ajouter d'autres serveurs web à la liste afin de compléter l'article.

écrit dans Apache par Aymeric | 6 commentaires

6 commentaires "Désactiver le listing de fichiers « index of » dans les répertoires web"

  • Jérôme dit:
  • La commande filetype de Google, amie ou ennemie ? dit:
  • Easy Entreprise dit:
  • Antoine dit:
  • Sh4dows dit: