WebDAV sur Apache avec LDAP
De wikiGite
Sommaire
PROCEDURE A REVOIR, TESTEE SEULEMENT AVEC HTPASSWD, EN HTTP
Procédure adaptée Fso 29 septembre 2008 à 11:48 (CEST)
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 :
# 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/mondomaine.crt SSLCertificateKeyFile /etc/apache2/ssl/mondomaine.key DocumentRoot /var/www <Directory /> Options -Indexes FollowSymLinks AllowOverride none </Directory> DAVLockDB /var/lib/apache2/DAVLockDB Alias /pub /home/pub/ <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
ANCIENNE VERSION
Puis 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
apt-get install slapd ldap-utils libpam-ldap libnss-ldap nscd
(NSCD est un cache qui accélère notablement les requêtes DNS, NSS, ...)
Configuration de LDAP :
dpkg-reconfigure slapd
UTILE ?
Installation de PhpLdapAdmin, utilitaire qui permet d’explorer et de modifier une base LDAP :
apt-get install phpldapadmin
Modification du fichier /etc/ldap/slapd.conf
Si nécessaire, création d’un mot de passe chiffré :
slappasswd # utiliser 'slappasswd -h {md5}' pour un encodage MD5 New password: Re-enter new password: {SSHA}rquBbBgDEfCg9aQ1dluhBAiS1UQ0NK04
Ajout du mot de passe cripté dans slapd.conf :
database bdb suffix "dc=mondomaine,dc=com" directory "/var/lib/ldap" rootdn "cn=admin,dc=mondomaine,dc=com" rootpw {SSHA}rquBbBgDEfCg9aQ1dluhBAiS1UQ0NK04
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
CES CHAMPS EXISTENT-ILS ?
A TESTER : Ajout de quelques ACL pour protéger les données sensibles :
access to attrs=userPassword by self 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 anonymous auth by * none access to * by * read
CES CHAMPS EXISTENT-ILS ?
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=mondomaine,dc=com host 127.0.0.1 ldap_version 3 rootbinddn [your rootbinddn, usually cn=admin,[base]] 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
Commencer à peupler la base LDAP
Créer un fichier init.ldif qui contient les éléments de base.
dn: ou=people,dc=mondomaine,dc=com objectClass: organizationalUnit ou: people dn: ou=groups,dc=mondomaine,dc=com objectClass: organizationalUnit ou: groups dn: ou=computers,dc=mondomaine,dc=com objectClass: organizationalUnit ou: computers
Puis initialiser la base avec ces commandes :
/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
slapadd -l init.ldif /etc/init.d/slapd start
Ouvrir un navigateur à l’adresse "http://adresseduserveur/phpldapadmin" et s’authentifier avec
cn=admin,dc=mondomaine,dc=com
En principe tous les éléments (people, groups, etc...) doivent apparaître.
Installation des connecteurs NSS-PAM :
apt-get install libnss-db nss-updatedb apt-get install libpam-smbpass 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 :
password sufficient pam_ldap.so use_authtok password required pam_smbpass.so password required pam_unix.so nullok obscure min=4 max=8 md5
Modifier le fichier common-password :
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/
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".
Modification du fichier /etc/pam_ldap.conf :
host 127.0.0.1 base dc=mondomaine,dc=com #binddn cn=admin,dc=mondomaine,dc=com rootbinddn cn=admin,dc=mondomaine,dc=com pam_password crypt
Modification du fichier /etc/nsswitch.conf
passwd: files ldap group: files ldap shadow: files ldap
Modification du fichier /etc/libnss-ldap.conf
host 127.0.0.1 base dc=mondomaine,dc=com binddn cn=admin,dc=mondomaine,dc=com rootbinddn cn=admin,dc=mondomaine,dc=com bindpw <mot de passe en clair>... nss_base_passwd ou=people,dc=mondomaine,dc=com?one nss_base_group ou=groups,dc=mondomaine,dc=com?one nss_base_shadow ou=people,dc=mondomaine,dc=com?one ssl no pam_password md5 # bug (?) il faut modifier la valeur bind_policy sinon pb de démarrage 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.
C'est maintenant accessible via navigateur et connexion WebDAV (linux, XP...)
- dossier Web dans Windows
- webdavs:// avec Konqueror