Comment configurer l'authentification HTTP de base dans Nginx

Comment configurer l'authentification HTTP de base dans Nginx

L'authentification HTTP de base est un mécanisme de sécurité pour restreindre l'accès à votre site Web / application ou à certaines parties de celle-ci en configurant une authentification simple nom d'utilisateur / mot de passe. Il peut être utilisé essentiellement pour protéger l'ensemble du serveur HTTP, des blocs de serveur individuels (hôtes virtuels en Apache) ou des blocs de localisation.

Lire aussi: Comment configurer des hôtes virtuels basés sur le nom et basés sur IP (blocs de serveurs) avec Nginx

Comme son nom l'indique, ce n'est pas une méthode sécurisée sur laquelle s'appuyer; vous devez l'utiliser en conjonction avec d'autres mesures de sécurité plus fiables. Par exemple, si votre application Web s'exécute sur HTTP, les informations d'identification de l'utilisateur sont transmises en texte brut, vous devriez donc envisager d'activer HTTPS.

Le but de ce guide est de vous aider à ajouter une couche de sécurité petite mais utile pour protéger le contenu privé / privilégié sur vos applications Web (comme, mais sans s'y limiter les équipes de l'administrateur). Vous pouvez également l'utiliser pour empêcher l'accès à un site Web ou à une application qui est toujours en phase de développement.

Exigences

  1. Installez la pile LEMP dans Centos / Rhel 7
  2. Installez la pile LEMP dans Ubuntu / Debian

Créer un fichier utilisateur d'authentification HTTP

Vous devez commencer par créer un fichier qui stockera Identifiant Mot de passe paires. Nous utiliserons le htpasswd Utilité depuis Apache HTTP Server, pour créer ce fichier.

Vérifiez d'abord que apache2-utils ou HTTPD-Tools, les packages qui fournissent htpasswd L'utilitaire est installé sur votre système, sinon exécutez la commande appropriée pour que votre distribution l'installe:

# yum install httpd-tools [rhel / centos] $ sudo apt install apache2-utils [debian / ubuntu] 

Ensuite, courez htpasswd Commande ci-dessous pour créer le fichier de mot de passe avec le premier utilisateur. Le -c L'option est utilisée pour spécifier le fichier passwd, une fois que vous avez frappé [Entrer], Il vous sera demandé de saisir le mot de passe de l'utilisateur.

# htpasswd -c / etc / nginx / confr.d/.développeur htpasswd 

Ajoutez un deuxième utilisateur et n'utilisez pas le -c Option ici.

# htpasswd / etc / nginx / confr.d/.admin htpasswd 

Maintenant que vous avez le fichier de mot de passe prêt, continuez à configurer les parties de votre serveur Web à laquelle vous souhaitez restreindre l'accès à. Pour afficher le contenu du fichier de mot de passe (qui comprend des noms d'utilisateur et des mots de passe chiffrés), utilisez la commande CAT ci-dessous.

# cat / etc / nginx / confre.d/.htpasswd 
Afficher le fichier de mot de passe HTTP

Configurer l'authentification HTTP pour Nginx

Comme nous l'avons mentionné plus tôt, vous pouvez restreindre l'accès à votre serveur Web, à un seul site Web (en utilisant son bloc de serveur) ou une directive de localisation. Deux directives utiles peuvent être utilisées pour y parvenir.

  • auth_basic - Active la validation du nom d'utilisateur et du mot de passe à l'aide du «Authentification de base HTTP”Protocole.
  • auth_basic_user_file - Spécifie le fichier de mot de passe.

Mot de passe protéger les hôtes virtuels nginx

Pour implémenter l'authentification de base pour l'ensemble du serveur Web, qui s'applique à tous les blocs de serveur, ouvrez le / etc / nginx / nginx.confli fichier et ajouter les lignes ci-dessous dans le contexte HTTP:

Http Auth_Basic "Accès restreint!"; auth_basic_user_file / etc / nginx / confr.d/.htpasswd;… 

Mot de passe Protéger le site Web ou le domaine Nginx

Pour activer l'authentification de base pour un domaine ou un sous-domaine particulier, ouvrez son fichier de configuration sous / etc / nginx / confre.d/ ou / etc / nginx / conf / sites disponibles (Selon la façon dont vous avez installé Nginx), puis ajoutez la configuration ci-dessous dans le bloc ou le contexte du serveur:

Server écouter 80; Exemple de nom.com; Auth_basic "Accès restreint!"; auth_basic_user_file / etc / nginx / confr.d/.htpasswd; emplacement / … …  

Mot de passe Protéger le répertoire Web dans Nginx

Vous pouvez également activer l'authentification de base dans une directive de localisation. Dans l'exemple ci-dessous, tous les utilisateurs essayant d'accéder au / admin Le bloc de localisation sera invité à s'authentifier.

Server écouter 80; Exemple de nom.com www.exemple.com; Emplacement / … Emplacement / admin / Auth_Basic "Accès restreint!"; auth_basic_user_file / etc / nginx / confr.d/.htpasswd;  emplacement / public / auth_basic off; # Turns Off Authentification HTTP BASIC OFF pour ce bloc… 

Si vous avez configuré l'authentification HTTP de base, tous les utilisateurs qui essaient d'accéder à votre serveur Web ou à un sous-domaine ou à une partie spécifique d'un site (selon l'endroit où vous l'avez implémenté), sera demandé un nom d'utilisateur et un mot de passe comme indiqué dans la capture d'écran ci-dessous.

Authentification de base de Nginx

Dans le cas d'une authentification utilisateur ratée, un «401 Autorisation requise»L'erreur sera affichée comme indiqué ci-dessous.

401 Erreur d'autorisation requise

Vous pouvez trouver plus d'informations pour restreindre l'accès avec l'authentification HTTP de base.

Vous aimerez peut-être également lire ces guides liés au serveur Nginx HTTP utile.

  1. Comment protéger les répertoires Web dans Nginx
  2. Le guide ultime pour sécuriser, durcir et améliorer les performances de Nginx
  3. Configuration de HTTPS avec Let's Encrypt SSL Certificate pour Nginx

Dans ce guide, nous avons montré comment implémenter l'authentification HTTP de base dans le serveur Web Nginx HTTP. Pour poser des questions, utilisez le formulaire de rétroaction ci-dessous.