Andreas Korthaus: Apache: webdav von Webserver trennen?

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

  1. 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

    --
    L-Andre @ gmx.de
    1. 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

      1. 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

      2. 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

        --
        L-Andre @ gmx.de