Outils personnels

WebDAV sur Apache avec LDAP : Différence entre versions

De wikiGite

 
(44 révisions intermédiaires par un autre utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
<center>'''Mise en œuvre d'un serveur WebDAV sous Apache avec LDAP et SSL'''</center>
 
<center>'''Mise en œuvre d'un serveur WebDAV sous Apache avec LDAP et SSL'''</center>
  
= PROCEDURE A REVOIR, TESTEE SEULEMENT AVEC HTPASSWD, EN HTTP =
+
<big>'''Procédure adaptée'''</big><br/>
 
+
[[Utilisateur:Fsoyer|Fso]] 29 septembre 2008<br/>
<big>'''Procédure adaptée'''</big>
+
[[Utilisateur:Fsoyer|Fso]] 08 décembre 2008<br/>
[[Utilisateur:Fsoyer|Fso]] 29 septembre 2008
 
[[Utilisateur:Fsoyer|Fso]] 08 décembre 2008
 
  
 
= Installation =
 
= Installation =
Ligne 33 : Ligne 31 :
  
 
Créer le fichier /etc/apache2/sites-availables/webdav :
 
Créer le fichier /etc/apache2/sites-availables/webdav :
 +
# L'alias est general aux VirtualHost (80 et 443) sinon la redirection ne fonctionne pas
 +
Alias /pub /home/pub/
 
  # To force redirect to SSL VH, uncomment :
 
  # To force redirect to SSL VH, uncomment :
 
  #<VirtualHost *:80>
 
  #<VirtualHost *:80>
Ligne 55 : Ligne 55 :
 
   </Directory>
 
   </Directory>
 
   DAVLockDB /var/lib/apache2/DAVLockDB
 
   DAVLockDB /var/lib/apache2/DAVLockDB
  Alias /pub /home/pub/
 
 
   <Location /pub>
 
   <Location /pub>
 
       DAV On
 
       DAV On
Ligne 74 : Ligne 73 :
 
  a2ensite webdav
 
  a2ensite webdav
 
  /etc/init.d/apache2 reload
 
  /etc/init.d/apache2 reload
 +
Penser à créer le fichier '''DAVLockDB''' et donner à Apache les droit d'écriture :
 +
mkdir -p /var/lib/apache2
 +
touch /var/lib/apache2/DAVLockDB
 +
chown -R www-data.www-data /var/lib/apache2
 +
 +
--------------------------------------
 +
'''POUR RAPPEL''' - sauter cette section si on utilise LDAP
  
---------------------- ''ANCIENNE VERSION'' -----------------------
+
Sans LDAP, en utilisant uniquement htpasswd
Puis dans /etc/apache2/conf/dav.conf
+
Dans /etc/apache2/conf/dav.conf
 
  <Directory /var/www/dav/>
 
  <Directory /var/www/dav/>
 
       Options Indexes MultiViews
 
       Options Indexes MultiViews
Ligne 96 : Ligne 102 :
 
  #htpasswd -c /var/www/dav/passwd.dav test
 
  #htpasswd -c /var/www/dav/passwd.dav test
 
--------------------
 
--------------------
 +
 
== OpenLDAP ==
 
== OpenLDAP ==
  apt-get install slapd ldap-utils libpam-ldap libnss-ldap nscd
+
  aptitude install slapd ldap-utils libpam-ldap libnss-ldap nscd
(NSCD est un cache qui accélère notablement les requêtes DNS, NSS, ...)
+
'''Note''' : NSCD est un cache qui accélère notablement les requêtes DNS, NSS, ...
 +
 
 +
'''Note2''' : Attention à bien metre les mêmes valeurs à la configuration de libnss-ldap et libpam-ldap. Les mots de passe sont conservés dans /etc/libnss-ldap.secret, attetion aux droits 660 !
  
 
Configuration de LDAP :
 
Configuration de LDAP :
Ligne 115 : Ligne 124 :
  
 
Installation de PhpLdapAdmin, utilitaire qui permet d’explorer et de modifier une base LDAP :
 
Installation de PhpLdapAdmin, utilitaire qui permet d’explorer et de modifier une base LDAP :
  apt-get install phpldapadmin
+
  aptitude install phpldapadmin
 +
'''TEST''' de phpldapadmin : <nowiki>https://<URL>/phpldapadmin</nowiki>
 +
 
 +
Installation de LAM (Ldap Account Manager)(Vérifier la dernière version sur http://lam.sourceforge.net)
 +
 
 +
'''Note''' : Les paquets Debian sont trop vieux (version 1.1.1-2) et ne supportent que PHP4
 +
'''Note2''' : il est également possible que php5 (meta-paquet) ne soit pas installé penser à l'ajouter sinon LAM ne s'installe pas.
 +
'''Note3''' : le mot de passe par défaut est "lam"
 +
wget http://surfnet.dl.sourceforge.net/sourceforge/lam/ldap-account-manager_2.4.0-1_all.deb
 +
dpkg -i ldap-account-manager_2.4.0-1_all.deb
 +
Penser à augmenter memory_limit à 64M dans /etc/php5/apache2/php.ini
 +
 
 +
Sur l'écran d'accueil (http://serveur/lam), aller dans configuration de LAM (mot de passe lam), "Editer les profils", choisir la langue par défaut (Français) et réinitialiser le mot de passe. Sauvegarder, puis revenir dans le même écran désormais en français.
 +
 
 +
Cliquer sur "Editer type de compte" et modifier les suffixes ldap pour utilisateur, groupe, machine. Effacer domaines Samba si ça n'est pas utilisé.
  
'''TEST''' de phpldapadmin : à ce stade, APACHE ne démarre pas EN SSL
+
on se connecte avec le '''FULL DN''' (cn=admin,dc=localdomain,dc=net) et le mot de passe donné lors de l'installation de slapd
*****************************************************
 
  
 
=== Modification du fichier /etc/ldap/slapd.conf ===
 
=== Modification du fichier /etc/ldap/slapd.conf ===
Si nécessaire, création d’un mot de passe chiffré :
+
Création d’un mot de passe chiffré :
 
  slappasswd
 
  slappasswd
  # utiliser 'slappasswd -h {md5}' pour un encodage MD5
+
  # SSHA par défaut. Utiliser 'slappasswd -h {md5}' pour un encodage MD5
 
  New password:
 
  New password:
 
  Re-enter new password:
 
  Re-enter new password:
 
  {SSHA}rquBbBgDEfCg9aQ1dluhBAiS1UQ0NK04
 
  {SSHA}rquBbBgDEfCg9aQ1dluhBAiS1UQ0NK04
Ajout du mot de passe cripté dans slapd.conf :
+
Copier ce mot de passe pour ajout dans slapd.conf.
 +
 
 +
Modifier /etc/ldap/slapd.conf :
 
  database bdb
 
  database bdb
 
  suffix "dc=mondomaine,dc=com"
 
  suffix "dc=mondomaine,dc=com"
Ligne 133 : Ligne 157 :
 
  rootdn "cn=admin,dc=mondomaine,dc=com"
 
  rootdn "cn=admin,dc=mondomaine,dc=com"
 
  rootpw {SSHA}rquBbBgDEfCg9aQ1dluhBAiS1UQ0NK04
 
  rootpw {SSHA}rquBbBgDEfCg9aQ1dluhBAiS1UQ0NK04
 +
 +
--------------------
 +
''' Pour INFO'''
 +
Ce qui suit permet de paramétrer OpenLDAP en accès SSL, '''MAIS''' phpldapadmin ne sait se connecter dans ce mode... On laisse donc en "normal", les lignes suivantes sont là pour info.
 +
 +
Créer un certificat autosigné
 +
openssl req -newkey rsa:1024 -x509 -nodes -out server.pem -keyout server.pem -days 3650
 +
Paramétrer aussi le SSL par ajout de :
 +
#######################################################################
 +
# SSL:
 +
# Uncomment the following lines to enable SSL and use the default
 +
# snakeoil certificates.
 +
#TLSCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
 +
 +
#TLSCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
 +
 +
TLSCipherSuite HIGH:MEDIUM:-SSLv2
 +
TLSCACertificateFile /etc/ldap/ssl/server.pem
 +
TLSCertificateFile /etc/ldap/ssl/server.pem
 +
TLSCertificateKeyFile /etc/ldap/ssl/server.pem
 +
Et indiquer à LDAP de démarrer en SSL seulement dans /etc/default/slapd:
 +
SLAPD_SERVICES="ldaps://127.0.0.1/"
 +
Vérifier la connexion SSL :
 +
openssl s_client -connect 127.0.0.1:636 -showcerts
 +
doit donner "Verify return code: 18 (self signed certificate)"
 +
 +
Et dans ldap.conf, remplacer l'option "HOST" par les 2 lignes :
 +
URI    ldaps://127.0.0.1
 +
TLS_REQCERT allow
 +
----------------------
  
 
A TESTER : On en profite pour spécifier quelques index qui accéléreront les recherches par la suite :
 
A TESTER : On en profite pour spécifier quelques index qui accéléreront les recherches par la suite :
Ligne 138 : Ligne 192 :
 
  index cn,sn,uid,displayName pres,sub,eq
 
  index cn,sn,uid,displayName pres,sub,eq
 
  index memberUid,mail,givenname eq,subinitial
 
  index memberUid,mail,givenname eq,subinitial
CES CHAMPS EXISTENT-ILS ?
 
  
A TESTER : Ajout de quelques ACL pour protéger les données sensibles :
+
'''VERIFIER''' : que les ACL pour protéger les données sensibles sont présentes :
 
  access to attrs=userPassword
 
  access to attrs=userPassword
   by self write
+
   by dn="cn=admin,dc=localdomain,dc=net" write
  by anonymous auth
 
  by * none
 
access to attrs=sambaLMPassword
 
  by self write
 
  by anonymous auth
 
  by * none
 
access to attrs=sambaNTPassword
 
 
   by self write
 
   by self write
 
   by anonymous auth
 
   by anonymous auth
 
   by * none
 
   by * none
 
  access to *
 
  access to *
 +
  by dn="cn=admin,dc=localdomain,dc=net" write
 
   by * read
 
   by * read
CES CHAMPS EXISTENT-ILS ?
 
  
 
=== Modification du fichier /etc/default/slapd ===
 
=== Modification du fichier /etc/default/slapd ===
Ligne 162 : Ligne 208 :
  
 
=== Configuration des clients LDAP via le fichier /etc/ldap/ldap.conf ===
 
=== Configuration des clients LDAP via le fichier /etc/ldap/ldap.conf ===
  base dc=mondomaine,dc=com
+
  BASE    dc=localdomain,dc=net
  host 127.0.0.1
+
  HOST    127.0.0.1
 
  ldap_version 3
 
  ldap_version 3
  rootbinddn [your rootbinddn, usually cn=admin,[base]]
+
  rootbinddn cn=admin,dc=localdomain,dc=net
 
  pam_password crypt
 
  pam_password crypt
 
  nss_initgroups_ignoreusers  backup,bin,daemon,dhcp,games,gnats,irc,klog,libuuid,list,lp,mail,man,news,ntp,nx,proxy,root,sshd,statd,sync,sys,syslog,uucp,www-data
 
  nss_initgroups_ignoreusers  backup,bin,daemon,dhcp,games,gnats,irc,klog,libuuid,list,lp,mail,man,news,ntp,nx,proxy,root,sshd,statd,sync,sys,syslog,uucp,www-data
Ligne 171 : Ligne 217 :
 
Redémarrage du service LDAP :
 
Redémarrage du service LDAP :
 
  /etc/init.d/slapd restart
 
  /etc/init.d/slapd restart
 +
 +
=== Tester le client ===
 +
ldapsearch -x
 +
ou, s'il y a une erreur ou que ldap.conf n'est pas encore configuré :
 +
ldapsearch -H ldaps://localhost -b dc=localdomain,dc=net -x
 +
On peut ajouter -d<1 à 8> pour avoir des infos supplementaires
  
 
=== Commencer à peupler la base LDAP ===
 
=== Commencer à peupler la base LDAP ===
 
Créer un fichier init.ldif qui contient les éléments de base.
 
Créer un fichier init.ldif qui contient les éléments de base.
  dn: ou=people,dc=mondomaine,dc=com
+
  dn: ou=people,dc=localdomain,dc=net
 
  objectClass: organizationalUnit
 
  objectClass: organizationalUnit
 
  ou: people
 
  ou: people
 
   
 
   
  dn: ou=groups,dc=mondomaine,dc=com
+
  dn: ou=groups,dc=localdomain,dc=net
 
  objectClass: organizationalUnit
 
  objectClass: organizationalUnit
 
  ou: groups
 
  ou: groups
 
   
 
   
  dn: ou=computers,dc=mondomaine,dc=com
+
  dn: ou=computers,dc=localdomain,dc=net
 
  objectClass: organizationalUnit
 
  objectClass: organizationalUnit
 
  ou: computers
 
  ou: computers
 
   
 
   
Puis initialiser la base avec ces commandes :
+
Puis ajouter les éléments à la base avec ces commandes :
 
  /etc/init.d/slapd stop
 
  /etc/init.d/slapd stop
copie de sauvegarde
+
 
mv /var/lib/ldap /var/lib/ldap.old
 
mkdir /var/lib/ldap
 
 
création de la structure
 
création de la structure
 
  slapadd -l init.ldif
 
  slapadd -l init.ldif
Ligne 196 : Ligne 246 :
  
 
Ouvrir un navigateur à l’adresse "http://adresseduserveur/phpldapadmin" et s’authentifier avec
 
Ouvrir un navigateur à l’adresse "http://adresseduserveur/phpldapadmin" et s’authentifier avec
  cn=admin,dc=mondomaine,dc=com
+
  cn=admin,dc=localdomain,dc=net
En principe tous les éléments (people, groups, etc...) doivent apparaître.
+
En principe tous les éléments (people, groups, etc...) doivent apparaître (lien "search" à gauche, et search sur "entire subtree").
  
 
Installation des connecteurs NSS-PAM :
 
Installation des connecteurs NSS-PAM :
 
  apt-get install libnss-db nss-updatedb
 
  apt-get install libnss-db nss-updatedb
  apt-get install libpam-smbpass libpam-ldap libnss-ldap
+
  apt-get install libpam-ldap libnss-ldap
  
 
=== Configuration des modules d’authentification PAM ===
 
=== Configuration des modules d’authentification PAM ===
Ligne 217 : Ligne 267 :
 
  auth    required      pam_unix.so likeauth_secure nullok_secure
 
  auth    required      pam_unix.so likeauth_secure nullok_secure
  
Modifier le fichier common-password :
+
Modifier le fichier common-password, mettre en commentaire :
password    sufficient    pam_ldap.so use_authtok
 
password    required      pam_smbpass.so
 
 
  password    required      pam_unix.so nullok obscure min=4 max=8 md5
 
  password    required      pam_unix.so nullok obscure min=4 max=8 md5
 
+
Et décommenter + modifier :
Modifier le fichier common-password :
 
 
  password    required      pam_cracklib.so retry=3 minlen=6 difok=3
 
  password    required      pam_cracklib.so retry=3 minlen=6 difok=3
 
  password    sufficient    pam_ldap.so use_authtok nullok md5
 
  password    sufficient    pam_ldap.so use_authtok nullok md5
Ligne 228 : Ligne 275 :
  
 
Modifier le fichier common-session pour avoir :
 
Modifier le fichier common-session pour avoir :
session    optional      pam_ldap.so
+
session    optional      pam_ldap.so
session    required      pam_unix.so
+
session    required      pam_unix.so
#session    required      pam_mkhomedir.so skel=/etc/skel/
+
#session    required      pam_mkhomedir.so skel=/etc/skel/
session    optional      pam_foreground.so
 
  
 
Il faut modifier les fichiers /etc/pam.d/login et /etc/pam.d/su en ajoutant si besoin les directives "@include common-xyz".
 
Il faut modifier les fichiers /etc/pam.d/login et /etc/pam.d/su en ajoutant si besoin les directives "@include common-xyz".
Ligne 237 : Ligne 283 :
 
Modification du fichier /etc/pam_ldap.conf :
 
Modification du fichier /etc/pam_ldap.conf :
 
  host 127.0.0.1
 
  host 127.0.0.1
  base dc=mondomaine,dc=com
+
  base dc=localdomain,dc=net
  #binddn cn=admin,dc=mondomaine,dc=com
+
  #binddn cn=admin,dc=localdomain,dc=net
  rootbinddn cn=admin,dc=mondomaine,dc=com
+
  rootbinddn cn=admin,dc=localdomain,dc=net
 
  pam_password crypt
 
  pam_password crypt
  
 
Modification du fichier /etc/nsswitch.conf
 
Modification du fichier /etc/nsswitch.conf
  passwd: files ldap
+
  passwd: compat ldap
  group: files ldap
+
  group: compat ldap
  shadow: files ldap
+
  shadow: compat ldap
  
 
Modification du fichier /etc/libnss-ldap.conf
 
Modification du fichier /etc/libnss-ldap.conf
 
  host 127.0.0.1
 
  host 127.0.0.1
  base dc=mondomaine,dc=com
+
  base dc=localdomain,dc=net
  binddn cn=admin,dc=mondomaine,dc=com
+
  #binddn cn=admin,dc=localdomain,dc=net
  rootbinddn cn=admin,dc=mondomaine,dc=com
+
  rootbinddn cn=admin,dc=localdomain,dc=net
bindpw <mot de passe en clair>...
 
 
   
 
   
  nss_base_passwd    ou=people,dc=mondomaine,dc=com?one
+
  nss_base_passwd    ou=people,dc=localdomain,dc=net?one
  nss_base_group    ou=groups,dc=mondomaine,dc=com?one
+
  nss_base_group    ou=groups,dc=localdomain,dc=net?one
  nss_base_shadow    ou=people,dc=mondomaine,dc=com?one
+
  nss_base_shadow    ou=people,dc=localdomain,dc=net?one
 
   
 
   
 
  ssl no
 
  ssl no
Ligne 264 : Ligne 309 :
 
  bind_policy soft
 
  bind_policy soft
  
nss-ldap et pam-ldap utilisent le fichier /etc/ldap.secret ou /etc/pam_ldap.secret pour stocker le mot de passe à utiliser pour accéder au serveur LDAP. Il faut donc l’éditer afin qu’il contienne le mot de passe admin LDAP. Vérifier que ce fichier a bien des droits restreints (600) et qu’il appartient à root.
+
libnss-ldap et pam-ldap utilisent les fichiers /etc/libnss_ldap.secret et /etc/pam_ldap.secret pour stocker le mot de passe à utiliser pour accéder au serveur LDAP. Il faut donc les éditer afin qu’ils contiennent le mot de passe admin LDAP. Vérifier que ces fichiers ont bien des droits restreints (600) et qu’ils appartiennent à root.
 +
 
 +
'''ATTENTION !''' : '''nscd''' est un cache, donc il faut le redémarrer après ces modifications sinon rien n'est pris en compte avant longtemps !!!
 +
 
 +
'''PIRE''' : pour les tests, il faut l'arrêter sinon les modifications des utilisateurs (exemple : changement de groupe) ne sont carrément pas prises en compte en direct !
 +
 
  
 
C'est maintenant accessible via navigateur et connexion WebDAV (linux, XP...)
 
C'est maintenant accessible via navigateur et connexion WebDAV (linux, XP...)
 
* dossier Web dans Windows
 
* dossier Web dans Windows
 
* webdavs:// avec Konqueror
 
* webdavs:// avec Konqueror

Version actuelle datée du 30 décembre 2008 à 18:26

Mise en œuvre d'un serveur WebDAV sous Apache avec LDAP et SSL

Procédure adaptée
Fso 29 septembre 2008
Fso 08 décembre 2008

Installation

Apache, OpenSSL

voir procédure Apache2 SSL sur Debian Etch

WebDAV

Le module est déjà installé avec apache2.

Charger le module WebDAV

a2enmod dav
a2enmod dav_fs
a2enmod dav_lock
a2enmod rewrite

dav_fs charge par défaut le module dav.

Déclarer WebDAV

On crée d'abord un répertoire pour les partages :

mkdir /home/pub

Dans /etc/apache2/sites-enabled/000-default, remplacer "NameVirtualHost *" par :

NameVirtualHost *:80
NameVirtualHost *:443
DAVMinTimeout 600
DAVDepthInfinity On

Attention, à partir du moment où on a activé SSL, tous les VirtualHosts doivent être assignés soit au port 80 soit au port 443.

Créer le fichier /etc/apache2/sites-availables/webdav :

# L'alias est general aux VirtualHost (80 et 443) sinon la redirection ne fonctionne pas
Alias /pub /home/pub/
# To force redirect to SSL VH, uncomment :
#<VirtualHost *:80>
#   ServerName mondomaine
#   RewriteEngine on
#   RewriteCond %{HTTPS} !=on [NC]
#   RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
#</VirtualHost>

<VirtualHost *:443>
  ServerName mondomaine
  ServerAdmin webmaster@mondomaine
  SSLEngine On
  # If we have a real certificat, give the Authority :
  #SSLCACertificateFile /etc/ssl/certs/cacert_class3.crt
  SSLCertificateFile /etc/apache2/ssl/apache.pem
  SSLCertificateKeyFile /etc/apache2/ssl/apache.pem
  DocumentRoot /var/www
  <Directory />
     Options -Indexes FollowSymLinks
     AllowOverride none
  </Directory>
  DAVLockDB /var/lib/apache2/DAVLockDB
  <Location /pub>
     DAV On
     AuthType Basic
     AuthName "WebDAV"
     AuthBasicProvider ldap
     AuthLDAPURL "ldap://127.0.0.1/ou=people,[your base here]”
     AuthLDAPRemoteUserIsDN off
     ForceType text/plain
     Require valid-user
     Require ldap-filter &(uid=*)
  </Location>
  ErrorLog syslog
  LogLevel warn
  CustomLog /var/log/apache2/access_dav.log combined
</VirtualHost>

Et activer le site

a2ensite webdav
/etc/init.d/apache2 reload

Penser à créer le fichier DAVLockDB et donner à Apache les droit d'écriture :

mkdir -p /var/lib/apache2
touch /var/lib/apache2/DAVLockDB
chown -R www-data.www-data /var/lib/apache2

POUR RAPPEL - sauter cette section si on utilise LDAP

Sans LDAP, en utilisant uniquement htpasswd Dans /etc/apache2/conf/dav.conf

<Directory /var/www/dav/>
     Options Indexes MultiViews
     AllowOverride None
     Order allow,deny
     allow from all
     DAV On
# Si on a des messages "HTTP redirect" à la connexion linux, ajouter :
     DavDepthInfinity On
     SetEnv redirect-carefully 1

     AuthType Basic
     AuthName "webdav"
     AuthUserFile /var/www/dav/passwd.dav
     Require valid-user
</Directory>

On créé le fichier de mots de passe avec un user test

#htpasswd -c /var/www/dav/passwd.dav test

OpenLDAP

aptitude install slapd ldap-utils libpam-ldap libnss-ldap nscd

Note : NSCD est un cache qui accélère notablement les requêtes DNS, NSS, ...

Note2 : Attention à bien metre les mêmes valeurs à la configuration de libnss-ldap et libpam-ldap. Les mots de passe sont conservés dans /etc/libnss-ldap.secret, attetion aux droits 660 !

Configuration de LDAP :

donner un mot de passe administrateur
URL : ldaps://127.0.0.1
domaine : dc=localdomain,dc=net
version : 3
créer un administrateur NSS (cn=admin,dc=localdomain,dc=net)
Créer un fichier de mot de passe local pour l'administrateur
Pas d'authentification libpam pour accéder à LDAP
Donner un admin pour les mots de passe (cn=admin,dc=localdomain,dc=net)

Activer le module ldap apache

a2enmod ldap
a2enmod authnz_ldap

Installation de PhpLdapAdmin, utilitaire qui permet d’explorer et de modifier une base LDAP :

aptitude install phpldapadmin

TEST de phpldapadmin : https://<URL>/phpldapadmin

Installation de LAM (Ldap Account Manager)(Vérifier la dernière version sur http://lam.sourceforge.net)

Note : Les paquets Debian sont trop vieux (version 1.1.1-2) et ne supportent que PHP4 Note2 : il est également possible que php5 (meta-paquet) ne soit pas installé penser à l'ajouter sinon LAM ne s'installe pas. Note3 : le mot de passe par défaut est "lam"

wget http://surfnet.dl.sourceforge.net/sourceforge/lam/ldap-account-manager_2.4.0-1_all.deb
dpkg -i ldap-account-manager_2.4.0-1_all.deb

Penser à augmenter memory_limit à 64M dans /etc/php5/apache2/php.ini

Sur l'écran d'accueil (http://serveur/lam), aller dans configuration de LAM (mot de passe lam), "Editer les profils", choisir la langue par défaut (Français) et réinitialiser le mot de passe. Sauvegarder, puis revenir dans le même écran désormais en français.

Cliquer sur "Editer type de compte" et modifier les suffixes ldap pour utilisateur, groupe, machine. Effacer domaines Samba si ça n'est pas utilisé.

on se connecte avec le FULL DN (cn=admin,dc=localdomain,dc=net) et le mot de passe donné lors de l'installation de slapd

Modification du fichier /etc/ldap/slapd.conf

Création d’un mot de passe chiffré :

slappasswd
# SSHA par défaut. Utiliser 'slappasswd -h {md5}' pour un encodage MD5
New password:
Re-enter new password:
{SSHA}rquBbBgDEfCg9aQ1dluhBAiS1UQ0NK04

Copier ce mot de passe pour ajout dans slapd.conf.

Modifier /etc/ldap/slapd.conf :

database bdb
suffix "dc=mondomaine,dc=com"
directory "/var/lib/ldap"
rootdn "cn=admin,dc=mondomaine,dc=com"
rootpw {SSHA}rquBbBgDEfCg9aQ1dluhBAiS1UQ0NK04

Pour INFO Ce qui suit permet de paramétrer OpenLDAP en accès SSL, MAIS phpldapadmin ne sait se connecter dans ce mode... On laisse donc en "normal", les lignes suivantes sont là pour info.

Créer un certificat autosigné

openssl req -newkey rsa:1024 -x509 -nodes -out server.pem -keyout server.pem -days 3650

Paramétrer aussi le SSL par ajout de :

#######################################################################
# SSL:
# Uncomment the following lines to enable SSL and use the default
# snakeoil certificates.
#TLSCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem

#TLSCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

TLSCipherSuite HIGH:MEDIUM:-SSLv2
TLSCACertificateFile /etc/ldap/ssl/server.pem
TLSCertificateFile /etc/ldap/ssl/server.pem
TLSCertificateKeyFile /etc/ldap/ssl/server.pem

Et indiquer à LDAP de démarrer en SSL seulement dans /etc/default/slapd:

SLAPD_SERVICES="ldaps://127.0.0.1/"

Vérifier la connexion SSL :

openssl s_client -connect 127.0.0.1:636 -showcerts

doit donner "Verify return code: 18 (self signed certificate)"

Et dans ldap.conf, remplacer l'option "HOST" par les 2 lignes :

URI     ldaps://127.0.0.1
TLS_REQCERT allow

A TESTER : On en profite pour spécifier quelques index qui accéléreront les recherches par la suite :

index objectClass,uidNumber,gidNumber eq
index cn,sn,uid,displayName pres,sub,eq
index memberUid,mail,givenname eq,subinitial

VERIFIER : que les ACL pour protéger les données sensibles sont présentes :

access to attrs=userPassword
  by dn="cn=admin,dc=localdomain,dc=net" write
  by self write
  by anonymous auth
  by * none
access to *
  by dn="cn=admin,dc=localdomain,dc=net" write
  by * read

Modification du fichier /etc/default/slapd

Par défaut, le serveur prend en charge les interfaces Ipv6, ce qui générera un warning dans le syslog. Pour éviter cela, il faut spécifier l’option –4 dans le fichier /etc/default/slapd : SLAPD_OPTIONS="-4"

Configuration des clients LDAP via le fichier /etc/ldap/ldap.conf

BASE    dc=localdomain,dc=net
HOST    127.0.0.1
ldap_version 3
rootbinddn cn=admin,dc=localdomain,dc=net
pam_password crypt
nss_initgroups_ignoreusers  backup,bin,daemon,dhcp,games,gnats,irc,klog,libuuid,list,lp,mail,man,news,ntp,nx,proxy,root,sshd,statd,sync,sys,syslog,uucp,www-data

Redémarrage du service LDAP :

/etc/init.d/slapd restart

Tester le client

ldapsearch -x

ou, s'il y a une erreur ou que ldap.conf n'est pas encore configuré :

ldapsearch -H ldaps://localhost -b dc=localdomain,dc=net -x

On peut ajouter -d<1 à 8> pour avoir des infos supplementaires

Commencer à peupler la base LDAP

Créer un fichier init.ldif qui contient les éléments de base.

dn: ou=people,dc=localdomain,dc=net
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=localdomain,dc=net
objectClass: organizationalUnit
ou: groups

dn: ou=computers,dc=localdomain,dc=net
objectClass: organizationalUnit
ou: computers

Puis ajouter les éléments à la base avec ces commandes :

/etc/init.d/slapd stop

création de la structure

slapadd -l init.ldif
/etc/init.d/slapd start

Ouvrir un navigateur à l’adresse "http://adresseduserveur/phpldapadmin" et s’authentifier avec

cn=admin,dc=localdomain,dc=net

En principe tous les éléments (people, groups, etc...) doivent apparaître (lien "search" à gauche, et search sur "entire subtree").

Installation des connecteurs NSS-PAM :

apt-get install libnss-db nss-updatedb
apt-get install libpam-ldap libnss-ldap

Configuration des modules d’authentification PAM

La configuration de PAM est répartie dans 4 fichiers : common-account, common-auth, common-password et common-session (répertoire /etc/pam.d)

Pour utiliser des mots de passe plus "costaud" il faut installer le paquet libpam-cracklib. Sa configuration se fera dans common-password.

apt-get install libpam-cracklib

Modifier le fichier common-account :

account     sufficient      pam_ldap.so
account     required        pam_unix.so

Modifier le fichier common-auth :

auth     sufficient     pam_ldap.so use_first_pass
auth     required       pam_unix.so likeauth_secure nullok_secure

Modifier le fichier common-password, mettre en commentaire :

password     required       pam_unix.so nullok obscure min=4 max=8 md5

Et décommenter + modifier :

password     required      pam_cracklib.so retry=3 minlen=6 difok=3
password     sufficient    pam_ldap.so use_authtok nullok md5
password     required      pam_unix.so use_authtok use_first_pass

Modifier le fichier common-session pour avoir :

session     optional      pam_ldap.so
session     required      pam_unix.so
#session    required      pam_mkhomedir.so skel=/etc/skel/

Il faut modifier les fichiers /etc/pam.d/login et /etc/pam.d/su en ajoutant si besoin les directives "@include common-xyz".

Modification du fichier /etc/pam_ldap.conf :

host 127.0.0.1
base dc=localdomain,dc=net
#binddn cn=admin,dc=localdomain,dc=net
rootbinddn cn=admin,dc=localdomain,dc=net
pam_password crypt

Modification du fichier /etc/nsswitch.conf

passwd: compat ldap
group: compat ldap
shadow: compat ldap

Modification du fichier /etc/libnss-ldap.conf

host 127.0.0.1
base dc=localdomain,dc=net
#binddn cn=admin,dc=localdomain,dc=net
rootbinddn cn=admin,dc=localdomain,dc=net

nss_base_passwd    ou=people,dc=localdomain,dc=net?one
nss_base_group     ou=groups,dc=localdomain,dc=net?one
nss_base_shadow    ou=people,dc=localdomain,dc=net?one

ssl no
pam_password md5

# bug (?) il faut modifier la valeur bind_policy sinon pb de démarrage
bind_policy soft

libnss-ldap et pam-ldap utilisent les fichiers /etc/libnss_ldap.secret et /etc/pam_ldap.secret pour stocker le mot de passe à utiliser pour accéder au serveur LDAP. Il faut donc les éditer afin qu’ils contiennent le mot de passe admin LDAP. Vérifier que ces fichiers ont bien des droits restreints (600) et qu’ils appartiennent à root.

ATTENTION ! : nscd est un cache, donc il faut le redémarrer après ces modifications sinon rien n'est pris en compte avant longtemps !!!

PIRE : pour les tests, il faut l'arrêter sinon les modifications des utilisateurs (exemple : changement de groupe) ne sont carrément pas prises en compte en direct !


C'est maintenant accessible via navigateur et connexion WebDAV (linux, XP...)

  • dossier Web dans Windows
  • webdavs:// avec Konqueror