Login
blog > farwarx > Mise en place de WebDAV sur Apache2

Mise en place de WebDAV sur Apache2

Posté par : farwarx - Le Vendredi 15 Mai 2009 à 10:46

 Mise en place du module WebDAV pour Apache2
Sur Linux / Debian

Webdav permet d’utiliser le protocole HTTP comme un partage réseau.

 

WebDAV (Web-based Distributed Authoring and Versioning) est une extension du protocole HTTP.

Il permet de rajouter les fonctions d'écritures, de synchronisation, de versionning, etc... à un simple site Web.

Grâce à WebDAV, vous pourrez utiliser votre site Internet comme un espace de stockage distant.

Vous pourrez alors modifier vore site Internet en direct (sans passer par le protocole FTP), créer des répertoires, des fichiers etc.... dans un simple navigateur de fichier (Explorateur Windows via les favoris réseaux, Nautilus, Konqueror, Finder...).

Et vous pourrez travailler à plusieurs sur le même espace, car WebDAV gère le système de 'Lock', c'est à dire qu'il va vérouiller un fichier ouvert par un utilisateur et le dévérouillera à sa fermeture.

 

 

SOMMAIRE

I. Caractéristiques du serveur Apache2
II. Installation de WebDAV
2.1. Ajout des modules à Apache2
2.2. Création de la base WebDAV
III. Sécurité de WebDAV
3.1. Arborescence
3.2. Les fichiers de sécurité
3.2.1. .DAVlogin
3.2.2. .DAVgroup
3.2.3. .htaccess
IV. Activation de WebDAV sur un VirtualHost
4.1. VirtualHost
4.2. Activation du VirtualHost
4.3. Restart du service Web
V. Tests
5.1. Windows XP
5.2. Linux
5.2.1. Konqueror
5.2.2. Nautilus
5.2.3. Montage système
5.3. MAC
5.4. Windows Vista
VI. Liens
VII. Ajout support SSL
7.1. Génération des clés SSL
7.2. Ajout d'un Virtual Host
7.3. Url à uiliser pour le partage WebDAV

 

 

I. Caractéristiques du serveur Apache2

Apache2 : /etc/apache2
Vhosts : /etc/apache2/sites-available/
Sites : /var/www/webdav
Répertoire Webdav : /var/www/webdav/private
Logs : /var/www/logs
Droits Apache2 : www-data : www-data

 

 

II. Installation de WebDAV

2.1. Ajout des modules à Apache2

Utilisation de la commande système : a2enmod
a2enmod dav
a2enmod dav_fs
a2enmod dav_lock

 

2.2. Création de la base WebDAV

mkidr /var/lock/DAVLock
touch /var/lock/DAVLock/DAVLock
chown www-data:www-data /var/lock/DAVLock
chown www-data:www-data /var/lock/DAVLock/DAVLock

 

 

III. Sécurité de WebDAV

WebDAV utilise la sécurité du serveur Web. A savoir, les .htaccess et compagnies.
Je vais présenter l’utilisation d’utilisateurs, de groupes et d’accès selon les répertoires.
Je vais prendre pour exemple deux utilisateurs et un répertoire partagé.

 

3.1. Arborescence

Site web : /var/www/webdav/
Accueil WebDAB : /var/www/webdav/private
Répertoire user1 : /var/www/webdav/private/user1
Répertoire user2 : /var/www/webdav/private/user2
Répertoire partage : /var/www/webdav/private/partage

 

3.2. Les fichiers de sécurité

Ils sont aux nombres de trois et un seul se trouvera dans les répertoires à protéger.

 

3.2.1. .DAVlogin

Fichier regroupant les utilisateurs.
Emplacement : /var/www/.DAVlogin


Création :

htpasswd -c /var/www/.DAVlogin admin
New password:
Re-type new password:
Adding password for user admin


Ajout des utilisateurs :

htpasswd /var/www/.DAVlogin user1
New password:
Re-type new password:
Adding password for user user1

htpasswd /var/www/.DAVlogin user2
New password:
Re-type new password:
Adding password for user user2

 

Le fichier ressemble à ça :

 

admin:pbsEaKL0HI0rs
user1:nTygCNgdFQQ0E
user2:1vXY036eIIJ/6


 

 

3.2.2. .DAVgroup

