Recherche de site Web

Comment protéger par mot de passe des répertoires Web dans Apache à l’aide du fichier .htaccess


Lorsque vous gérez des projets en ligne, vous devez souvent limiter l’accès à ce projet afin de le protéger du monde extérieur. Il peut y avoir différentes raisons à cela – par exemple, vous voulez empêcher les robots des moteurs de recherche d’accéder à votre site alors qu’il est encore en phase de développement.

Dans ce tutoriel, je vais vous montrer comment protéger par mot de passe différents répertoires de sites Web dans le serveur Web Apache. Il existe de nombreuses façons d’y parvenir, mais nous allons passer en revue deux d’entre elles qui sont les plus couramment utilisées.

La première méthode configure la protection par mot de passe directement dans le fichier de configuration d’Apache, tandis que la seconde utilise le fichier .htaccess.

Exigences

Afin de configurer la protection par mot de passe pour vos annuaires Web, vous devez disposer des éléments suivants :

  • Un serveur web Apache fonctionnel
  • La directive AllowOverride AuthConfig doit être activée dans le fichier de configuration Apache.

Configuration du répertoire protégé par mot de passe Apache

1. Pour ce tutoriel, nous allons protéger le répertoire racine principal du web /var/www/html.  Pour protéger ce répertoire, ouvrez la configuration de votre Apache :

---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf

---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf

2. Trouvez la racine du répertoire Apache Document pour /var/www/html et ajoutez les éléments suivants comme suggéré :

Sur la version 2.2 d’Apache

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All
Order allow,deny
Allow from all 
</Directory>

Sur la version 2.4 d’Apache

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>

3. Enregistrez le fichier et redémarrez Apache à l’aide de la commande suivante :

--------------- On Systemd -------------------
systemctl restart httpd         [On RedHat based systems]
systemctl restart apache2       [On Debian based systems]


--------------- On SysV init -----------------
service httpd restart           [On RedHat based systems]
service apache2 restart         [On Debian based systems]

4. Nous allons maintenant utiliser la commande htpasswd pour générer le nom d’utilisateur et le mot de passe de notre répertoire protégé. Cette commande est utilisée pour gérer les fichiers utilisateur pour l’authentification de base.

La syntaxe générale de la commande est la suivante :

# htpasswd -c filename username

L’option -c spécifie le fichier qui conservera le mot de passe chiffré et le nom d’utilisateur spécifie l’utilisateur pour l’authentification.

5. Notre fichier de mot de passe doit être situé en dehors du répertoire accessible sur le Web d’Apache afin qu’il soit bien protégé. Pour cela, nous allons créer un nouveau répertoire :

# mkdir /home/tecmint

6. Après cela, nous générerons notre nom d’utilisateur et notre mot de passe qui seront stockés dans ce répertoire :

# htpasswd -c /home/tecmint/webpass tecmint

Une fois que vous aurez exécuté cette commande, vous devrez entrer deux fois un mot de passe pour notre nouvel utilisateur « tecmint » :

Après cela, nous devrons nous assurer qu’Apache est capable de lire le fichier « webpass ». Pour cela, vous devrez modifier la propriété de ce fichier à l’aide de la commande suivante :

---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass

7. À ce stade, notre nouvel utilisateur et notre mot de passe sont prêts. Maintenant, nous devons dire à Apache de demander un mot de passe lors de l’accès à notre répertoire ciblé. Pour cela, créez le fichier appelé .htaccess dans /var/www/html :

# vi /var/www/html/.htaccess

Ajoutez-y le code suivant :

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8. Enregistrez maintenant le fichier et mettez votre configuration à l’épreuve. Ouvrez votre navigateur et entrez votre adresse IP ou votre nom de domaine dans le navigateur Web, par exemple :

http://ip-address

Vous devriez être invité à entrer le nom d’utilisateur et le mot de passe :

Entrez le nom d’utilisateur et le mot de passe que vous avez définis pour accéder à votre page.

Notes supplémentaires

Si vous utilisez un hébergement mutualisé, vous n’aurez probablement pas accès au fichier de configuration Apache. Cependant, la plupart des sociétés d’hébergement ont activé l’option « AllowOverride All » par défaut. Cela signifie que vous n’aurez qu’à générer le nom d’utilisateur et le mot de passe, puis à sélectionner le répertoire que vous souhaitez protéger. Cela facilite considérablement votre tâche.

Conclusion

J’espère que vous avez trouvé ce tutoriel utile et vous aidera à atteindre votre objectif. Si vous avez des questions ou des commentaires, n’hésitez pas à les poster dans la section ci-dessous.

Articles connexes: