Scheunentor schließen

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.

Abbildung 3: Firefox fordert zur Eingabe von Benutzername und Passwort auf, der angezeigte Text stammt von der Direktive AuthName.
Abbildung 4: Gnome merkt sich auf Wunsch die Anmeldedaten.

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

Fallstricke

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>
comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2022