Nginx : comment configurer l’authentification HTTP basique ? | IT-Connect

Nginx : comment configurer l’authentification HTTP basique ?

I. Présentation

Dans ce tutoriel, nous allons voir comment configurer l’authentification HTTP basique sur un serveur Web Nginx pour protéger l’accès à un site par mot de passe. Cet accès peut s’appliquer seulement à une page ou à un dossier spécifiques, ce qui me semble intéressant pour protéger l’accès à une interface d’administration d’un site, tout en laissant la partie publique accessible sans mot de passe.

 

II. Protection par mot de passe avec Nginx

Pour ajouter cette authentification, nous allons reprendre la méthode du fichier « .htpasswd ». Cela nécessite d’installer le paquet apache2-utils, bien que l’on soit avec un serveur Nginx. Cela n’installe pas Apache en lui-même, seulement quelques outils dont htpasswd.

Mettez à jour le cache des paquets et installez apache2-utils :

sudo apt-get update
sudo apt-get install apache2-utils

Une fois que c’est fait, nous allons créer un fichier qui va contenir un identifiant et un mot de passe. Ce fichier sera stocké dans « /etc/nginx/« , se nomme « .htpasswd » et l’on va ajouter l’utilisateur « florian ». Ce qui donne :

sudo htpasswd -c /etc/nginx/.htpasswd florian

Il faudra indiquer, deux fois, le mot de passe de l’utilisateur (ce compte n’a aucun lien avec le compte local de Linux).

Remarque : pour des raisons de sécurité, il est important que le fichier .htpasswd ne soit pas créé au sein du répertoire du site Internet directement. De cette façon, il n’est pas accessible aux clients qui visitent votre site Web, mais le serveur Nginx peut y accéder.

On peut considérer que le fichier .htpasswd est une « petite base de données » de comptes utilisateurs dans un fichier à plat. Si l’on regarde le contenu du fichier, on peut voir que le mot de passe n’est pas en clair.

sudo cat /etc/nginx/.htpasswd

Si l’on se réfère à la documentation, on sait que l’on utilise l’algorithme MD5 pour calculer le hash du mot de passe, car la chaîne commence par « $apr1$« . Voici ce qui est précisé dans la documentation : «  « $apr1$ » + le résultat d’un algorithme spécifique à Apache utilisant un condensé MD5 réitéré (1000 fois) de combinaisons variées du mot de passe et d’une source d’entropie sur 32 bits. »

Pour créer des comptes supplémentaires et les ajouter au même fichier sans l’écraser, voici la syntaxe à utiliser (exemple pour créer le compte itconnect) :

sudo htpasswd /etc/nginx/.htpasswd itconnect

Maintenant, nous allons configurer notre site sous Nginx pour qu’il prenne en charge l’authentification et notre fichier .htpasswd.

Commençons par ouvrir le fichier de configuration du site :

sudo nano /etc/nginx/sites-enabled/it-connect.tech

Nous devons insérer deux lignes dans notre fichier au sein d’une section « location » du bloc « server » correspondant à notre site.

auth_basic "Zone securisee - Authentification requise";
auth_basic_user_file /etc/nginx/.htpasswd;

L’option « auth_basic » sert à définir le message qui s’affichera au sein de la fenêtre d’authentification, tandis que l’option « auth_basic_user_file » sert à spécifier le chemin vers le fichier .htpasswd.

Pour appliquer l’authentification sur toutes les pages du site, on doit utiliser un bloc « location /  » pour matcher avec toutes les URL de notre site. Ce qui donne :

Une fois le fichier édité, il suffit de sauvegarder les modifications et de redémarrer Nginx :

sudo systemctl restart nginx

Dernière étape : tester que notre configuration bien. On se rend tout simplement sur notre site, et là une fenêtre d’authentification apparaît ! On doit se connecter avec un compte présent dans le fichier .htpasswd pour accéder au site, sinon on obtiendra une erreur : 401 Authorization Required.

Enfin, si l’on veut que cette restriction s’applique seulement sur l’interface d’administration du site, il faut adapter la directive « location« . Si l’interface d’administration est accessible en indiquant « /admin/ » dans l’URL, par exemple « https://www.it-connect.tech/admin/« , il faut ajouter ce bloc dans le fichier :

location /admin/ 
    try_files $uri $uri/ =404;
    auth_basic "Zone securisee - Authentification requise";
    auth_basic_user_file /etc/nginx/.htpasswd;

Voilà, redémarrez le service Nginx et le tour est joué ! 😉

Hébergez votre site à partir de 2$ sur 👉👉👉 https://www.tnctech.ca

À propos Santana

Analyste en cybersécurité avec 5 ans d'expérience dans la protection des systèmes d'information contre les menaces et les attaques. Expertise dans la surveillance des réseaux, l'analyse des vulnérabilités, et la gestion des incidents de sécurité. Passionnée par l'innovation technologique et la mise en œuvre de solutions de sécurité robustes pour protéger les données sensibles et assurer la conformité réglementaire.

Vérifiez également

Debian – comment installer Nginx en tant que serveur Web ?

Debian – comment installer Nginx en tant que serveur Web ?

Table de Matieres0.1 I. Présentation0.2 II. Installer Nginx0.3 III. Créer un premier site dans Nginx1 …

Configurer Nginx en tant que reverse proxy

Configurer Nginx en tant que reverse proxy

Table de Matieres1 I. Présentation2 II. Architecture réseau3 III. Configuration de Nginx4 I. Présentation Lorsque …

Reverse proxy Nginx : Load-balancing et Fail-Over

Reverse proxy Nginx : Load-balancing et Fail-Over

Table de Matieres1 I. Présentation2 II. Reverse proxy, Load-Balancing & Fail-Over3 III. Présentation de l’architecture …

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.