Mit der vorgestellten Konfiguration darf jeder Benutzer auf das WebDAV-Verzeichnis zugreifen, der den Server erreicht – also auch Personen, die dort eigentlich nichts zu suchen haben. WebDAV selbst bietet zwar keine eigenen Sicherheitseinstellungen, stattdessen kann der Administrator die mächtigen und umfassenden Authentifizierungsmöglichkeiten von Apache 2 heranziehen. Vier kleine Befehle reichen dazu schon aus:
AuthType Basic AuthName "Anmeldung zum WebDAV Verzeichnis" AuthUserFile "/etc/apache2/user.passwd" Require valid-user
Diese Zeilen wandern in den
»<Directory>
«
-Container. Damit beziehen sich die Zugriffsbeschränkungen nur auf das entsprechende WebDAV-Verzeichnis, der Rest des Internetauftritts kann eigene Sicherheitseinstellungen erhalten.
Der erste Befehl im Bunde schaltet die Basic-Authentifizierung ein. Sobald jemand die URL
»www.example.com/webdav
«
ansteuert, muss er sich mit einem Benutzernamen und einem Passwort ausweisen. Wie dies genau vonstatten geht, hängt vom verwendeten Client ab. Meist erscheint ein Fenster mit der Meldung hinter
»AuthName
«
, wie beispielsweise in Firefox aus
Abbildung 3
oder Gnome in
Abbildung 4
.
Ein Benutzer erhält nur dann vollen Zugriff auf das Verzeichnis
»/var/webdav
«
, wenn die Kombination aus eingetipptem Benutzernamen und Passwort in der Datei
»/etc/apache2/user.passwd
«
vermerkt ist. Das Hilfswerkzeug
»htpasswd
«
übernimmt die Verwaltung der Datei:
sudo htpasswd -c /etc/apache2/user.passwd ↩ Benutzername
Ohne das
»-c
«
fügt der gleiche Befehl später auch weitere Benutzer hinzu:
sudo htpasswd /etc/apache2/user.passwd ↩ Benutzername
Anschließend muss der Administrator sicherstellen, dass die Datei
»user.passwd
«
die korrekten Rechte besitzt. Unter Ubuntu müssen beispielsweise Root und die Benutzer der Gruppe
»www-data
«
sie lesen können:
sudo chown root:www-data /etc/apache2/user.↩ passwd sudo 640 /etc/apache2/user.passwd
Der vierte und letzte Befehl
»Require valid-user
«
sorgt schließlich dafür, dass jeder angemeldete Benutzer den vollen Zugriff auf das WebDAV-Verzeichnis erhält. Möchte der Administrator den Nutzerkreis weiter einschränkten, führt er stattdessen hinter
»Require user
«
die Benutzernamen auf. Beispielsweise würde
Require user tim oliver
nur den Benutzern
»tim
«
und
»oliver
«
Zugang zum WebDAV-Verzeichnis gewähren.
Mit den gezeigten Einstellungen ist der Zugriff für Fremde komplett gesperrt. Möchte der Administrator diesen zumindest einen Blick in das Verzeichnis erlauben, steckt er die
»Require
«
-Anweisung noch einmal in einen
»LimitExcept
«
-Container:
<LimitExcept GET HEAD OPTIONS> Require valid-user </LimitExcept>
Diese Konstruktion gestattet beliebigen Benutzern die gelisteten HTTP-Request-Methoden. Somit dürften auch Fremde weiterhin das WebDAV-Verzeichnis einsehen und Dateien herunterladen. Erst wenn ein Benutzer versucht, eine Datei auf dem Server abzulegen, verlangt Apache nach Benutzername und Passwort. Listing 1 zeigt noch einmal die komplette Konfiguration für die Basic-Authentifizierung.
Listing 1
Beispiel einer WebDAV-Konfiguration mit Basic-Authentifizierung
... DavLockDB /usr/local/apache2/var/DavLock Alias /webdav "/var/webdav" <Directory "/var/webdav"> DAV on Options +Indexes AuthType Basic AuthName "Anmeldung zum WebDAV Verzeichnis" AuthUserFile "/etc/apache2/user.passwd" <LimitExcept GET HEAD OPTIONS> Require valid-user </LimitExcept> </Directory> ...
Damit Apache die neuen Sicherheitseinstellungen übernimmt, muss der Administrator den Webserver neu starten. Im produktiven Betrieb sollte er auch über Digest-Authentifizierung und den Einsatz von SSL-Client-Zertifikaten nachdenken. Letzteres ist sogar dringend anzuraten, da die Passwörter mit der hier gezeigten Konfiguration weiterhin im Klartext über das Netz wandern. Darüber hinaus gilt ein besonderes Augenmerk auf die WebDAV-Verzeichnisse selbst. Beispielsweise könnte jemand einfach eine
».htaccess
«
-Datei hochladen und so die Konfiguration des Webservers zu seinen Gunsten verbiegen. Das Vorgehen unterbindet man über die zusätzliche Direktive
»AllowOverride None
«
. Damit ignoriert Apache grundsätzlich alle Konfigurationsdirektiven in möglicherweise vorhandenen
».htaccess
«
-Dateien.
Ein weiteres Problem verursachen CGI-Programme und Skripte. Liegen beispielsweise im freigegebenen WebDAV-Verzeichnis PHP-Dateien und die Skriptsprache ist im Webserver aktiviert, dann liefert Apache nicht etwa die Datei zurück, sondern startet einfach das Skript ohne jede weitere Rückfrage. Der Client erhält dann lediglich die erzeugten Ausgaben. Ein Angreifer könnte dies ausnutzen, ein bösartiges PHP-Skript im WebDAV-Verzeichnis parken und es sogleich mit nur einem weiteren Mausklick starten. Damit Apache ordnungsgemäß Skriptdateien ausliefert und nicht gleich ausführt, zwängt man allen Dateien über die Direktive
»ForceType
«
den MIME-Typ
»text/plain
«
auf:
<Directory "/var/webdav"> ForceType text/plain ... </Directory>