Fichier regroupant les groupes d’utilisateurs.
Emplacement : /var/www/.DAVgroup

 

admin-grp: admin
user1-grp: client1
user2-grp: client2

 


Exemple plus complexe pour mieux comprendre la structure :

 

admin-grp: admin
chef-supreme-grp : chefsupreme
chef-reseau-grp: chef-windows chef-linux chef
chef-dev-grp: chef-php chef-asp chef-java
chef-compta-grp: chef-bilan chef-resultat chef-paye
users-reseau-grp: toto1 toto2 toto3
users-dev-grp: gus1 gus2 gus3
users-compta-grp: fric1 fric2 fric3


######################################################################

Avec ce modèle, nous pourrons donner :
-        des droits de lecture à tout, au groupe chef-supreme;
-        des droits de lecture aux users-reseaux-grp à chef-reseau-grp ;
-        des droits de lecture aux users-dev-grp à chef-dev-grp ;
-        des droits de lecture aux users-compta-grp à chef-compta-grp ;
-        des droits complets à chaque utilisateur dans son répertoire ;
-        des droits complets à l’admin (^^) ;
-        etc… .

 

 

3.2.3. .htaccess

Fichier donnant ou non, des autorisations en fonction de groupes ou utilisateurs.
Emplacement : dans chaque répertoire utilisateurs (à partir de /var/www/webdav/private)
ATTENTION : chaque répertoire hérite du .htaccess parent !!!

 
.htaccess principal : /var/www/webdav/private/.htaccess

 

<Limit GET POST PROPFIND>
require valid-user
</Limit>

<Limit PUT DELETE COPY MOVE>
require group admin-grp
</Limit>



Seul un utilisateur valide et authentifier pourra accéder à ce répertoire.
Les utilisateurs valident ne pourront que lire le contenu.
Les utilisateurs du groupe ‘admin-grp’ pourront en plus de lire, écrire, effacer, créer un répertoire etc…


.htaccess utilisateurs : /var/www/webdav/private/user1/.htaccess
Il sera à modifier en fonction des utilisateurs ou de vos propres choix.

 

require group user1-grp admin-grp


 

Ne pourra accéder à ce répertoire et sous répertoires, que les utilisateurs du groupe user1-grp et admin-grp. Ils auront tous les droits.


Vous pouvez utiliser les utilisateurs à la place des groupes.
Remplacer ‘group’ par ‘user’.

 

 

 

IV. Activation de WebDAV sur un VirtualHost

 

4.1. VirtualHost

vim /etc/apache2/sites-available/webdav
 

 

<VirtualHost *:80>
        ServerAdmin webmaster@domaine.tld
        ServerAlias hostname.domaine.tld


        DocumentRoot /var/www/webdav
        <Directory /var/www/webdav>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/www/logs/webdav_error.log
        CustomLog /var/www/logs/webdav_access.log combined
        LogLevel warn

        #WEBDAV
        DavLockDB /var/lock/DAVLock/DAVLock
        DAVMinTimeout 600
        <Directory /var/www/webdav/private>
        AuthName "DAV Authentication"
        AuthUserFile /var/www/.DAVlogin
        AuthGroupFile /var/www/.DAVgroup
        AuthType Basic
        AllowOverride AuthConfig
        DAV On
        Options Indexes FollowSymLinks MultiViews Includes
        </Directory>
</VirtualHost>

 

 

 

4.2. Activation du VirtualHost


a2ensite webdav

 

 

4.3. Restart du service Web


/etc/init.d/apache2 restart

 

 

V. Tests

5.1. Windows XP


Ajouter un ‘favori réseau’

 

webdav windows xp favori reseau

 

 

Un seul choix

 

webdav windows xp favori reseau assistant creer

 

 

Adresse du favori

 

webdav windows xp adresse url port dossier

 

 

Connexion à WebDAV

 

webdav windows xp login connexion

 

 

Explorateur Windows du dossier WebDAV

 

webdav windows explorer

 

5.2. Linux

5.2.1. Konqueror

Il suffit de mettre dans la barre d'adresse: webdav://hostname.domaine.tld/private

 

Connexion

 

webdav linux konqueror

 

 

Répertoires

 

webdav linux konqueror dossier

 

 

5.2.2. Nautilus

A FAIRE

 

 

5.2.3. Montage système

