Recherche de site Web

Comment protéger par mot de passe les répertoires Web dans Nginx


Les responsables de projets Web doivent souvent protéger leur travail d’une manière ou d’une autre. Les gens demandent souvent comment protéger par mot de passe leur site Web alors qu'il est encore en développement.

Dans ce didacticiel, nous allons vous montrer une technique simple mais efficace pour protéger un répertoire Web par mot de passe lors de l'exécution de Nginx en tant que serveur Web.

Si vous utilisez le serveur Web Apache, vous pouvez consulter notre guide sur la protection par mot de passe d'un répertoire Web :

  1. Protéger les répertoires Web par mot de passe dans Apache

Exigences

Pour réaliser les étapes de ce didacticiel, vous aurez besoin d'avoir :

  • Serveur Web Nginx installé
  • Accès root au serveur

Étape 1 : Créer un utilisateur et un mot de passe

1. Pour protéger par mot de passe notre répertoire Web, nous devrons créer le fichier qui contiendra notre nom d'utilisateur et notre mot de passe cryptés.

Lorsque vous utilisez Apache, vous pouvez utiliser l'utilitaire « htpasswd ». Si cet utilitaire est installé sur votre système, vous pouvez utiliser cette commande pour générer le fichier de mot de passe :

htpasswd -c /path/to/file/.htpasswd username

Lors de l'exécution de cette commande, il vous sera demandé de définir un mot de passe pour l'utilisateur ci-dessus et après cela, le fichier .htpasswd sera créé dans le répertoire spécifié.

2. Si cet outil n'est pas installé, vous pouvez créer le fichier .htpasswd manuellement. Le fichier doit avoir la syntaxe suivante :

username:encrypted-password:comment

Le nom d'utilisateur que vous utiliserez dépend de vous, choisissez celui que vous voulez.

La partie la plus importante est la manière dont vous générerez le mot de passe pour cet utilisateur.

Étape 2 : générer un mot de passe crypté

3. Pour générer le mot de passe, utilisez la fonction « crypt » intégrée à Perl.

Voici un exemple de cette commande :

perl -le 'print crypt("your-password", "salt-hash")'

Un exemple concret :

perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'

Maintenant, ouvrez un fichier et mettez votre nom d'utilisateur et celui généré dans la chaîne, séparés par un point-virgule.

Voici comment:

vi /home/tecmint/.htpasswd

Mettez votre nom d'utilisateur et votre mot de passe. Dans mon cas, cela ressemble à ceci :

tecmint:1xV2Rdw7Q6MK.

Enregistrez le fichier en appuyant sur « Échap » suivi de « :wq ».

Étape 3 : Mettre à jour la configuration de Nginx

4. Maintenant, ouvrez et modifiez le fichier de configuration Nginx associé au site sur lequel vous travaillez. Dans notre cas, nous utiliserons le fichier par défaut à l'adresse :

vi /etc/nginx/conf.d/default.conf       [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf                [For CentOS based systems]


vi /etc/nginx/sites-enabled/default     [For Debian based systems]

Dans notre exemple, nous protégerons par mot de passe la racine du répertoire nginx, qui est : /usr/share/nginx/html.

5. Ajoutez maintenant la section de deux lignes suivante sous le chemin que vous souhaitez protéger.

auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;

Enregistrez maintenant le fichier et redémarrez Nginx avec :

systemctl restart nginx
OR
service nginx restart

6. Copiez/collez maintenant cette adresse IP dans votre navigateur. Un mot de passe devrait vous être demandé :

C'est ça! Votre répertoire Web principal est désormais protégé. Lorsque vous souhaitez supprimer la protection par mot de passe sur le site, supprimez simplement les deux lignes que vous venez d'ajouter au fichier .htpasswd ou utilisez la commande suivante pour supprimer l'utilisateur ajouté d'un fichier de mot de passe.

htpasswd -D /path/to/file/.htpasswd username