WebDAV für eigene Zwecke nutzen.
Einleitung
Daten, die nicht in die Hände Dritter gelangen sollen, dürfen eigene Geräte wie beispielsweise Klapprechner und Mobiltelefon nicht verlassen. Wenn sie über unterschiedliche eigene Geräte hinweg benutzt werden, muss die Kommunikation zwischen den Geräten verschlüsselt sein.
Hierbei hilft ein eigener Rechner, der Speicherplatz bereit hält und über das Internet erreichbar ist. Tipps zur Bereitstellung solch eines Rechners finden sich z.B. in den Beiträgen Minimal und Eigenbau.
Eine Möglichkeit, Daten von dort via WebDAV überall verwenden zu können beschreibt dieser Artikel.
Einsatzszenarien
Rechner mit Linux, Mac OS und Windows können im Dateimanager des Betriebssytems standardmäßig Datenquellen via WebDAV einbinden als wären sie lokal auf den betreffenden Geräten befindliche Ordner und Daten. Bei iPhone und iPad oder auch Mobilgeräten mit Android ist das mit zahlreichen Apps ebenfalls möglich. Hier hilft eine Suche im App Store nach File Manager Apps.
So lassen sich beispielsweise zentral abgelegte Office-Dokumente über viele Geräte hinweg ansehen oder bearbeiten oder Fotos speichern und betrachten. Selbst Videos können aus einer entfernten WebDAV Datenquelle angesehen werden.
Die Arbeit mit den eigenen Daten gelingt über viele verschiedene eigene Geräte gerade so, als wären sie lokal auf dem jeweiligen Gerät gespeichert.
WebDAV einrichten
Für Webserver wie Lighttpd, Nginx oder Apache kann WebDAV über ein Zusatzmodul des Servers eingeschaltet werden. In diesem Artikel wird hingegen die Verwendung von Tomcat näher beschrieben.
Herunterladen
Zunächst werden Tomcat und Java von folgenden Orten im Internet heruntergeladen und entpackt:
Wir nehmen an, die Dateien liegen nach dem Entpacken in den Ordnern
/home/fred/prg/jdk11 /home/fred/prg/tomcat10
Zur Vorbereitung einer Ausführung von Tomcat werden zunächst die Skripte im Ordner /home/fred/prg/tomcat10/bin
als ausführbar gekennzeichnet.
sudo chmod -R ug+x /home/fred/prg/tomcat10/bin
Optional kann die heruntergeladene Variante von Tomcat um nicht erforderliche Teile befreit werden. Hier noch aufführen, welche das sind.
Ablageort anlegen
Ein einzelner Ordner soll über WebDAV zugänglich sein. Für diesen Artikel wird dazu beispielsweise der folgende Ordner angelegt
mkdir /home/fred/www/dav
Kontext anlegen
Der zuvor erstellte Ordner /home/fred/www/dav
wird Tomcat über einen neuen Kontext zugänglich gemacht. Dazu wird im Ordner /home/fred/prg/tomcat10/conf/Catalina/localhost
eine neue Datei namens dav.xml
angelegt. Die Datei muss folgenden Inhalt haben
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/dav" docBase="/home/fred/www/dav">
</Context>
Damit wird der Inhalt im Ordner /home/fred/www/dav
über den Kontext /dav
zugänglich.
WebDAV einschalten
Im Ordner /home/fred/www/dav
wird ein Ordner WEB-INF
und darin die Datei web.xml
mit folgendem Inhalt angelegt.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<description>WebDav-Verzeichnis</description>
<display-name>dav</display-name>
<servlet>
<servlet-name>webdav</servlet-name>
<servlet-class>org.apache.catalina.servlets.WebdavServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>webdav</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<security-constraint>
<display-name>davConstraint</display-name>
<web-resource-collection>
<web-resource-name>dav</web-resource-name>
<description/>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>davNutzerConstraint</description>
<role-name>davNutzer</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<security-role>
<description/>
<role-name>davNutzer</role-name>
</security-role>
</web-app>
Die Eintragungen bedeuten, dass Tomcat Inhalte des Ordners, in dem der Ordner WEB-INF
liegt, lesend und schreibend über WebDAV zugänglich macht und dass dies nur Benutzern gewährt wird, die die Rolle davNutzer
haben.
Benutzer anlegen
Im Ordner /home/fred/prg/tomcat10/conf
wird die Datei tomcat-users.xml
mit folgendem Inhalt versehen.
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="davNutzer"/>
<user username="fred" password="change-me" roles="davNutzer"/>
</tomcat-users>
Gemeinsam mit der Einstellung in der Datei web.xml
bewirkt das, dass der Aufruf des Kontext /dav
dieser Instanz von Tomcat nur mit Benutzer fred
und Kennwort change-me
gelingt.
Tomcat starten
Zur Ausführung von Tomcat wird im Ordner /home/fred/prg/tomcat10/bin
die Datei start.sh
mit folgendem Inhalt erstellt.
#!/bin/sh export JAVA_HOME=/home/fred/prg/jdk11 cd /home/fred/prg/tomcat10/bin ./startup.sh
Mit Ausführung der Datei start.sh
als Skript wird Tomcat gestartet. Tomcat läuft standardmäßig auf Port 8080
. Das kann über die Datei /home/fred/prg/tomcat10/conf/server.xml
geändert werden. Das Skript start.sh
kann auch verwendet werden, um WebDAV als Dienst einzurichten, der gleich bei jedem Start des Rechners mit gestartet wird (vgl. bspw. Calypso-Anleitung).
WebDAV verwenden
Angenommen, der Rechner ist über die Domain example.com
im Internet erreichbar, können nun Inhalte über folgenden URL angesehen werden.
http://example.com:8080/dav
Zusätzlich zum obigen URL kann je nach verwendetem Programm auch der folgende URL dienen
dav://example.com:8080/dav
Verbindungen sichern
Zum Schutz vor unbefugten Einblicken muss die Kommunikation über WebDAV verschlüsselt sein. Dies wird am einfachsten mit einem vorgeschalteten Reverse-Proxy-Server erreicht, der mit einem Zertifikat ausgestattet wird. Das Zertifikat kann z.B. von Let’s Encrypt bezogen werden.
Als Reverse-Proxy-Server kann einer der eingangs erwähnten Server Lighttpd, Nginx oder Apache dienen. Die Dokumentation dieser Server beschreibt dann, wie mit dem Zertifikat die Verschlüsselung eingeschaltet wird. Bei Lighttpd sind dazu beispielsweise die Schritte aus folgendem Kapitel der Doku nötig.
Reverse Proxy
Der Zugang aus dem Internet zum eigenen Rechner wird üblicherweise mit Hilfe eines Dienstes für dynamisches DNS eingerichtet. Auf diese Weise ist eine wechselnde IP-Adresse, wie sie von DSL-Anbietern vergeben wird, jederzet über einen festen URL aus dem Web erreichbar.
Ist das dynamische DNS eingerichtet, wird beim Domain-Hosting-Dienst der DNS-Eintrag zur eigenen Domain wie z.B. example.com
auf den URL eingestellt, den der Dienst für dynamisches DNS vergeben hat. Im heimischen Router muss dann nur noch eine Weiterleitung der Ports 80 und 443 auf den betreffenden Rechner erfolgen.
Je nach verwendetem Produkt für den Reverse Proxy ist in der Konfiguration die Weiterleitung zu Tomcat einzustellen. Bei Lighttpd ist das z.B. im folgenden Kapitel beschrieben.
In der Konfiguration muss der Port verwendet werden, auf dem Tomcat läuft. Damit ist der Rechner bereit, um als Endpunkt für eine Domain wie z.B. example.com
zu dienen und WebDAV ist auch über die folgenden verschlüsselten URLs möglich
https://example.com/dav
oder davs://example.com/dav
Schlussbemerkungen
Wenn ohnehin ein Produkt wie Lighttpd als Reverse Proxy genutzt wird, könnte natürlich WebDAV direkt über den Webserver eingeschaltet werden. Tomcat könnte damit entfallen.
Allerdings ist die Konfiguration von WebDAV z.B. bei Lighttpd nicht so einfach und vor allem wäre WebDAV dann nicht ohne weiteres unabhängig vom Reverse Proxy einzusetzen. Der LockoutRealm-Mechanismus von Tomcat erhöht zudem den Schutz vor Brute-Force-Attacken. Ohne Tomcat wäre dies nicht ohne weiteres herstellbar und erforderte erheblichen zusätzlichen Aufwand. Diese Einschränkungen gelten für Nginx und Apache gleichermaßen.
Der hier beschriebene Einsatz von Tomcat verspricht mehr Flexibilität und Unabhängigkeit. Er ist zudem mit überschaubaren Konfigurationshandgriffen erledigt.
Der Einsatz von WebDAV für den Zugang zur eigenen Dateiablage erspart die Abhängigkeit von Cloud- oder anderen Anbietern und verhindert so Einblicke Dritter. Die Hoheit und Kontrolle über die eigenen Daten verbleibt stets beim Eigentümer der Daten.