Introduction
L’authentification basique est une méthode simple et efficace pour protéger l’accès à votre site web. En demandant aux utilisateurs de fournir un nom d’utilisateur et un mot de passe avant d’accéder au contenu, vous pouvez empêcher les accès non autorisés. Cette méthode est particulièrement utile dans plusieurs situations :
- Environnements de développement : Protéger les sites en développement ou en test pour éviter les accès publics prématurés.
- Ressources sensibles : Restreindre l’accès à certaines parties de votre site contenant des informations sensibles.
- Accès restreint : Limiter l’accès à des outils d’administration ou à des sections réservées aux utilisateurs enregistrés.
Dans cet article, nous expliquerons comment configurer l’authentification basique sur deux des serveurs web les plus populaires : Nginx et Apache.
Use Case
Supposons que vous ayez un site web de gestion d’administration interne accessible via le domaine admin.example.com
. Ce site contient des outils de gestion sensibles que seuls certains membres de votre équipe doivent pouvoir utiliser. Bien qu’un fichier robots.txt
soit en place pour empêcher les moteurs de recherche de référencer ce site, il existe des risques potentiels :
- Exposition Accidentelle aux Moteurs de Recherche : Même avec un fichier
robots.txt
bien configuré, il est possible que des moteurs de recherche ou des robots ignorent ces directives ou que des liens vers le site apparaissent sur d’autres sites. Cela peut entraîner une exposition accidentelle de votre site d’administration à des utilisateurs non autorisés. - Découverte des Endpoints : Même si le site est protégé par un identifiant et un mot de passe, des personnes mal intentionnées pourraient essayer de découvrir les endpoints de l’administration en analysant les requêtes HTTP ou en utilisant des outils de balayage. Les adresses de ces endpoints pourraient être découvertes par des techniques de reconnaissance ou en exploitant des failles dans la sécurité.
Pour minimiser ces risques, l’authentification basique est un ajout essentiel à votre sécurité web. Elle garantit que seules les personnes disposant des identifiants corrects peuvent accéder à ces ressources, même si elles ont réussi à identifier votre domaine principal.
Configurer l’Authentification Basique sur Nginx
Étape 1 : Installer Apache Utils
Pour générer des fichiers .htpasswd
, vous aurez besoin de l’outil htpasswd
, qui fait partie du package apache2-utils
. Installez-le avec la commande suivante :
sudo apt-get install apache2-utils
Étape 2 : Créer les Fichiers .htpasswd
Créez un répertoire pour stocker vos fichiers .htpasswd
. Pour le domaine admin.example.com
, utilisez :
sudo mkdir -p /etc/nginx/auth/admin.exemple.com
Générez ensuite le fichier .htpasswd
:
htpasswd -c /etc/nginx/auth/admin.exemple.com/.htpasswd user112
Vous serez invité à entrer et confirmer le mot de passe pour l’utilisateur user112
.
Étape 3 : Modifier la Configuration de Nginx
Ouvrez le fichier de configuration de votre site, par exemple /etc/nginx/sites-available/admin.exemple.com
, et ajoutez les lignes suivantes dans le bloc server
:
server { listen 80; server_name admin.exemple.com; location / { auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/auth/admin.exemple.com/.htpasswd; root /var/www/admin.exemple.com; # Chemin vers le répertoire web pour admin.exemple.com index index.html index.htm; } }
Étape 4 : Redémarrer Nginx
Appliquez les changements en redémarrant Nginx :
sudo systemctl restart nginx
Configurer l’Authentification Basique sur Apache
Étape 1 : Créer les Fichiers .htpasswd
Tout comme pour Nginx, commencez par créer un répertoire pour stocker vos fichiers .htpasswd
. Pour un site admin.exemple.com
, utilisez :
sudo mkdir -p /etc/apache2/auth/admin.exemple.com
Générez ensuite le fichier .htpasswd
:
htpasswd -c /etc/apache2/auth/admin.exemple.com/.htpasswd user112
Étape 2 : Modifier la Configuration d’Apache
Ouvrez le fichier de configuration de votre site, par exemple /etc/apache2/sites-available/admin.exemple.conf
, et ajoutez les lignes suivantes dans le bloc <Directory>
correspondant à votre site :
<VirtualHost *:80> ServerName admin.exemple.com DocumentRoot /var/www/admin.exemple.com <Directory /var/www/admin.exemple.com> AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/auth/admin.exemple.com/.htpasswd Require valid-user </Directory> </VirtualHost>
Étape 3 : Activer l’Authentification Basique
Assurez-vous que le module mod_auth_basic
est activé :
sudo a2enmod auth_basic
Étape 4 : Redémarrer Apache
Appliquez les changements en redémarrant Apache :
sudo systemctl restart apache2
Conclusion
Configurer l’authentification basique sur Nginx et Apache est une étape importante pour protéger vos sites web contre les accès non autorisés. En suivant les étapes décrites ci-dessus, vous pouvez facilement mettre en place cette sécurité supplémentaire, que ce soit pour des environnements de développement, des ressources sensibles ou des sections réservées aux utilisateurs. L’authentification basique est un moyen simple mais efficace de contrôler l’accès à vos sites web.
Architecte logiciel, Développeur d'application diplomé d'ETNA, la filière d'alternance d'Epitech, j'ai acquis une expertise solide dans le développement d'applications, travaillant sur des projets complexes et techniquement diversifiés. Mon expérience englobe l'utilisation de divers frameworks et langages, notamment Symfony, Api Platform, Drupal, Zend, React Native, Angular, Vue.js, Shell, Pro*C...