Comment configurer l'authentification HTTP de base dans Apache
L'authentification HTTP de base utilise des noms d'utilisateur et des mots de passe pour sécuriser certains itinéraires de votre site Web. Il est couramment utilisé pour verrouiller les panneaux d'administration et les services d'arrière-plan et, conjointement avec HTTPS, offre une bonne sécurité pour les ressources Web.
Sommaire
Comment fonctionne l'authentification HTTP?
L'authentification HTTP de base protège certaines ressources ou routes avec un nom d'utilisateur et un mot de passe. Lorsqu'un utilisateur tente d'accéder à cette ressource, son navigateur affiche une boîte de dialogue demandant des informations d'identification avant d'envoyer quoi que ce soit. Les panneaux d'administration de la plupart des routeurs domestiques sont sécurisés de cette manière.
Dans les coulisses, lorsqu'un utilisateur tente d'accéder à une ressource protégée, le serveur envoie à l'utilisateur un WWW-Authenticate
en-tête avec un 401 Unauthorized response
. Le client renvoie le nom d'utilisateur et le mot de passe appropriés, stockés dans le Authorization
entête. Le serveur vérifie la combinaison par rapport à une liste de mots de passe hachés et le client est autorisé à se connecter s'il correspond.
L'authentification HTTP de base nécessite l'envoi de mots de passe en texte brut, vous devez configurer HTTPS / TLS sur votre serveur, sinon vous serez vulnérable aux attaques de l'homme du milieu. HTTPS va crypter la connexion et verrouiller toute personne tentant de renifler votre mot de passe. Vous pouvez configurer un certificat gratuit avec LetsEncrypt, ou si vous cherchez à sécuriser un serveur privé, créez-en un et signez-le vous-même.
Générer un fichier de mot de passe
Pour que l'authentification HTTP de base fonctionne, vous aurez besoin d'un fichier servant de base de données de noms d'utilisateur et de leurs mots de passe correspondants. Vous pouvez créer cela avec le htpasswd
, qui doit être installé avec votre installation Apache via le apache2-utils
bibliothèque. S'il n'est pas installé, vous pouvez l'installer à partir du gestionnaire de packages de votre distribution; pour les systèmes basés sur Debian comme Ubuntu, ce serait:
sudo apt-get install apache2-utils
Ensuite, vous pouvez générer le fichier de mot de passe avec le -c
drapeau. Cette commande crée un nouveau fichier de mot de passe et définit le mot de passe pour l'utilisateur "admin":
sudo htpasswd -c /etc/apache2/.htpasswd admin
Vous serez invité à entrer un mot de passe, qui sera haché et stocké dans /etc/apache2/.htpasswd
. Si vous souhaitez ajouter un autre utilisateur, omettez le -c
pour ajouter une entrée.
Vous pouvez également modifier le AuthBasicProvider
option pour permettre différentes méthodes de vérification des mots de passe, telles que des bases de données. Cependant, l'option par défaut d'utiliser htpasswd
les fichiers fonctionnent bien dans la plupart des cas, en particulier avec seulement quelques utilisateurs.
Configuration d'Apache
Il existe plusieurs façons de configurer l'authentification par mot de passe dans Apache. Vous ajouterez toujours les mêmes options de configuration, mais Apache stocke les fichiers de configuration à plusieurs endroits et celui que vous devrez modifier dépendra de votre configuration.
Si vous souhaitez activer l'authentification pour tout, vous souhaiterez modifier le fichier de configuration principal:
/etc/apache2/apache2.conf
Si vous souhaitez plutôt authentifier un dossier spécifique, vous devez modifier le fichier de configuration de ce dossier dans sites-enabled
. Par exemple, la configuration par défaut est à:
/etc/apache2/sites-available/000-default.conf
mais le vôtre sera probablement nommé en fonction de l'itinéraire. Si vous devez en créer une nouvelle, vous pouvez copier cette configuration par défaut et modifier DocumentRoot
.
Si vous avez géré l'hébergement et n'avez pas accès aux principaux fichiers de configuration, vous allez probablement modifier un .htaccess
, généralement situé à la racine du dossier de votre site. Par exemple:
/var/www/html/.htaccess
Dans tous les cas, vous souhaiterez ouvrir le fichier correspondant à votre cas d'utilisation et ajouter ce qui suit à l'intérieur d'un bloc de répertoire. Si vous modifiez un .htaccess
fichier, le
le bloc n'est pas nécessaire, juste les lignes à l'intérieur:
AuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user
Les paramètres d’authentification s’appliqueront à l’ensemble du répertoire, que vous voudriez généralement définir à la racine du document entier, bien que vous ne puissiez l’appliquer qu’à un dossier spécifique en modifiant le chemin:
Cela définira le type d'authentification et pointera Apache vers le fichier de mot de passe. Il n'est pas nécessaire de lui attribuer un nom spécifique, vous pouvez donc générer différents fichiers de mots de passe pour différents répertoires.
Redémarrez Apache pour appliquer les modifications:
sudo service apache2 restart
Vérifiez l'itinéraire protégé dans votre navigateur et vous devriez être arrêté et demandé un mot de passe. Si vous ne pouvez pas le fournir, vous recevrez un 401 Unauthorized
erreur et accès refusé.
N'oubliez pas que les mots de passe sont toujours transmis en texte brut, vous devez donc activer HTTPS pour Apache.