Recherche de site Web

Comment protéger par mot de passe les 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 souhaitez empêcher les robots des moteurs de recherche d'accéder à votre site pendant qu'il est encore en phase de développement.

Dans ce didacticiel, je vais vous montrer comment protéger par mot de passe différents répertoires de sites Web sur le serveur Web Apache. Il existe de nombreuses façons d'y parvenir, mais nous en examinerons deux, 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 de vos annuaires Web, vous aurez besoin de :

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

Configurer le répertoire protégé par mot de passe Apache

1. Pour ce didacticiel, nous protégerons 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. Recherchez la racine du répertoire Apache Document pour /var/www/html et ajoutez les éléments suivants comme suggéré :

Sur la version Apache 2.2

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

Sur la version Apache 2.4

<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 pour 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 :

htpasswd -c filename username

L'option -c spécifie le fichier qui conservera le mot de passe crypté et username spécifie l'utilisateur pour l'authentification.

5. Notre fichier de mots 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 avec 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 nouveau mot de passe sont prêts. Nous devons maintenant dire à Apache de demander un mot de passe lors de l'accès à notre répertoire ciblé. Pour cela, créez un 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 testez votre configuration. Ouvrez votre navigateur et saisissez votre adresse IP ou votre nom de domaine dans le navigateur Web, par exemple :

http://ip-address

Vous devriez être invité à saisir votre nom d'utilisateur et votre mot de passe :

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

Notes complé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 qu'il vous suffira de générer le nom d'utilisateur et le mot de passe, puis de 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 publier dans la section ci-dessous.