Montage d’un lecteur réseau avec le système de fichier ‘davfs2’

A FAIRE
 

 

5.3. MAC

A FAIRE

 

 

5.3. Windows Vista

Installation du module 'Webfldrs-KB907306-FRA.exe'

Il est disponibleà cette adresse: http://www.microsoft.com/downloads/

CAPTURES A FAIRE

 

 

VI. Liens

 

http://www.pervasive-network.org

http://www.debian-administration.org

http://www.ulaval.ca

http://www.ibiblio.org/pub/Linux/docs/HOWTO/translations/fr

 

 

VII. Ajout support  SSL

7.1. Génération des clés SSL

 Dossier SSL : /var/www/ssl

 

Commandes:

cd /var/www/ssl

openssl genrsa -out ssl.key 1024

Generating RSA private key, 1024 bit long modulus
.......++++++
.++++++
e is 65537 (0x10001)

 

openssl req -new -x509 -days 365 -key ssl.key -out ssl.crt


You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:REGION
Locality Name (eg, city) []:Fr
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Kookyoo
Organizational Unit Name (eg, section) []:Blog
Common Name (eg, YOUR name) []:farwarx
Email Address []:email@domaine.tld

 

Restart du service Web:

/etc/init.d/apache2 restart

 

 

7.2. Ajout d'un Virtual Host

 Fichier : /etc/apache2/sites-available/webdav-ssl

 

<VirtualHost *:443>
        ServerAdmin webmaster@domaine.tld
        ServerAlias hostname.domaine.tld


        DocumentRoot /var/www/webdav
        <Directory /var/www/webdav>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/www/logs/webdav_error.log
        CustomLog /var/www/logs/webdav_access.log combined
        LogLevel warn

        #WEBDAV
        DavLockDB /var/lock/DAVLock/DAVLock
        DAVMinTimeout 600
        <Directory /var/www/webdav/private>
        AuthName "DAV Authentication"
        AuthUserFile /var/www/.DAVlogin
        AuthGroupFile /var/www/.DAVgroup
        AuthType Basic
        AllowOverride AuthConfig
        DAV On
        Options Indexes FollowSymLinks MultiViews Includes
        </Directory>

        SSLEngine on
        #   SSLCertificateFile directive is needed.
        SSLCertificateFile    /var/www/ssl/ssl.crt
        SSLCertificateKeyFile /var/www/ssl/ssl.key
        AddDefaultCharset    ISO-8859-15
        AddCharset           ISO-8859-15 .iso-8859-15 .latin15 .fr

        SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
        <FilesMatch ".(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>

</VirtualHost>

 

Activation du VirtualHost:

a2ensite webdav-ssl

/etc/init.d/apache2 reload

 

 

7.3. Url à uiliser pour le partage WebDAV

 

Il faut utiliser l'url suivante: https://hostname.domaine.tld:443/private

Et voilà ;)

 

 

 

 



Billet sous licence Creative Commons BY-NC-SA 

Maxime T.

Rédacteur chez Kookyoo.net > blog/farwarx

www.teissedre.info







Commentaires 13 commentaires

farwarx le 15 Mai 2009 à 11:50

A venir:
- autre méthode d'authentification (http-digest)
- intégration du ssl pour crypter les échanges

Seb le 15 Mai 2009 à 12:46

Très intéressant, si j'ai un peu de temps j'aimerais bien tester ça. Une alternative à SVN ou Samba qui pourrait m'être pratique. Il manque juste une petite présentation du système, quelques mots pour expliquer à quoi ça sert aux nouveaux venus.

farwarx le 15 Mai 2009 à 13:55

Okidoki! Je rajouterai cela sous peu.

farwarx le 15 Mai 2009 à 16:39

SSL ok!
Reste:
- présentation
- http-digest

farwarx le 15 Mai 2009 à 17:33

Présentation Ok!
Reste:
- http-digest

farwarx le 15 Mai 2009 à 17:57

Bon, en fait, pas de http-digest.
Ca permet de crypter le mot de passe, mais c'est autant crackable que l'authentification basique.
Donc utilisez le SSL et tout ira bien ;)

Tonio le 16 Mai 2009 à 3:03

Intéressant comme sujet... même si en ce moment j'ai pas trop le temps de tester.
Par contre vu l'ampleur que prend le billet, il me semble que ce serait mieux de faire un dossier. Ton billet ne sera que mieux référencé.
;)

