Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
openbsd:openbsdwebdav [2006/06/05 14:54]
benoyst created, peut etre, mais premier jet.
openbsd:openbsdwebdav [2010/01/12 13:29] (current)
Line 1: Line 1:
 +
 +Alors, l'​objectif est de faire un serveur d'​échanges de fichiers, sur un réseau local ou distant, avec autant de facilité qu'une clef usb, donc un peu comme une clef usb, mais sans clef usb, et que cela soit facile à utiliser pour plein de personnes.
 +
 +Les besoins sont:
 +
 +* facilité pour les clients de se connecter
 +
 +* pas d'​installation sur le poste client
 +
 +* facilement gérable et sécurisable
 +
 +* propre, joli et surtout, amusant.
 +
 +Le protocole magique s'​appelle [[http://​www.webdav.org/​|WebDAV]]. Ca ne répond pas forcément à tous les besoins du monde et ce n'est donc pas le NFS ou le SMB-killer, mais ce protocole aligne plusieurs belles qualités qu'il est intéressant de passer en revue. Et pour les passer en revue, haha, rien de vaut une petite installation,​ objet de la présente page.
 +
 +====== Apache, SSL et Webdav: un disque virtuel distant ======
 +
 +Apache est proprement installé sous ton OpenBSD. Installons le module pour gérer le protocole WebDAV, qui s'​appelle,​ sans surprise, ''​mod_dav''​.
 +
 +===== Installation sous OpenBSD =====
 +
 +On ne va pas chercher bien loin:
 +
 +  cd /​usr/​ports/​www/​mod_dav/​
 +  sudo make && sudo make install
 +  sudo apachectl stop
 +  sudo  /​usr/​local/​sbin/​mod_dav-enable
 +  sudo apachectl start
 +
 +Plutôt simple, hein.
 +
 +Note: sous Linux il existe les paquets libapache-mod-dav et alii. Je te laisse faire, ici, on causera d'​OpenBSD.
 +
 +===== Configuration de Apache/​WebDAV sous OpenBSD =====
 +
 +Le fichier de configuration d'​Apache (httpd.conf) a été modifié par l'​installateur de mod_dav. Il a en particulier rajouté:
 +
 +  LoadModule dav_module ​        /​usr/​lib/​apache/​modules/​libdav.so
 +
 +
 +Si, vérifie. ​
 +
 +Apache est, sous OpenBSD, dans un chroot, mais le fichier fait bien référence à /​usr/​lib/​apache/​modules/​libdav.so. C'est normal, ne t'​inquiète pas.
 +
 +On rajoute au fichier de configuration ''​httpd.conf''​ les lignes suivantes:
 +
 +  ## ces instructions doivent être *hors* de la Directive
 +  DAVLockDB /​htdocs/​mylock/​DAVLock/​
 +  DAVMinTimeout 600
 +
 +  ## Directive spécifique WebDAV
 +  <​Directory "/​var/​www/​htdocs/​webdav">​
 +     DAV On
 +     ​AllowOverride None
 +     ​Options Indexes FollowSymLinks
 +     order allow,deny
 +     allow from all
 +    <limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
 +    </​Limit>​
 +  </​Directory>​
 +
 +Maintenant, crée les répertoires nécessaires à ton travail.
 +
 +Sous OpenBSD, Apache est donc chrooté sous "/​var/​www/",​ c'est pourquoi le lien DAVLock pointe vers "/​htdocs/​mylock/​DAVLock/",​ alors que, les répertoires pointés par une directive "​Directory"​ sont bien en dehors du chroot().
 +
 +Les répertoires doivent avoir des permissions étendues pour l'​utilisateur sous lequel s'​exécute le serveur Web. Le dépôt WebDAV lui-même doit appartenir au serveur, je lui ai mis les droits 777. Le répertoire qui contient les fichiers de verrou doit, lui aussi, appartenir au serveur.
 +
 +On relance Apache, hop, joie, pleurs, émotion.
 +
 +
 +===== On va faire un test, là, monsieur =====
 +
 +Pour tester facilement, on peut utiliser avec plézir l'​excelllllent [[Konqueror|http://​www.konqueror.org/​]] du bureau KDE. On tape webdav://​votre-serveur/​webdav/​ et magie, ça marche.
 +
 +Il existe également un outil en ligne de commande nommé ''​cadaver''​ pour accéder à webdav. Il est rudement pratique. Démonstration: ​
 +
 +  cadaver http://​mon.serveur/​webdav
 +  dav:/​webdav/>​ ls
 +  Listing collection `/​webdav/':​ succeeded.
 +     ​prout-player-1.0.1-19317.tar.gz ​  ​35786922 ​ Jan 29 21:44
 +  put /​home/​benoit/​Desktop/​bookmarks.xml
 +  Uploading /​home/​benoit/​Desktop/​bookmarks.xml to `/​webdav/​bookmarks.xml`:​
 +  Progress: [=============================>​] 100.0% of 252928 bytes succeeded.
 +
 +Toujours aussi simple, hein ? Tu te sens tout excité ?
 +
 +Le dernier avantage de WebDAV est qu'il permet de faire un sas ÉTANCHE avec les gens **SALES**. En effet, on peut les laisser jouer avec WebDAV sans soi-même avoir à faire trop de choses pour eux. Détaillons,​ mais avec une lingette:
 +
 +* Un AMI que je ne nommerai pas m'​indique que le Finder de MacOSX supporte lui aussi nativement le protocole WebDAV. ​
 +
 +* Une CONNAISSANCE m'​indique qu'on peut, dans les Favoris Réseau de Windows, déclarer une adresse http://​votre-serveur/​webdav/​ comme étant une ressource WebDAV et l'​emplacement apparaît alors magiquement comme un dossier partagé dans l'​explorateur.
 +
 +
 +Si je résume: WebDAV peut être une excellente solution pour échanger des fichiers dans un environnement hétérogène,​ par le biais d'un réseau distant (internet) sans avoir à installer de logiciel tout en restant relativement résistant à des GENS.
 +
 +Maintenant, reste à gérer la question de la sécurité.
 +
 +
 +====== Les baskets, ça ne va pas être possible, monsieur, SÉCURITÉ ! ======
 +
 +===== SSL, le certificat, le mot de passe, toussa =====
 +
 +
 +Faîtes vous un certificat serveur HTTP/S auto-signé;​ ''​man ssl''​ si cette phrase vous rend perplexe, mais enfin.
 +
 +On bascule le serveur Apache en SSL, là encore, c'est bien documenté sous OpenBSD.
 +
 +On indique maintenant poliment au serveur Apache que la section ''/​webdav/''​ est protégée par un login et un mot de passe: ​
 +
 +  AccessFileName .htaccess
 +
 +Ca, c'est classique, tu connais puis, par exemple: ​
 +
 +
 +  <​Directory "/​var/​www/​htdocs/​webdav">​
 +    DAV On
 +    AllowOverride None
 +    Options Indexes FollowSymLinks
 +    order allow,deny
 +    allow from all
 +    AuthName "The Secret Pony"
 +    AuthType Basic
 +    AuthUserFile /​var/​www/​conf/​passwd
 +    Require valid-user
 +   <​limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
 +   </​Limit>​
 +  </​Directory>​
 +
 +Mais rien ne t'​empêche d'​avoir plus d'​imagination.
 +
 +On gère le fichier /​var/​www/​conf/​passwd avec ''​htpasswd(1)''​ comme tous les gens bien. ''​htpasswd -c /​var/​www/​conf/​passwd benoit''​ pour le créer puis ''​htpasswd /​var/​www/​conf/​passwd toto''​ pour les suivants, lis le man bon sang je te dis sinon je m'​énerve.
 +
 +Ensuite, on relance Apache. ''​apachectl stop ; apachectl start'',​ toussa.
 +
 +===== On reteste =====
 +
 +Dans Konqueror, ''​webdavs://​mon-serveur/​webdav/''​ marche sans accroc. Une fenêtre surgit, me demande mon login et mon mot de passe, je suis tout ému. J'​adore KDE. Vraiment.
 +
 +''​cadaver''​ par contre fait occasionnellement la tronche avec SSL. Selon les distributions,​ il gère, ou non, les échanges chiffrés. Pff. C'est plus pénible.
 +
 +Le SSL semble bien marcher aussi sous MacOSX et sous l'OS qu'on ne nommera pas pour pas avoir à se laver la bouche au savon. Donc, les lèpreux pourront être bien isolés.
 +
 +
 +====== Conclusion ======
 +
 +Ca marche très bien, très vite et c'est méta-convi. La chose remarquable dans ce système est qu'un accès webdav «ne craint pas trop», i.e. sur une machine de passage, à la différence d'un acces shell/ssh où je crains toujours les keylogguers,​ ave ce truc, en changeant régulièrement les mots de passe, on peut avoir plus de souplesse.
 +
 +Ce système est bien pratique, pour des besoins ponctuels ou soutenus.
 +
 +C'est pourtant un peu court comme conclusion. Si j'​avais vraiment plein de poils partout, je ne m'​arrêterai pas là. J'​irais plus loin. Bien plus loin. Ce qui serait vraiment super intéressant,​ c'est de configurer mod_ssl pour n'​accepter QUE des authentifications fortes par certifiats (clients) et faire une sécurisation complète en authentification forte bipartite (client et serveur). Et ca serait marrant de voir si cela marche avec konqueror, MacOSX ou même proutOS.
 +
 +T'en a envie aussi, heing ? Mais c'est l'​heure d'​aller se coucher, alors on verra cela, chers amis, pour l'​Épisode II.
 +
 +Bisous.
 +
 +
 +
 +
 +
 +
 +
  
openbsd/openbsdwebdav.txt · Last modified: 2010/01/12 13:29 (external edit)