WebDAV sur Apache avec LDAP : Différence entre versions
De wikiGite
Ligne 70 : | Ligne 70 : | ||
CustomLog /var/log/apache2/access_dav.log combined | CustomLog /var/log/apache2/access_dav.log combined | ||
</VirtualHost> | </VirtualHost> | ||
+ | Et activer le site | ||
+ | a2ensite webdav | ||
+ | /etc/init.d/apache2 reload | ||
---------------------- ANCIENNE VERSION | ---------------------- ANCIENNE VERSION | ||
Ligne 92 : | Ligne 95 : | ||
#htpasswd -c /var/www/dav/passwd.dav 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...) | C'est maintenant accessible via navigateur et connexion WebDAV (linux, XP...) | ||
− | + | * dossier Web dans Windows | |
− | + | * webdavs:// avec Konqueror |
Version du 8 décembre 2008 à 18:07
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