Configuration de l'authentification LDAPS pour Nextcloud sur Debian 13
Documentation technique pour l'intégration de l'annuaire Active Directory sécurisé (Port 636) au sein de l'infrastructure mpr-if.infra
1. Informations Générales
- IP Serveur Nextcloud :
10.192.194.110 - IP Contrôleur de Domaine (AD01) :
10.192.193.100 - Domaine AD :
mpr-if.infra - Protocole utilisé : LDAPS
- Port : 636
- Groupe de sécurité dédié :
Utilisateurs_NextCloud
1.1 Objectifs
- Centraliser la gestion des utilisateurs sur l'Active Directory.
- Sécuriser les flux d'authentification via un tunnel TLS (Port 636).
- Restreindre l'accès à Nextcloud aux seuls membres d'un groupe spécifique.
- Adapter Debian 13 (OpenSSL 3) pour accepter les certificats auto-signés de l'AD.
2. Sommaire
- Prérequis et connectivité
- Configuration du client LDAP système
- Ajustement de la sécurité OpenSSL 3
- Configuration des variables d'environnement (Apache/PHP)
- Paramétrage de la liaison LDAP via OCC
- Mise en place des filtres restrictifs (MemberOf)
- Validation et tests de connexion
3. Configuration du système (Debian 13)
3.1 Modification du client OpenLDAP
Pour autoriser la connexion malgré un certificat auto-signé, le client système doit être configuré.
Fichier : /etc/ldap/ldap.conf
BASE dc=mpr-if,dc=infra
URI ldaps://ad01.mpr-if.infra
# Autorise l'utilisation de certificats auto-signés
TLS_REQCERT allow
3.2 Ajustement du niveau de sécurité OpenSSL
Debian 13 utilise OpenSSL 3 qui bloque par défaut les certificats jugés trop faibles. Nous abaissons le niveau de sécurité à 1 pour la compatibilité avec l'AD.
Fichier : /etc/ssl/openssl.cnf
- Sous
[openssl_init], ajouter :ssl_conf = ssl_sect - Ajouter en fin de fichier :
[ssl_sect]
system_default = system_default_sect
[system_default_sect]
CipherString = DEFAULT@SECLEVEL=1
4. Configuration des variables d'environnement
4.1 Persistance pour Apache (Interface Web)
Pour que PHP accepte la connexion SSL lors des tentatives de login via le navigateur.
Fichier : /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerName cloud.mpr-if.infra
# Injection de la variable d'environnement pour PHP
SetEnv LDAPTLS_REQCERT never
</VirtualHost>
Application des changements :
a2enmod env
systemctl restart apache2
4.2 Persistance pour le système (CLI et Cron)
Fichier : /etc/environment
LDAPTLS_REQCERT="never"
5. Paramétrage de Nextcloud via OCC
Nous configurons la liaison (ID de configuration : s01) en utilisant l'outil en ligne de commande de Nextcloud.
5.1 Paramètres de connexion LDAPS
# Configuration de l'hôte et du port 636
sudo -u www-data php occ ldap:set-config s01 ldapHost "ldaps://10.192.193.100"
sudo -u www-data php occ ldap:set-config s01 ldapPort 636
# Désactivation de StartTLS (inutile en LDAPS natif)
sudo -u www-data php occ ldap:set-config s01 ldapTLS 0
sudo -u www-data php occ ldap:set-config s01 ldapIgnoreSSLCertificate 1
# Activation de la configuration
sudo -u www-data php occ ldap:set-config s01 ldapConfigurationActive 1
5.2 Configuration de l'agent de liaison (Bind)
sudo -u www-data php occ ldap:set-config s01 ldapAgentName "Nextcloud@MPR-IF.infra"
sudo -u www-data php occ ldap:set-config s01 ldapAgentPassword "motdepasse"
sudo -u www-data php occ ldap:set-config s01 ldapBase "DC=MPR-IF,DC=infra"
6. Mise en place des filtres restrictifs
Afin d'éviter la synchronisation de tous les comptes (ordinateurs, comptes de service), nous appliquons des filtres basés sur l'appartenance au groupe de sécurité.
6.1 Filtre des utilisateurs (Affichage)
sudo -u www-data php occ ldap:set-config s01 ldapUserFilter "(&(objectClass=user)(objectCategory=person)(memberOf=CN=Utilisateurs_NextCloud,CN=Users,DC=MPR-IF,DC=infra))"
6.2 Filtre de connexion (Login)
sudo -u www-data php occ ldap:set-config s01 ldapLoginFilter "(&(objectClass=user)(objectCategory=person)(memberOf=CN=Utilisateurs_NextCloud,CN=Users,DC=MPR-IF,DC=infra)(sAMAccountName=%uid))"
7. Validation et Maintenance
7.1 Commandes de test
Il est impératif de valider la configuration en ligne de commande avant tout test web.
# Tester la connexion globale
sudo -u www-data php occ ldap:test-config s01
# Vérifier si un utilisateur spécifique est reconnu
sudo -u www-data php occ ldap:check-user "mathys.prost"
7.2 Nettoyage du cache
En cas de changement de groupe dans l'AD, forcer le rafraîchissement des données :
sudo -u www-data php occ ldap:show-remnants
sudo -u www-data php occ cache:clear