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
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)
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
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.
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.
Merci pour ce rappel, c’est vrai qu’au niveau sécurité c’est hyper important.
Tiens, c’est rare qu’un article de ce genre traite aussi de Nginx et pas seulement d’Apache. En tout cas merci c’est complet.
Merci pour le rappel de ces quelques lignes de code. Important en effet. En combinant bien les opérateurs Google, on peut même parfois récupérer des identifiants et mdp de serveurs http://ftp... Google is evil !
La toute dernière solutions avec les fichiers index dans chaque dossier, c’est possible de le faire en modifiant la config d’apache sans avoir a mettre un fichier index partout ?
Oui avec la directive « Options -Indexes », c’est en haut de l’article 😉