Vous êtes sur la page 1sur 2

Protéger une page web avec .htaccess et .

htpassw

I. Présentation
Il peut parfois être utile d'avoir à protéger certains contenus ou pages web par une authentification simple.
Le but est alors de ne laisser passer que ceux qui ont les identifiants requis. Cela se fait trés simplement
grace aux fichiers ".htaccess" et ".htpasswd" avec Apache2, c'est ce que nous allons voir dans ce tutoriel.
Nous allons ici supposer qu'au moins Apache2 est installé sur le serveur et que votre architecture web
démarre de "/var/www/". Pour l'exemple du tutoriels, nous allons protéger le dossier "/var/www/site1"
par un fichier ".htaccess".

II. Construction des fichiers


On se rend dans donc le dossier en question :
cd /var/www/site/

Ensuite, nous allons créer le premier fichier qui sera ".htaccess". Le fichier ".htaccess" est un fichier
caché (il commence par un "."). Cela signifie qu'on ne pourra pas le voir avec un simple "ls" mais qu'il
faudra utiliser "ls -a" pour le voir.
Le fichier ".htaccess" est le fichier qui contient les paramètres qui s'appliquerons au dossier web dans
lequel il se situe. Il peut servir à modifier localement la configuration d'Apache 2 afin de faire des choses
trés puissantes maisi ici nous l'utiliserons simplement pour demander une authentification et aller vérifier
les champs saisis par l'utilisateur avec un fichier contenant ces identifiants.
Voici ce qu'il faut mettre dans ce fichier :
AuthUserFile /var/www/site/.htpasswd
AuthName "Accès restreints - Veuillez vous authentifier"
AuthType Basic
require valid-user

Nous allons maintenant expliquer les différents paramètres ce ce fichier :


• AuthUserFile : Désigne le chemin du fichier où seront stockés les identifiants qui seront valident
pour la connexion.
• AuthGroupFile /dev/null : Ce fichier peut désigner un fichier où seront stockés un ou plusieurs
groupes d'utilisateurs qui seront acceptés à l'authentification. Nous l'utiliserons pas dans notre cas
mais il s'agit d'un paramètre qui doit obligatoirement être présent , nous pointerons donc vers un
répertoires vide.
• AuthName "Accés restreints - Veuillez vous authentifier" : C'est ce qui va être affiché sur la
boite de dialogue d'authentification qui apparaitra sur l'écran de l'utilisateur. On y indique
généralement un avertissement à l'utilisateur. Il est nécessaire de l'entourer de guillemets si il
contient des espaces.
• AuthBasic : Désigne le type d'authentification à utilisateur. Ce paramètre peut être "None" qui
désactive l'authentification, "Basic" qui utilise le module "mod_auth_basic", le "digest" qui
utilise le module "mod_auth_digest" où "Form" qui utilise le module "mod_auth_form".
• require valid-user : Désigne les conditions qui doivent être validées pour laisser passer
l'utilisateur. Ici il ne s'agit que de la validation des identifiants saisis par l'utilisateur. Tous les
utilisateurs valident pourront donc accéder à la ressources en question
Nous allons maintenant créer le fichier ".htpasswd" en question, celui contiendra donc les identifiants
valident à la connexion. La création du fichier et des identifiants utilisateurs peut donc se faire directement
en ligne de commande :
htpasswd -c /var/www/site/.htpasswd nom_utilisateur
On doit ensuite saisir le mot de passe.Il faut noter que l'option "-c" (pour créer) n'intervient que si le
fichier n'existe pas déja. Nous pourrons alors aller jeter une œil dans ce nouveau fichier ".htpasswd".

vim /var/www/site/.htpasswd

Nous voyons alors que notre mot de passe n'est pas en clair dans notre fichier mais hashé en md5. Ce qui
est une sécurité supplémentaire native à Apache 2 lors de la création de fichier ".htpasswd".
Pour ajouter une utilisateur dans un fichier ".htpasswd" déja existant, on pourra utiliser la même
commande en ommetant le "-c" qui a pour fonction de créer le fichier en même temps. Par sécurité, il est
possible de nommer le fichier ".htpasswd" autrement, le tout est qu'il commence par un "." et qu'il soit
bien indiqué dans le fichier ".htaccess".

III. Configuration d'Apache


Nous devons maintenant aller modifier quelque peu la configuration d'Apache dans le fichier
"/etc/apache2/conf-available/security.conf" :

Nous devons ici changer le paramètre "AllowOverride" de "None" à "All". Si votre site fait partie d'une
architecture avec des vHosts, vous devrez aller dans le fichier de ce vHost plutôt que dans le fichiers
"default". Le paramètre "AllowOverride" permet de déterminer quel fichier ou configuration est autorisé
a prendre en priorité la configuration d'Apache 2. Paramétré à "None", tout fichier ".htaccess" ou qu'il soit
situé sera ignoré par Apache 2. Si on le paramètre à "All", Apache 2 pourra lire les fichier ".htaccess" qui
modifieront ainsi localement (dans la partie de notre site à protéger) la configuration d'Apache en
demandant une authentification.
Une fois cette modification faite, nous pourrons vérifier la configuration d'Apache pour voir si elle est
correcte avant de redémarrer (pour ne pas stopper le service sans savoir le rallumer)
apachectl configtest

Puis si cette commande nous renvoie un retour positif, redémarrer le service Apache2 :
service apache2 restart

IV. Aller plus loin : rendre publique une sous-partie du site protégé
Dans notre site "/var/www/site", nous souhaitons rendre une partie publique la partie
"/var/www/site/open". Nous allons recréer un fichier ".htaccess" dans "/var/www/site/open" dans lequel
nous allons mettre les directives suivantes :
AuthType None
Satisfy Any

Le fichier ".htaccess" de "/var/www/site/open" va donc être lu par Apache2 et se substituer au fichier


".htaccess" de "/var/www/site/" pour affecter d'autres règles au dossier "/var/www/site/open". Ici nous
indiquons donc qu'aucune méthode d'authentification n'est à utiliser et que toutes demandes d'accès seront
satisfaites.
Nous aurons donc un accès restreints à "/var/www/site/" mais pas à "/var/www/site/open/"