WebDAV. Dienst der immer gebraucht wird. Installation und Konfiguration

WebDAV ist ein Netzwerkprotokoll zur Bereitstellung von Dateien über das Internet.
Web-based Distributed Authoring and Versioning

WebDAV können wir für verschieden zwecke nutzen. Mit WebdDAV ist es möglich ein Internetspeicherort wie eine Festplatte in System einzubinden.
Im diesem Artikel installieren und konfigurieren wir diesen Dienst auf einem Linux Server (Debian 12).

In unserem Fall und in diesem Artikel wird die Installation und Konfiguration des WebDAV Dienstes mit selbst erstellten Zertifikaten beschrieben.

In den letzten Jahren hat sich rausgestellt, dass immer mehr Mitarbeiter außerhalb der Fima tagelang, manchmal sogar monatelang arbeiten. Die Software auf den Clients solle man immer aktuell halten. In mittleren und größeren Firmen wird die Installation der Applikationen per Softwareverteilung durchgeführt.

In unserem Fall kommt die Softwareverteilung OPSI der Firma UIB in Einsatz.
OPSI braucht Zugriff auf das OPSI-Repository und das wird mit dem https und SMB/CIFS Protokoll realisiert. Statt SMB/CIFS können wir auch WebDAV nutzen vor allem, wenn sich die Clients in öffentlichen Raum oder im Homeoffice befinden.

 

Bevor wir WebDAV installieren und Konfigurieren müssen wir noch andere Aufgaben machen.

  • auf dem gewünschtem Server wird Apache2 Dienst installiert und konfiguriert
  • Server Zertifikate werden erstellt
  • Client Zertifikat wird erstellt
  • Client Zertifikat wird auf dem Client Gerät importiert
  • Ein Apache Virtual Host wird entsprechend konfiguriert.

Alle diese Aufgaben wurden in den Artikeln Virtual Host, SSL-Zertifikate und Client Zertifikate beschrieben.

Außerdem müssen wir noch den gewünschten Port an der Firewall öffnen und eine NAT zu dem Apache (WebDAV) an der Firewall setzen

Punkt
Wenn wir alles korrekt gemacht haben, so wie in den Artikel beschrieben ist, dann haben wir folgenden Zustand.
Dabei handelt sich um die Domain mydomain1.firma.lan bzw. mydomain1

1. Die Virtual Hosts sieht folgendermaßen

<VirtualHost  *:443>
     ServerAdmin webmaster@mydomain1.firma.lan
     DocumentRoot /var/www/html/mydomain1
     ServerName mydomain1
     ServerAlias mydomain1.firma.lan
     SSLEngine on
     SSLCertificateFile /etc/apache2/cert/mydomain1.firma.lan.crt
     SSLCertificateKeyFile /etc/apache2/cert/mydomain1.firma.lan.key

     SSLCACertificatePath "/etc/ssl/certs"
     SSLVerifyClient require
     SSLVerifyDepth 5

     ErrorLog /var/log/apache2/mydomain1.firma.lan_error_log
     CustomLog /var/log/apache2/mydomain1.firma.lan_access_log common
</VirtualHost>

2. Die Web-Seite https://mydomain1.firma.lan kann man nur aufrufen, wenn auf dem Client-Gerät
    das Client-Zertifikat installiert ist.

WebDAV wird auf dem Apache-Serverr installiert.

Punkt
Bei der Installation von apache2 wurden auch dav Module installiert, die sind aber noch nicht aktiviert.
Die dav Module werden aktiviert und danach wird Apache neu gestartet

 

# a2enmod dav
# a2enmod dav_fs
# systemctl restart apache2
Punkt
Als nächstes definieren wir ein Speicherort für unsere Dateien. Dem Ordner vergeben wir entsprechende Rechte damit die Dateien lesbar und beschreibbar sind.
Den Speicherort für WebDAV definieren wir außerhalb unsere Apache Startordner.
Wir erstellen z.B. den Ordner /var/www/web1/webdavdata

 

# mkdir /var/www/web1
# mkdir /var/www/web1/webdavdata
# chown -R www-data /var/www/web1
Punkt
Die Apache Konfigurationsdatei wird angepasst.

 

<VirtualHost  *:443>
     ServerAdmin webmaster@mydomain1.firma.lan
     DocumentRoot /var/www/html/mydomain1
     ServerName mydomain1
     ServerAlias mydomain1.firma.lan
     SSLEngine on
     SSLCertificateFile /etc/apache2/cert/mydomain1.firma.lan.crt
     SSLCertificateKeyFile /etc/apache2/cert/mydomain1.firma.lan.key

     SSLCACertificatePath "/etc/ssl/certs"
     SSLVerifyClient require
     SSLVerifyDepth 5

     ErrorLog /var/log/apache2/mydomain1.firma.lan_error_log
     CustomLog /var/log/apache2/mydomain1.firma.lan_access_log common

     Alias /webdav /var/www/web1/webdavdata
     <Location /webdav>
          DAV On
          AuthType Basic
          AuthName "webdav"
          AuthUserFile /var/www/web1/passwd.dav
          Require valid-user
     </Location>