Le Grand Nain le 16 Mai 2009 à 15:19

Salut,

e te remercie beaucoup pour ton aide et tes explications qui reste simples et compréhensibles. Je suis étudiant, et mon projet de fin d’année est de créer un serveur Webdav, ton site m’a été d’une grande utilité. J’ai pu remarquer qu’il était peu utilisé sur les serveurs. Je trouve ça bien dommage, car on trouve peu d’explications simples et clairs.

___________________

Par contre, j’avais une question, est ce que tu sais s’il est possible d’inclure plusieurs chemins vers des dossiers dans une seule balise (pour eviter de réecrire plusieurs fois la meme chose) ? Du genre :

< Directory /var/www/enseignant/latourte-françois/ /var/www/enseignant/henri-delacourt/ >

Mais bon, j’ai bien sur essayé cela, cela ne fonctionne pas... J’ai essayé également en m’aidant des alias, mais rien n’y fait...

_________________________

De plus, je n'arrive pas à utiliser des limites seulement pour un utilisateur, et d'autres limites pour des groupes pour le même dossier, je crois <Directory /var/www/etudiant/RT/jeremy>
DAV on
AuthName "WebDAV Storage"
AuthType Basic
AuthUserFile /var/www/htpasswd-webdav


<Limit GET PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require user thibaut
</Limit>

<Limit GET PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require user jeremy
</Limit>

<Limit GET PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require group webdav-enseignant
</Limit>

</Directory>

farwarx le 16 Mai 2009 à 17:30

Salut 'Le Grand Nain',
J'essaye de faire des tutos simples et complet, donc si ça marche, tant mieux ;)

Pour ton problème, j'utiliserai ceci:
< Directory /var/www/enseignant>
Cela inclura tous les sous dossiers.

A l'intérieur, tu peux mettre des limites de lecture (GET POST).
Et à chaque répertoire (ceux des enseignants) tu mets le require user 'enseignant'.

Je ne connais pas ta politique de sécurité.
Exemple, si chaque enseignant peut tout voir, et ne peut modifier que son propre dossier ou pas.
Si oui, il faut que tu mettes en limite GET POST les valid-user, et que tu ne mettes aucune limite au bon utilisateur. (un peu comme au 3.2.3 du tuto).

Le Grand Nain le 17 Mai 2009 à 1:24

Content de voir que tu as repondu rapidement. :)

Le premier problème est résolu grâce à toi, ça m'est pas trop venu à l'idée qu'on pouvait mettre des limites sur un dossier et que cela se répercute sur tous les sous-dossiers (pourtant, ça parait si logique...) :)

J'ai reussi à trouver la solution pour mon second problème, j'avais juste des problèmes de droits sur fichiers, mais ce que j'avais écris étais juste, et également ce que tu as dit. Enfin, presque juste, je me suis rendu compte également que j'avais oublié de mettre : "AuthGroupFile /var/www/htgroup-webdav ". En clair, on peux belle et bien mettre des limites juste pour certains utilisateurs et des limites pour des groupes, pour le même dossier.

Merci du coup de pouce, et encore merci pour ce bon tuto ! ;)

Jérémy Wanderscheid le 19 Mai 2009 à 14:03

Pour la partie 5.2.3 j'ai procéder comme suit sur ma Ubuntu Jaunty.

sudo apt-get install davfs2

mkdir /home/user/montage_dav

# montgae
sudo mount.davfs http://monserveurdav.domaine.tld /home/user/montage_dav/

# demontage
sudo umount /home/user/montage_dav

farwarx le 19 Mai 2009 à 19:27

Merci Jérémy Wanderscheid, j'avais zappé la fin du tuto ;)
Je le mettrais à jour sous peu.

Dionysoos le 04 Octobre 2012 à 17:19

Merci pour excellent billet qui m'a permit de mettre en place un serveur Web-Dav. Par contre il n'y a pas de grosse faille de sécurité avec les fichiers .htaccess ? Il me semble que l'utilisation est même déconseillé par Apache.

Encore merci.



.laisser un commentaire




Codes html interdits. Les liens sont convertis automatiquement.

Réalisation

Code & Design : Sébastien Cardona

Page générée en : 0.448752s