DevOps : Comment Configurer l’Authentification Basique sur Nginx et Apache dans un serveur Ubuntu

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 :

  1. Environnements de développement : Protéger les sites en développement ou en test pour éviter les accès publics prématurés.
  2. Ressources sensibles : Restreindre l’accès à certaines parties de votre site contenant des informations sensibles.
  3. 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 :

  1. 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.
  2. 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 & CTO * Plus de publications

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...

Contributeurs

0 0 votes
Évaluation de l'article
guest
0 Commentaires
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires

Ingénierie informatique (SSII)

Applize crée des logiciels métiers pour accompagner les entreprises dans la transition vers le zéro papier.


Avez-vous un projet en tête ? Discutons-en.