</VirtualHost>
Punkt
Wir erstellen eine Passwortdatei. Für diesen zweck nutzen wir den Befehl htpasswd.  Wenn die Passwort Datei noch nicht existiert, verwenden wir den Parameter -c, bedeutet so viel wie Create a new file, danach ohne diesen Parameter. Zum testen erstellen wir zwei Benutzer, einen Benutzer test und einen test2

 

# htpasswd -c /var/www/web1/passwd.dav test
# htpasswd /var/www/web1/passwd.dav test2
Punkt
Die Rechte der Passwortdatei muss man anpassen. Nicht alle sollten die Datei lesen dürfen.

 

# chmod 640 /var/www/web1/passwd.dav
#
chown www-data:www-data /var/www/web1/passwd.dav
Punkt
Der Apache-Dienst wird neu gestartet und danach können wir WebDAV nutzen,

 

# systemctl restart apache2.service

Fassen wir zusammen

- Wir haben einen Apache Webserver aufgesetzt für die Domain mydomain1.firma.lan bzw. mydomain1
- Server-Zertifikate wurden erstellen und selbst bestätigt.
- Client-Zertifikat wurde erstellt.
- Client-Zertifikat wurde auf einigen Clients installiert
- WebDAV wurde auf dem Server konfiguriert.
- Passwort Datei für WebDAV Zugriff mit Benutzer wurde angelegt.

Es stellt sich Frage, wie können wir auf den Speicher zugreifen.

Punkt
Wir können z.B. im Browser die entsprechende Web-Adresse eintragen. In unserem Fall wäre es https://mydomain1.firma.lan/webdav
Der Apache-Server ist so konfiguriert, dass ein Client-Zertifikat auf dem Client verlangt wird. Wenn das Client-Zertifikat nicht vorhanden ist, wird die Seite nicht angezeigt, wir bekommen eine Fehlermeldung.
Wenn das Client-Zertifikat auf dem Client vorhanden ist, kommt ein Fenster mit Zertifikat-Information und hier können wir das bestätigen. Danach kommt noch Fenster für die Benutzerdateneingabe und erst dann haben wir den Zugriff auf WebDAV Bereich.
Kurz gesagt, wir brauchen ein Zertifikat und die Login Daten.

Punkt
Eine andere Methode auf die Daten zuzugreifen ist die Erstellung von einem Netzlaufwerk.
Wichtig. Auf dem Windows Client muss der Dienst WebClient laufen
Um ein Netzlaufwerk zu erstellen muss noch das Client-Zertifikat auf dem Client installiert sein. Außerdem brauchen wir die Login Daten eines Benutzers der sich in der Passwortdatei befindet.

Punkt
Danach kommt noch ein Fenster für Login Daten eines Benutzers. Wenn die Login Daten korrekt sind, wird ein Netzlaufwerk erstellt.

Zugriff aus dem öffentlichen Raum

Punkt
Wollen wir aus dem öffentlichen Raum (Internet) zugreifen, müssen wir entsprechende Einstellung auf der Firewall machen. in unserem Fall den Port 443 öffnen und die entsprechende NAT an der Firewall setzen. Außerdem müssen wir entsprechenden Eintrag in dem öffentlichen DNS machen, bedeutet mydomain.firma.lan sollte auf unsere Firewall-IP zeigen, wenn sich unsere WebDAV Server in unserem Firmennetz befindet. Zum Testen können wir wahlweise den Eintrag in der hosts Datei auf unserem Client machen
Punkt
Am Anfang dieses Artikels habe ich geschrieben, dass auch OPSI den Dienst WebDAV nutzen kann. OPSI nutz den Port 4447, aus diesem Grund, wenn OPSI genutzt wird, müssen wir in der Konfigurationsdateien den Port 443 mit dem Port 4447 ersetzen und in der Firewall den Port 4447 öffnen und selbstverständlich auch NAT anpassen.

Mehrere WebDAV Quellen

Punkt
In der Apache-Konfigurationsdatei können wir selbstverständlich mehrere Quellen definieren. Zu weiteren Quellen müssen wir weitere Ordner im System erstellen, die Passwortdatei anlegen und die entsprechende Rechte dem Ordner und der Passwortdatei vergeben.

 

<VirtualHost  *:443>
     ServerAdmin webmaster@mydomain1.firma.lan
     DocumentRoot /var/www/html/mydomain1
     ServerName mydomain1
     ServerAlias mydomain1.firma.lan
     SSLEngine on
     SSLCertificateFile /etc/apache2/cert/mydomain1.firma.lan.crt
     SSLCertificateKeyFile /etc/apache2/cert/mydomain1.firma.lan.key

     SSLCACertificatePath "/etc/ssl/certs"
     SSLVerifyClient require
     SSLVerifyDepth 5

     ErrorLog /var/log/apache2/mydomain1.firma.lan_error_log
     CustomLog /var/log/apache2/mydomain1.firma.lan_access_log common

     Alias /webdav /var/www/web1/webdavdata
     <Location /webdav>
          DAV On
          AuthType Basic
          AuthName "webdav"
          AuthUserFile /var/www/web1/passwd.dav
          Require valid-user
     </Location>

     Alias /webdav2 /var/www/web2/webdavdata
     <Location /webdav2>
          DAV On
          AuthType Basic
          AuthName "webdav"
          AuthUserFile /var/www/web2/passwd.dav
          Require valid-user
     </Location>

</VirtualHost>