Il se peut que vous ayez une page sensible que vous souhaitez protéger par un mot de passe. C’est ce qu’on appelle l’authentification de base.

La bonne nouvelle, c’est que c’est possible, et c’est super facile.

Pourquoi protéger la page web avec un mot de passe ?

Eh bien, il peut y avoir de nombreuses raisons, notamment.

  • Contenir des données sensibles sur la page
  • La page n’est pas prête et vous ne voulez pas la rendre publique, mais la partager avec quelqu’un

Quoi qu’il en soit, voyons comment vous pouvez vous protéger.

Exigences

Prenons un exemple ; je veux protéger /client sur lab.geekflare.com/fr, ce qui signifie que si quelqu’un accède à https://lab.geekflare.com/fr/client, il devra demander un mot de passe.

Apache

Commençons par Apache.

La première chose que nous devons créer est un fichier de mots de passe dans lequel toutes les informations d’identification seront stockées. Le nom du fichier est .htpasswd et vous pouvez le placer n’importe où sur le serveur. Je le créerai dans le dossier /etc/httpd/conf

  • Vous pouvez créer le fichier avec la commande touch
touch /etc/httpd/conf/.htpasswd
  • Ajoutons l’utilisateur qui sera autorisé à accéder à /client. Nous devons utiliser la commandehtpasswd pour cela.
htpasswd /etc/httpd/conf/.htpasswd geekflare
  • La dernière section, geekflare, est le nom d’utilisateur. Remplacez-le par ce que vous voulez et appuyez sur Entrée.
  • Entrez le mot de passe, et vous verrez une confirmation que l’utilisateur a été ajouté.
[root@lab html]# htpasswd /etc/httpd/conf/.htpasswd geekflare
Nouveau mot de passe : 
Saisissez à nouveau le nouveau mot de passe : 
Ajout du mot de passe pour l'utilisateur geekflare
[root@lab html]#

Si vous chattez le fichier, vous remarquerez que le mot de passe est stocké dans un format crypté. C’est une bonne chose !

[root@lab html]# cat /etc/httpd/conf/.htpasswd 
geekflare:$apr1$EHvl0Bc5$nh4u0w3.Cj3wzPT7XUXqW1
[root@lab html]#

Ensuite, nous devons demander à Apache de protéger l’URI que nous voulons.

  • Modifiez le fichier httpd.conf ou le fichier de configuration que vous utilisez pour l’instance d’Apache. J’utilise l’installation par défaut, donc j’utilise /etc/httpd/conf/httpd.conf
  • Ajoutez ce qui suit à n’importe quel endroit du fichier
<Répertoire "/var/www/html/client">
Options Indexes FollowSymLinks
AuthType Basic
AuthName "Contenu protégé pour le client"
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Directory>
Si vous avez déjà une directive Directory

/var/www/html/client, alors au lieu d’ajouter une nouvelle section, vous devriez simplement ajouter ce qui suit dans la directive existante.

AuthType Basic
AuthName "Protected Content" (Contenu protégé)
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
  • Redémarrez Apache
service httpd restart
  • Essayez d’accéder à la page /client, qui devrait vous demander un mot de passe.

  • Saisissez l’identifiant que vous avez défini précédemment pour afficher le contenu.

La méthode .htaccess vous plaît ?

Bien sûr, vous pouvez également mettre en œuvre l’authentification de base par le biais d’un fichier .htaccess. Vous devez toujours générer les informations d’identification à l’aide de htpasswd comme expliqué ci-dessus. Une fois cela fait, vous pouvez ajouter ce qui suit dans le fichier .htaccess du dossier concerné.

AuthType Basic
AuthName "Protected Content" (Contenu protégé)
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user

L’avantage est que vous n’avez pas besoin de redémarrer Apache.

Nginx

Implémentons l’authentification de base dans Nginx en procédant comme suit.

Nous nous appuierons sur les utilitaires d’Apache pour générer les informations d’identification. Si Apache HTTP n’est pas installé sur le serveur, vous devez installer les utilitaires séparément, comme indiqué ci-dessous. En cas de doute, vous pouvez exécuter htpasswd pour voir si cela fonctionne. Si ce n’est pas le cas, vous savez que vous devez l’installer.

CentOS/RHEL 8

dnf install httpd-tools

CentOS/RHEL 7

yum install httpd-tools

