Apache: webdav von Webserver trennen?
Andreas Korthaus
- webserver
Hallo!
Ich will auf einem Server neben dem Webserver(Apache) webdav installieren. Die Frage ist, ob ich das Modul(mod_dav) einfach in den normalen Apoachen integrieren sollte, also beide über Port 80, oder ob ich einen 2. Apachen installiere, und den dann auf Port 81 laufen lasse, nur speziell für webdav. Ist ja so eine Sache, da die Integration ja auch eine Sicherheitslücke darstellen könnte.
Was meint Ihr?
Grüße
Andreas
Hallo!
Ich will auf einem Server neben dem Webserver(Apache) webdav installieren. Die Frage ist, ob ich das Modul(mod_dav) einfach in den normalen Apoachen integrieren sollte, also beide über Port 80, oder ob ich einen 2. Apachen installiere, und den dann auf Port 81 laufen lasse, nur speziell für webdav. Ist ja so eine Sache, da die Integration ja auch eine Sicherheitslücke darstellen könnte.
Ich habe mich die Tage ein wenig mit WebDav beschäftigt, da über ein WebDav-Zugang Dokumente bereit gestellt werden sollen.
Man kann ja WebDav auf ein betimmten virtuellen Host beschränken.
Listen 80 81
<VirtualHost www.domain.de:80>
DocumentRoot /www/domain.de/htdocs
...
</VirtualHost>
<VirtualHost www.domain.de:81>
DocumentRoot /www/domain.de/htdocs
DAV On
...
</VirtualHost>
Ob das ganze eine Sicherheitslücke darstellen könnte, kann ich jetzt nicht sagen. Den WebDav-Zugang sollte man mit einem Passwort und SSL absichern.
MfG, André Laugks
Hi Andre!
Ich habe mich die Tage ein wenig mit WebDav beschäftigt, da über ein WebDav-Zugang Dokumente bereit gestellt werden sollen.
Ja, ich habe mich jetzt auch ne ganze Zeit damit beschäftigt. Und ich muss sagen es funktioniert sehr gut. Aber so 100%ig blicke ich durch die Apache-Konfiguration noch nicht durch.
Man kann ja WebDav auf ein betimmten virtuellen Host beschränken.
Ja, das war mein Plan udn das funktioniert auch halbewgs(s.u.)
Listen 80 81
Das habe ich auch, aber ich verstehe z.B. nicht dass man dann trotzdem noch
port 80
braucht - wofür?
<VirtualHost www.domain.de:80>
DocumentRoot /www/domain.de/htdocs
...
</VirtualHost><VirtualHost www.domain.de:81>
DocumentRoot /www/domain.de/htdocs
DAV On
...
</VirtualHost>
Ach, ich habe die ganze Zeit nur bei namebased virt. hosts geguckt, naja, das probiere ich auch mal. Nur wie stelle ich sicher dass beim Request an webdav.domain.tld nicht(!) webdav aufgerufen wird, sondern nur bei webdav.domain.tld:81?
ich habe es immer nur mit ServerName gemacht, also sowas:
Listen 1.2.3.4:80
Listen 1.2.3.4:81
port 80
NameVirtualHost 1.2.3.4:80
NameVirtualHost 1.2.3.4:81
<VirtualHost 1.2.3.4:80>
ServerName www.domain.tld
DocumentRoot /home/www
</VirtualHost>
<VirtualHost 1.2.3.4:81>
ServerName webdav.domain.tld
DocumentRoot /home/webdav
php_flag engine off
<Location /shared>
DAV On
AuthName "WebDAV access"
AuthType basic
AuthUserFile /path/to/.htpasswd
require user andreas
</Location>
</VirtualHost>
Wozu ist eigentlich ServerName genau gut? So wie ich das in der Doku verstehe ist das doch eigentlich nutzlos, oder?
Dabei ist es aber sehr doof, dass die Subdomains nutzlos sind, der Server rochtet sich nur nach dem Pfad, also www.domain.tld:81 kommt auch zu webdav! Das will ich nicht udn ich habe es ehrlich gesagt nicht loswerden können. Ich probiere es mal mit Deiner Methode. Wo ist das denn dokumentiert?
Oder weiß jemand wie ich es mit meiner Methode sicherstellen kann?
php_flag engine off ist übrigens serh wichtig, da sonst jemand PHP-Script hochladen kann udn ausführen! Meien Angst ist - das es da noch mehr gibt, SSI habe ich deaktiviert, CGI ebenfalls und auch sonst nichts wie mod_perl oder sowas eingebunden.
Ob das ganze eine Sicherheitslücke darstellen könnte, kann ich jetzt nicht sagen. Den WebDav-Zugang sollte man mit einem Passwort und SSL absichern.
HTTP-Auth ist klar, aber ich bin gerade bei SSL. Wie hast Du das genau konfiguriert? Über welchen Port ist webdav per SSL erreichbar? Wie stellst Du sicher dass webdav wirklich nur über die eine subdomain, und nur über ssl ansprechbar ist?
Viele Grüße
Andreas
Hi!
<VirtualHost www.domain.de:80>
DocumentRoot /www/domain.de/htdocs
...
</VirtualHost><VirtualHost www.domain.de:81>
DocumentRoot /www/domain.de/htdocs
DAV On
...
</VirtualHost>Ach, ich habe die ganze Zeit nur bei namebased virt. hosts geguckt, naja, das probiere ich auch mal.
Scheint bei mir nicht zu funktionieren(Apache 1.3.27). ucn ich habe wirklich pberhaupt keien Ahnung wie ich das erreichen kann. Das sieh tales so einfach aus, aber es funktioniert schlichtweg nicht. Ich habe z.B. das probiert:
Listen *.domain1.tld:80
Listen webdav.domain2.tld:81
port 80
#NameVirtualHost 1.2.3.4:80
#NameVirtualHost 1.2.3.4:81
<VirtualHost *.domain1.tld:80>
DocumentRoot /home/www
</VirtualHost>
<VirtualHost webdav.domain2.tld:81>
DocumentRoot /home/webdav
php_flag engine off
<Location /shared>
DAV On
AuthName "WebDAV access"
AuthType basic
AuthUserFile /path/to/.htpasswd
require user andreas
</Location>
</VirtualHost>
ODer auch mit NameVirtualHost nicht auskommentiert, oder mit den IP-Adressen statt hostnamen bei listen..., der webdav-Host wird nur erreicht wenn ich meine im letzten Posting gepostete Konfiguration poste. Nur ist das nicht wriklich das was ich will, denn da funktioniert _jeder_ Hostname wenn man Port 81 verwendet. ich will aber nur diesen einen Hostnamen verwenden, nur wenn dieser verwendet wird, und auch nur über Port 81, dann soll webdav aufgerufen werden. Ich weiß auch nicht, ich lese jetzt wirklich jetzt schon ne ganez Zeit in der Apache-Doku, und da sind auch viele Beispiele, aber ich habe es bisher nicht hinbekommen. Hat da jemand von Euch einen heißen Tipp?
Grüße
Andreas
Hallo!
Ja, ich habe mich jetzt auch ne ganze Zeit damit beschäftigt. Und ich muss sagen es funktioniert sehr gut.
Bis jetzt bin ich aber nur bis zu Installion von mod_dav gekommen. Aus zeitlichen Gründen.
Das habe ich auch, aber ich verstehe z.B. nicht dass man dann trotzdem noch
port 80
Habe ich auskommentiert. Es tut es auch ohne Angabe des Ports. Kann ich jetzt nicht erklären, die Doku und mein Apache-Buch sagen auch nichts dazu.
Folgende Konfiguration tut es bei mir. Ich habe mal zwei verschiedene Verzeichnisse genommen mit unterschiedlichen index-Dateien, um zu sehen wo ich drine lande.
listen 80
listen 81
NameVirtualHost 192.168.0.4
<VirtualHost 192.168.0.4:80>
ServerName webdav.intern
DocumentRoot /www/domain80
</VirtualHost>
<VirtualHost 192.168.0.4:81>
ServerName webdav.intern
DocumentRoot /www/domain81
</VirtualHost>
Wozu ist eigentlich ServerName genau gut? So wie ich das in der Doku verstehe ist das doch eigentlich nutzlos, oder?
Nein, wenn Du mehrere Domains auf einer Maschine hast, muß der Apache wissen, welcher virtuelle Host zu welcher Domain (plus www wen angelegt) gehört. Der AliasName kann man dann weitere ServerNamen eintragen. Also wenn mehrere Domains auf ein Verzeichnis laufen.
Das will ich nicht udn ich habe es ehrlich gesagt nicht loswerden können. Ich probiere es mal mit Deiner Methode. Wo ist das denn dokumentiert?
Hust..., sorry..., ja ich habe Mißt gebaut. Ich wollte die IP schreiben und nicht die Domain. Also versuche es, wie ich es oben gepostet habe. Daran sieht man, das verschiedene <VirtualHost> angesprochen werden.
HTTP-Auth ist klar, aber ich bin gerade bei SSL. Wie hast Du das genau konfiguriert? Über welchen Port ist webdav per SSL erreichbar? Wie stellst Du sicher dass webdav wirklich nur über die eine subdomain, und nur über ssl ansprechbar ist?
SSL habe ich nicht konfiguriert. Schaue Dir mal folgendes an.
http://www.apache-ssl.org/httpd.conf.example
http://www.tu-chemnitz.de/linux/tag/lt4/vortraege/material/Apache_vhosts_ssl.pdf
Wie Du im Example sehen kannst, bindest Du den virtuellen Host an einen Port (443). Über Port 443 laufen die HTTPS-Sachen.
Ich wollte das die Tage erst probieren. Ich bin durch diese Zertifikatsache noch nicht durch gestiegen.
Ich wollte dann auch mod_auth_digest (http://httpd.apache.org/docs-2.0/de/mod/mod_auth_digest.html) einsetzen. Wie ich gesehen habe, kann man da ein Timeout setzen, wenn sich nichts tut und somit den User auslogen bzw. die "Verbindung kappen".
MfG, André Laugks