Serveur HTTP Apache Version 2.4
Description: | Fonctionnalité de création et gestion de versions de documents via le web (WebDAV) |
---|---|
Statut: | Extension |
Identificateur de Module: | dav_module |
Fichier Source: | mod_dav.c |
Ce module ajoute à Apache une fonctionnalité WebDAV de classes 1 et 2 ('Web-based Distributed Authoring and Versioning' ou Création et gestion de versions de documents via le web). Il s'agit d'une extension du protocole HTTP qui permet de créer, déplacer, copier et supprimer des ressources ou collections de ressources sur un serveur web distant.
Pour activer le module mod_dav
, ajoutez la ligne
suivante à un conteneur de votre fichier httpd.conf
:
Dav On
Ceci active le fournisseur de système de fichier DAV implémenté par
le module mod_dav_fs
. Ce dernier doit donc être
compilé dans le serveur ou chargé au démarrage à l'aide de la
directive LoadModule
.
En outre, vous devez indiquer où se trouve la base de données des
verrous DAV via une directive DavLockDB
dans la section globale de
votre fichier httpd.conf
:
DavLockDB /usr/local/apache2/var/DavLock
Le répertoire contenant le fichier de la base de données des
verrous doit avoir des droits en écriture pour l'utilisateur et le
groupe sous lesquels Apache s'exécute et définis respectivement par
les directives User
et
Group
.
Si vous souhaitez limiter l'accès aux répertoires où DAV est
activé, vous pouvez ajouter une clause <Limit>
dans la section <Location>
considérée. Pour
définir la quantité maximale de données en octets qu'un client
DAV peut envoyer par requête, vous devez utiliser la directive
LimitXMLRequestBody
, car La
directive LimitRequestBody
"habituelle" n'a aucune incidence sur les requêtes DAV.
DavLockDB "/usr/local/apache2/var/DavLock" <Directory "/usr/local/apache2/htdocs/foo"> Require all granted Dav On AuthType Basic AuthName DAV AuthUserFile "user.passwd" <LimitExcept GET POST OPTIONS> Require user admin </LimitExcept> </Directory>
Etant donné que les méthodes d'accès DAV permettent à des clients
distants de manipuler des fichiers sur le serveur, vous devez vous
assurer que votre serveur est bien sécurisé avant d'activer
mod_dav
.
Tout répertoire du serveur où DAV est activé doit être protégé
par une procédure d'authentification. L'utilisation de
l'authentification HTTP de base n'est pas recommandée. Vous devez
utiliser au moins l'authentification HTTP à base de condensés
qu'implémente le module mod_auth_digest
.
Pratiquement tous les clients WebDAV supportent cette méthode
d'authentification. Vous pouvez aussi utiliser l'authentification de
base sur une connexion où SSL est activé.
Pour que mod_dav
puisse manipuler des fichiers,
il doit avoir des permissions en écriture sur les répertoires et les
fichiers qui sont sous son contrôle ; en d'autre termes, c'est
l'utilisateur et le groupe sous lesquels Apache s'exécute et définis
par les directives User
et
Group
qui doivent avoir
les droits en écriture sur ces fichiers et répertoires. Les fichiers
nouvellement créés appartiendront aussi à ces utilisateur et groupe.
Par conséquent, il est important de contrôler l'accès à ce compte.
Les répertoires DAV sont considérés comme privés du point de vue
d'Apache, et la modification des fichiers qu'ils contiennent
autrement que par l'intermédiaire d'Apache (par exemple par FTP ou
par des outils du niveau du système de fichiers) ne doit pas être
permise.
mod_dav
peut faire l'objet de plusieurs sortes
d'attaques par déni de service. La directive LimitXMLRequestBody
permet de limiter la
quantité de mémoire consommée pour interpréter des requêtes DAV de
grande taille. En outre, la directive DavDepthInfinity
permet d'empêcher les
requêtes PROPFIND
concernant un répertoire de très
grande taille de consommer de grandes quantités de mémoire. Un autre
type d'attaque par déni de service peut aussi être mené par un
client qui remplit simplement tout l'espace disque disponible avec
des fichiers de très grande taille. Etant donné qu'il n'existe aucun
moyen direct d'éviter ce genre d'attaque dans Apache, vous ne devez
accorder des accès DAV qu'à des utilisateurs de confiance.
Les requêtes ayant pour but de manipuler des fichiers dynamiques
(scripts PHP, scripts CGI, etc...) en utilisant
mod_dav
sont courantes. Ce traitement n'est pas
évident car une requête
GET
va toujours tenter d'exécuter le script, plutôt que
de télécharger son contenu. Pour éviter cet inconvénient, une
méthode possible consiste à faire correspondre deux URLs
différentes au même contenu, l'une d'entre elles servant à lancer le
script, alors que l'autre peut être utilisée pour le télécharger et
le manipuler avec DAV.
Alias "/phparea" "/home/gstein/php_files" Alias "/php-source" "/home/gstein/php_files" <Location "/php-source"> Dav On ForceType text/plain </Location>
Avec cette configuration, on peut utiliser
http://example.com/phparea
pour afficher le résultat de
l'exécution des scripts PHP, et
http://example.com/php-source
pour les manipuler avec
DAV.
Description: | Active les méthodes HTTP WebDAV |
---|---|
Syntaxe: | Dav On|Off|nom fournisseur |
Défaut: | Dav Off |
Contexte: | répertoire |
Statut: | Extension |
Module: | mod_dav |
La directive Dav
permet d'activer les
méthodes HTTP WebDAV pour le conteneur condidéré :
<Location "/foo"> Dav On </Location>
La valeur On
est en fait un alias vers le
fournisseur par défaut filesystem
implémenté par le
module mod_dav_fs
. Notez que lorsque DAV est activé
pour un conteneur, on ne peut pas le désactiver pour ses
sous-conteneurs. Pour un exemple de configuration complet,
reportez-vous à la section précédente.
Description: | Définir le chemin de la racine du répertoire |
---|---|
Syntaxe: | DavBasePath root-path |
Défaut: | None |
Contexte: | répertoire |
Statut: | Extension |
Module: | mod_dav |
Compatibilité: | Disponible à partir de la version 2.4.58 du serveur HTTP Apache |
Si le répertoire DAV est défini en utilisant une correspondance
d'expression rationnelle (comme LocationMatch
), mod_dav
ne sera pas
en mesure de déterminer de lui-même la racine du répertoire à partir du chemin
seul. En conséquence, des fournisseurs tiers (par exemple le module mod_dav_svn
de Subversion) pourront échouer à traiter des requêtes sans disposer de la
valeur correcte de la racine du répertoire.
Pour permettre aux fournisseurs de travailler correctement en présence
d'une telle configuration, vous devez utiliser
DavBasePath
.
<LocationMatch "^/repos/"> Dav svn DavBasePath /repos SVNParentPath /var/svn </LocationMatch>
Description: | Autorise les requêtes PROPFIND avec en-tête Depth: Infinity |
---|---|
Syntaxe: | DavDepthInfinity on|off |
Défaut: | DavDepthInfinity off |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_dav |
La directive DavDepthInfinity
permet
d'autoriser le traitement des requêtes PROPFIND
contenant l'en-tête Depth: Infinity. Par défaut, ce type de requête
n'est pas autorisé, car il peut favoriser les attaques de type Déni
de service.
Description: | Durée minimale pendant laquelle le serveur maintient un verrou sur une ressource DAV |
---|---|
Syntaxe: | DavMinTimeout secondes |
Défaut: | DavMinTimeout 0 |
Contexte: | configuration globale, serveur virtuel, répertoire |
Statut: | Extension |
Module: | mod_dav |
Lorsqu'un client demande le verrouillage d'une ressource DAV, il peut aussi spécifier une durée au bout de laquelle le verrou sera automatiquement supprimé par le serveur. Cette valeur ne constitue qu'une demande, et le serveur peut l'ignorer ou informer le client qu'il va utiliser une valeur arbitraire.
La directive DavMinTimeout
permet de
spécifier, en secondes, la durée minimale de verrouillage à renvoyer
au client. Les Répertoires Web de Microsoft présentent une durée par
défaut de 120 secondes ; la directive
DavMinTimeout
permet de définir une valeur
supérieure (par exemple 600 secondes), afin de réduire les risques
de perte du verrou par le client suite à une surcharge du
réseau.
<Location "/MSWord"> DavMinTimeout 600 </Location>