sécurité - technique - htaccess
Protéger un répertoire…
Attention: cet article date du 16 janvier 2008
Ce qu'il contient est peut être encore valable...
... ou complètement obsolète!
La question m’est parfois posée pendant mes cours, et l’ami Frédéric vient tout juste de m’envoyer un mail à ce sujet. Et ce fut le tour d’Hervé à la machine à café…
Puisque le sujet passionne (et pour cause, la sécurité est cruciale sur le Net), autant fixer les esprits pour tout le monde !
Voici donc une petite méthode simple pour protéger un répertoire, dont l’accès ne sera autorisé qu’aux seuls individus connaissant l’identifiant et le mot de passe.
Rien de nouveau, certes, mais autant l’avoir sous la main…
Pour que tout ceci fonctionne, il faut quelques pré-requis. En l’occurence :
- un site hébergé sur Internet, et qui tourne sous Apache
- un répertoire à protéger (créé par FTP)
- 2 fichiers textes pour le protéger
Apache ?
Apache est LE logiciel serveur des sites web, qui équipe un bon gros pourcentage de ceux ci. Il est libre, gratuit, performant, et bien sécurisé (ce qui nous préoccupe).
Il en existe de nombreuses versions, et certains hébergeurs peuvent même le configurer pour leurs besoins précis, permettant un usage plus simple, ou plus sécurisé (car différent des autres).
Dans notre exemple, adapté du cas de Frédéric, nous allons retenir un hébergement chez PROXAD (et donc FREE). Avant d’aborder rapidement les autres cas, chez les autres hébergeurs…
Le répertoire à protéger
Il varie selon les cas, bien sûr. Vous devez le créer, via un logiciel de FTP. Le même logiciel qui vous permet de transférer vos fichiers sur votre site.
Ce répertoire doit être nommé selon les règles habituelles du net (sans espaces ni accents). On conseille généralement de nommer tout en minuscule, mais pour plus de sécurité, vous pouvez faire une exception, pour le rendre le plus abscon possible. Disons que XkdjsfZZ est un bon nom de répertoire…
Bien entendu, on évitera de l’appeler admin ou administration ou ce genre de noms sots…
Vous pouvez trouver des idées en utilisant les générateurs du site PassWordFinder.fr (en haut à droite, rubrique au hasard par exemple).
.htaccess et .htpasswd
Les deux fichiers à créer doivent porter ces noms spécifiques (surtout le premier). On va le voir le second peut changer. Attention cependant au point qui commence le nom des fichiers. Il sert à les rendre invisible sur le serveur. Vous pouvez avoir du mal à les créer sous Windows (le mieux étant de les créer sous des noms temporaire, par exemple htaccess.txt, de les transférer sur le serveur puis les renommer).
Le premier, .htaccess sert à spécifier ce que nous voulons faire (protéger un répertoire donc) et à préciser l’emplacement où se trouve le second, .htpasswd qui contient lui le couple indentifiant et mot de passe.
La syntaxe du premier est simple, en voici un exemple :
PerlSetVar AuthFile /XkdjsfZZ/.htpasswd
AuthName "Acces Restreint"
AuthType Basic
Require valid-user
La première ligne spécifie l’emplacement du second, la seconde précise le message qui s’affichera lors de la demande de mot de passe, la dernière signifiant qu’il faut un utilisateur valide.
Pour le second fichier, c’est encore plus simple, il contient l’identifiant et le mot de passe, avec un : entre les deux (deux points, donc).
rcarlier:xumechi
On place le tout dans le répertoire à protéger, et l’affaire est faite !
Pour le mot de passe, évitez le nom du chien ou de la copine. Là encore, PassWordFinder.fr (qui est fait pour trouver des mots de passe mémorisables facilement) peut vous aider.
Ce qui peut changer…
Bien sûr, vous pouvez changer le nom du répertoire si XkdjsfZZ ne vous semble pas pertinent. Il faudra donc changer le nom du répertoire sur la première ligne du .htaccess (en laissant bien les / par contre).
Le nom du fichier contenant l’identifiant peut également varier. A condition de le faire commencer par un . et d’en spécifier le nom exact sur la première ligne du .htaccess (avec les / donc).
Chez d’autres hébergeurs, il faudra spécifier l’emplacement absolu du fichier, par rapport à l’arborescence complète du serveur de l’hébergeur. Vous pouvez donc être amené à préciser ce genre de choses :
PerlSetVar AuthFile /users/c/carlier/www/XkdjsfZZ/.htpasswd
(à valider auprès de la documentation de l’hébergeur…)
Là où les choses se compliquent, c’est lorsqu’il faut crypter le mot de passe. Ce qui est parfois demandé chez certains. Pour cela, l’utilisation d’un outil de cryptage est nécessaire. Fourni avec Apache, justement, ou mis à disposition chez l’hébergeur. Ou sur le site Comment ça marche, vous pouvez trouver des explications complémentaire, ainsi qu’un formulaire de cryptage. Vous obtenez alors ce genre de contenu pour le .htpasswd :
richard:$1$2KRbBpVn$Oh/jMLZ6UbHWvLzhMQaoR0
Là encore, selon la version d’apache, cela peut différer…
merci!
Merci pour votre présentation et ces explications très claires.
Je crois toutefois que htaccess peut être utilisé pour rediriger le visiteur sur une autre page …?
Aussi, en effet
Le fichier htaccess a en effet plusieurs rôles : protection de répertoires, redirection en cas d’erreur (voir Refonte de site Internet), réécriture d’adresse (j’y reviendrais à l’occasion)…