OpenLDAP – Utilisation pour protéger l’accès à un site web

Objectif: Utiliser le serveur d’annuaire OpenLDAP pour protéger l’accès à un site web.  Protéger l’accès revient à n’autoriser qu’un ensemble restreint de personnes à lire le contenu de ce site. Plus concrètement, à chaque demande d’accès au site web, il sera demandé la saisie d’un identifiant et un mot de passe. L’accès n’est autorisé que pour ceux qui sont référencés dans l’annuaire LDAP. Pré-requis: L’article Ajouter des données à l’annuaire ainsi que ses pré-requis sont lus. Le serveur OpenLDAP est installé et alimenté avec les données de l’article.

1. Installer le serveur web apache

Vérifier si ce serveur est installé
sudo service apache2 status
2 Possibilités selon la réponse obtenue:
  1. « * apache2 is running » ou « * apache2 is not running » : Le serveur est installé, passer au paragraphe 2.
  2. « apache2: unrecognized service »: Le serveur n’est pas installé, il faudra le faire.
Installer le serveur:
sudo apt-get install apache2

2. Mettre en place un site web de test

Pour rester simple, on va utiliser le site par défaut. Sauvegarder la page d’entrée de ce site:
sudo mv /var/wwww/index.html /var/www/index.html.orig
Créer une nouvelle page:
vi /var/wwww/index.html
Et saisir puis enregistrer:
 <html>
  <header>
    <title>OpenLDAP tutorial</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </header>
  <body>
    <h6>Site web OpenLDAP tutorial</h6>
  </body>
</html

3. Tester le fonctionnement du site

Dans un navigateur web saisir dans la barre d’adresse: http://localhost puis entrée. Il doit s’afficher une page blanche avec le sous-titre Site web OpenLDAP en haut. Si ce n’est pas le cas, vérifier la configuration du site par défaut car l’installation a été probablement modifiée après l’installation du serveur web.
ls -l /etc/apache2/sites-enabled/
En réponse à cette commande on devrait avoir au moins la ligne: 000-default.conf -> ../sites-available/000-default.conf Et le contenu de ce fichier doit comporter:
<VirtualHost desktop:80>
  ServerName localhost
  DocumentRoot /var/www
  ...
</VirtualHost>
Si ce n’est pas le cas, rectifier puis redémarrer le serveur.

4. Activer et configurer le mod-ldap du serveur apache2

Le mod-ldap est un add-in du serveur web apache2, il est installé mais non activé par défaut sur les systèmes Debian et compatibles. S’il n’est pas installé, il convient de le faire avant toute autre action.
sudo a2enmod authnz_ldap
Après l’activation, il convient de le configurer pour indiquer les paramètres de notre serveur OpenLDAP:
sudo vi /etc/apache2/mods-enabled/ldap.conf
Modifier le contenu pour que ce fichier contienne:
<Location />
  AuthType Basic
  AuthBasicProvider ldap
  AuthName "Saisir identifiant et mot de passe"
  AuthLDAPURL ldap://localhost/ou=People,dc=ldaptuto,dc=net?uid?sub?(objectClass=*)
  Require valid-user
</Location>
Et enfin redémarrer le serveur web pour tenir compte de cette nouvelle configuration:
sudo service apache2 restart

5. Tester le fonctionnement de la nouvelle configuration

Dans un navigateur web saisir dans la barre d’adresse: http://localhost puis entrée. Si tout va bien, une authentification est maintenant requise pour lire la page: OpenLDAP tutorialRemarquer la phrase paramétrée qui s’affiche: Saisir identifiant et mot de passe. Saisir l’identifiant (uid) de Jean Dupond (dupond) et un faux mot de passe (différent de dupond): l’accès est refusé. Saisir le bon mot de passe (dupond), l’accès devrait être autorisé. Si vous avez activé la production des logs du serveur OpenLDAP (voir l’article Activer le Log OpenLDAP), vous pouvez également contrôler l’interaction entre les deux serveurs en examinant le fichier des logs.]]>