Ubuntu

apt-get install apache2-utils
  • Créons les identifiants de la même manière que nous l’avons fait pour Apache.
htpasswd -c /etc/nginx/.htpasswd chandan
  • N’oubliez pas de remplacer chandan par le vrai nom d’utilisateur que vous voulez

Ensuite, nous devons configurer Nginx, afin qu’il restreigne l’URI particulier avec le mot de passe.

  • Supposons que nous ayons besoin de protéger l’URI /admin
  • Ajoutez ce qui suit dans nginx.conf ou tout autre fichier de configuration actif de Nginx
location /admin {
auth_basic "Zone d'administration" ;
auth_basic_user_file /etc/nginx/.htpasswd ;
}
  • Redémarrez Nginx

Que faire si vous devez restreindre l’accès à l’ensemble du site web via Nginx ?

C’est simple !

Ajoutez ce qui suit dans nginx.conf ou dans le fichier de configuration active sous location / { directive

auth_basic "Zone d'administration" ;
auth_basic_user_file /etc/nginx/.htpasswd ;

SiteGround

La plateforme d’hébergement a évolué. Il existe de nombreuses plateformes qui offrent des outils pratiques, et SiteGround est l’une d’entre elles.

Si vous utilisez SiteGround pour héberger votre site web, vous pouvez facilement protéger l’URL à partir de leur console d’administration. Supposons que vous utilisiez WordPress et que vous deviez protéger /wp-admin.

  • Connectez-vous à SiteGround et allez sur le site où vous devez activer l’authentification de base.
  • Cliquez sur Sécurité >> URLs protégées >> Utilisateurs
  • Saisissez le nom et le mot de passe pour créer l’identifiant

Ensuite, nous allons protéger wp-admin avec l’identifiant que nous venons de créer.

  • Allez dans l’onglet URLs
  • Entrez wp-admin dans le chemin et cliquez sur protéger
  • Cliquez sur Gérer l’accès et assignez l’utilisateur que vous venez de créer

Essayez d’accéder à la page, et SiteGround vous demandera d’entrer les informations d’identification.

Facile, n’est-ce pas ?

WordPress

Vous utilisez WordPress et souhaitez protéger par mot de passe un article, une page, une catégorie, un rôle ou l’ensemble du site ?

C’est tout à fait possible !

Voici PPWP (Password Protect WordPress Plugin)

Installez le plugin et configurez la façon dont vous souhaitez protéger les ressources de WordPress. Cela fonctionne avec les constructeurs de pages tels que Elementor, Divi, Beaver.

Alternativement, si vous avez besoin d’un simple article ou d’une page protégé(e) par un mot de passe, vous pouvez profiter de la fonctionnalité intégrée de WP. Vous n’avez besoin d’aucun plugin pour cela.

  • Accédez à l’article ou à la page pour laquelle vous souhaitez activer un mot de passe.
  • Dans la section “Publier”, cliquez sur “Modifier” à côté de “Visibilité” : Public
  • Sélectionnez Protégé par mot de passe et entrez le mot de passe.

  • Cliquez sur OK et vous êtes prêt !

Vous avez besoin d’autres moyens de sécuriser WordPress ? Consultez ce guide.

cPanel

Si vous disposez d’un hébergement partagé, il est fort probable que vous ayez un cPanel. La bonne nouvelle est que cPanel offre un utilitaire appelé Directory Privacy ; à partir de là, vous pouvez définir un mot de passe pour le répertoire.

  • Connectez-vous à cPanel
  • Recherchez Directory Privacy

  • Sélectionnez le dossier que vous souhaitez protéger. Comme ci-dessous, j’ai sélectionné un dossier appelé chandan, qui se trouve sous public_html
  • Créez l’utilisateur qui doit être autorisé et enregistrez

  • Une fois que c’est fait, vous remarquerez que le dossier a un verrou

Et c’est tout. Le répertoire est maintenant protégé par un mot de passe. Comme vous pouvez le voir ci-dessus, j’ai testé sur l‘hébergement A2, et cela fonctionne très bien.

Conclusion

J’espère que ce qui précède vous aidera à protéger certains URI, dossiers avec le mot de passe en utilisant l’authentification de base. Si vous êtes à la recherche d’une sécurité complète pour votre site web, alors vous devriez envisager d’implémenter un WAF.