Comment configurer l’authentification htpasswd d’Apache dans Ubuntu
L’utilisation de l’authentification htpasswd d’Apache est un moyen simple d’ajouter un contrôle d’accès de base à vos répertoires web, en demandant aux utilisateurs de fournir un nom d’utilisateur et un mot de passe avant d’accéder à certaines parties de votre site web. Ce type d’authentification est souvent utilisé pour restreindre l’accès à des zones sensibles, comme les panneaux d’administration ou les sites de développement, et peut être facilement mis en place sur un serveur Ubuntu utilisant Apache.
Conditions préalables
- Un serveur Ubuntu avec Apache2 installé.
- Accès root ou sudo au serveur.
- Une compréhension de base de l’utilisation de la ligne de commande.
Étape 1 : Installer Apache (s’il n’est pas déjà installé)
Si Apache n’est pas installé sur votre serveur Ubuntu, vous pouvez l’installer avec la commande suivante :
sudo apt install apache2
Étape 2 : Activer l’utilitaire htpasswd
L’utilitaire htpasswd est fourni par le paquetage apache2-utils, qui est généralement installé avec Apache. S’il n’est pas installé, vous pouvez l’installer en exécutant :
Cette commande installe les outils nécessaires à la gestion des fichiers de mots de passe pour l’authentification htpasswd.
Étape 3 : Créer le fichier .htpasswd
Le fichier .htpasswd est utilisé pour stocker les noms d’utilisateur et les mots de passe cryptés pour l’authentification.
- Créer un nouveau fichier .htpasswd:Pour créer un nouveau fichier .htpasswd et ajouter un utilisateur, exécutez la commande suivante :sudo htpasswd -c /etc/apache2/.htpasswd votre_nomd’utilisateur
Remplacez votre_nomd’utilisateur par le nom d’utilisateur que vous souhaitez créer.
- L’option -c crée un nouveau fichier .htpasswd. Si le fichier existe déjà et que vous utilisez l’option -c, il sera écrasé, c’est pourquoi vous ne devez l’utiliser que lorsque vous créez le fichier pour la première fois.
- Entrez et confirmez le mot de passe:Après avoir exécuté la commande, vous serez invité à entrer et à confirmer un mot de passe pour l’utilisateur. Le fichier /etc/apache2/.htpasswd sera créé avec le mot de passe crypté de votre_nom_d’utilisateur.
- Ajouter des utilisateurs supplémentaires (facultatif):Pour ajouter des utilisateurs supplémentaires sans écraser le fichier .htpasswd existant, exécutez :sudo htpasswd /etc/apache2/.htpasswd autre_nom_d’utilisateur
Remplacez another_username par le nouveau nom d’utilisateur. Cette commande ajoute le nouvel utilisateur au fichier .htpasswd existant.
Étape 4 : Configurer Apache pour la protection par mot de passe
Vous devez spécifier le répertoire ou l’emplacement que vous souhaitez protéger par un mot de passe. Pour ce faire, vous pouvez utiliser un fichier .htaccess ou modifier directement le fichier de configuration d’Apache.
Option 1 : Utilisation du fichier .htaccess
- Activer les fichiers .htaccess:Si vous souhaitez utiliser les fichiers .htaccess pour mettre en place une protection par mot de passe, assurez-vous que la directive AllowOverride est définie sur All pour le répertoire que vous souhaitez protéger. Modifiez le fichier de configuration Apache approprié (par exemple, /etc/apache2/sites-available/000-default.conf) :sudo nano /etc/apache2/sites-available/000-default.conf
Recherchez la section correspondant à la racine de votre site web (par exemple, /var/www/html) et attribuez la valeur All à AllowOverride :
<Répertoire /var/www/html>
AllowOverride All - Redémarrez Apache:Après avoir modifié la configuration, redémarrez Apache pour appliquer les changements :sudo systemctl restart apache2
- Créez un fichier .htaccess:Dans le répertoire que vous souhaitez protéger (par exemple, /var/www/html), créez ou modifiez un fichier .htaccess :sudo nano /var/www/html/.htaccess
- Ajoutez les directives suivantes:Ajoutez les lignes suivantes au fichier .htaccess :AuthType Basic
AuthName “Restricted Content” (contenu restreint)
AuthUserFile /etc/apache2/.htpasswd
Require valid-user- AuthType Basic : Spécifie l’authentification de base.
- AuthName : Un message qui sera affiché dans l’invite d’authentification.
- AuthUserFile : Le chemin d’accès à votre fichier .htpasswd.
- Require valid-user : Limite l’accès aux utilisateurs répertoriés dans le fichier .htpasswd.
- Enregistrez et fermez le fichier.
Option 2 : Utilisation directe du fichier de configuration d’Apache
Si vous préférez gérer l’authentification directement dans les fichiers de configuration d’Apache au lieu d’utiliser .htaccess, procédez comme suit :
- Modifiez la configuration de l’hôte virtuel : ouvrez le fichier de configuration Apache pour le site que vous souhaitez protéger (par exemple, /etc/apache2/sites-available/000-default.conf) :sudo nano /etc/apache2/sites-available/000-default.conf
- Ajoutez les directives d’authentification : Dans le bloc ou le bloc qui correspond au répertoire que vous voulez protéger, ajoutez ce qui suit :<Directory “/var/www/html”>
AuthType Basic
AuthName “Restricted Content” (contenu restreint)
AuthUserFile /etc/apache2/.htpasswd
Require valid-user - Enregistrez et fermez le fichier de configuration.
- Redémarrez Apache:Après avoir effectué les modifications, redémarrez Apache :sudo systemctl restart apache2
Étape 5 : Tester l’authentification
Naviguez maintenant vers l’URL du répertoire protégé à l’aide de votre navigateur web (par exemple, http://your_server_ip_or_domain). Vous devriez voir une invite de connexion vous demandant un nom d’utilisateur et un mot de passe.
- Saisissez le nom d’utilisateur et le mot de passe que vous avez créés avec la commande htpasswd.
- Si les informations d’identification sont correctes, vous aurez accès au répertoire ; dans le cas contraire, l’accès vous sera refusé.
Étape 6 : Sécurisation du fichier .htpasswd
Pour des raisons de sécurité, assurez-vous que le fichier .htpasswd est stocké en dehors de la racine du site web (par exemple, /etc/apache2/.htpasswd) afin qu’il ne soit pas accessible directement par un navigateur web.
Assurez-vous que le fichier .htpasswd dispose des autorisations correctes :
sudo chown www-data:www-data /etc/apache2/.htpasswd
Cela garantit que seuls l’utilisateur Apache (www-data) et root ont le droit de lire le fichier .htpasswd.
Conclusion
La mise en place de l’authentification htpasswd dans Apache est un moyen simple d’ajouter un contrôle d’accès de base à des répertoires spécifiques de votre site web. Elle convient pour une protection de bas niveau, en particulier dans les environnements de développement ou internes. Cependant, pour les zones très sensibles, envisagez d’utiliser des méthodes d’authentification plus robustes, telles que OAuth ou l’intégration avec un système de gestion des identités.