Sicherheit erhöhen: Download sensibler Daten

Sensible Daten, wie z.B. Protokolle, Newsletter Empfängerdateien, etc. vor Fremdzugriff sicher auf dem Webserver ablegen.

Beim Ablegen sensibler Daten auf dem Webserver sollten Sie den Schutz dieser Daten im Fokus haben, damit diese Daten vor unberechtigtem Zugriff geschützt sind.

Auf Apache Webservern ist die erste Wahl der Einsatz einer .htaccess Datei, welche standardmässig auf den meisten Apache Webserver unterstützt wird. Dabei können Sie rein auf Bordmittel der Apache-Module zurückgreifen oder auch zusätzlich eigene Skripte bei der Umsetzung nutzen.

Umsetzung 1: Authentifizierung und Autorisierung mit Apache-Mitteln

Eine Möglichkeit hierzu ist der Einsatz einer .htaccess Datei, welche standardmässig auf den meisten Apache Webserver unterstützt wird.

Der Inhalt eines Verzeichnisses lässt sich über die Apache Bordmittel auf unterschiedliche Weise schützen (Verzeichnisschutz mit Passwortabfrage, Freigabe nur für bestimmte Benutzer bzw. IP-Adressen, etc.).

Nachfolgend ein Beispiel für die Zugriffskontrolle eines Verzeichnisses mit Erlaubnis nur bestimmter IP-Adressen.

Beispiel U1.1: .htaccess Datei innerhalb eines Verzeichnisses (z.B. /de/intern/.htaccess) - Authentifizierung und Autorisierung mit Apache-Mitteln

<IfModule mod_authz_core.c>
  #Apache 2.4
  <Files *>
    <RequireAll>
      Require all denied
    </RequireAll>
    <RequireAny>
      # nur folgende IP-Adressen erlaubt:
      Require ip 123.456.78.9
    </RequireAny>
  </Files>
  Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
  #Apache 2.2
  Order deny,allow
  deny from all
  # nur folgende IP-Adressen erlaubt:
  allow from 123.456.78.9
</IfModule>

# Hinweis:
# Wenn sichergestellt, ist, daß bei z.B. Einsatz eines Apache 2.4 die "neue" Definition funktioniert und das Modul
# vorhanden ist, kann auf die IfModule Abfrage verzichtet werden und direkt die Require-Definition angegeben werden!

Bedenken Sie, daß IP-Schutz über .htaccess keine hundertprozentig sichere Lösung ist (Stichwort IP-Spoofing, etc.). Als Beispiel sei genannt, daß je nach Proxy-Umgebung ggf. alle Anfragen über eine spezielle IP-Adresse an den Webserver kommen und erst vom Proxy weitergeleitet werden. So erlangen alle, die über diese IP-Adresse kommen, Zugriff.
Kombinieren Sie am besten mehrere Umsetzungsmöglichkeiten (IP-Beschränkung, Passwortabfrage, Berechtigungsprüfung über Skript, etc.), um eine bestmögliche Sicherheit für die vertraulichen Daten zu erlangen.

Tipp:
Den Verzeichnisschutz können Sie auch über eine Weblication® PHP-Frameworkfunktion setzen (wRepository::protectDir), siehe weiterführende Links unten.

Beachten Sie weiterhin die allgemeinen Hinweise am Ende des Artikels!

Umsetzung 2: Personalisierung über Weblication®

Weblication® CMS bietet Ihnen mit der Personalisierung ein weiteres Mittel, um vertrauliche Daten bestmöglichst zu schützen. Auch diese Umsetzung nutzt eine .htaccess Datei, welche allerdings Umschreibregeln nutzt, um den Abruf der Dateien über ein Skript (z.B. accessDocument.php) auf entsprechende Berechtigung zu prüfen. mod_rewrite muß vom Server unterstützt werden!
Ein Herunterladen kann so einem Pflegebenutzer über den Dateiexplorer durch Rechtsklick auf z.B. eine CSV-Datei (Auswahl: Herunterladen) ermöglicht werden.

Dies ermöglicht die Anzeige und das Herunterladen von Dateien für eingeloggte Weblication® Benutzer, welche über die Personalisierungseinstellungen ein Ansichtsrecht erhalten. Um den Aufruf von sensiblen Dateien über die accessDocument.php zu leiten, setzen Sie das wie folgt in der .htaccess Datei:

Beispiel U2.1: .htaccess Datei innerhalb eines Verzeichnisses (z.B. /de/intern/.htaccess - Personalisierung über Weblication®

RewriteEngine on

#forceDownload aktivieren, um Dateien beim Aufruf zum Speichern anzubieten:
RewriteRule (.*) /[IHR-LAYOUT-PROJEKT]/wGlobal/scripts/accessDocument.php?document=/de/intern/$1&display=1&forceDownload=0&%{QUERY_STRING} [L]

# Pfade an Ihre Projektpfade anpassen!

Wenn noch keine Personalisierung für das Verzeichnis bzw. die Dateien gesetzt ist, können erstmal alle Benutzer und Seitenbesucher die Dateien direkt aufrufen.
Den Schutz akivieren Sie durch Setzen der Personalisierung über die Datei-Eigenschaften (Personalisierung), was Ihnen mit dem Weblication® Zusatzmodul Personalisierung zur Verfügung steht. Hinterlegen Sie über die Maske die Benutzer bzw. Gruppen, auf welche das Ansichtsrecht auf die Datei(en) beschränkt werden soll.
Ohne Zusatzmodul können Sie dies übrigens auch vornehmen, was dann manuell im Quelltext der Dokumentenerweiterung erfolgen muss (siehe nachfolgendes Beispiel).

Beispiel U2.2: Auszug aus der Standard-Dateieinstellung (wdExtension.php) des Verzeichnisses

...
  <wd:personalization>
    <wd:group name="chiefeditorship"/>
  </wd:personalization>
...

Wichtige Hinweise

Die im Artikel genannten Möglichkeiten sind Beispiele für die Umsetzung eines bestmöglichen Schutzes Ihrer Daten und beziehen sich rein auf den HTTP-Aufruf. Zugriffe auf anderem Wege (FTP, sFTP, SSH, bzw. sonstige Zugriffe über das Betriebssystem) sollten gerade bei sensiblen und vertraulichen Daten ebenso bedacht werden!

Ein hundertprozentiger Schutz kann nicht gewährleistet werden, weshalb Sie selber abwägen müssen, welche Daten Sie auf einem Webserver ablegen und wie Sie diese schützen!

FAQs
Welche sensiblen Daten sollten auf dem Webserver besonders geschützt abgelegt werden?
Sensible Daten wie z.B. Protokolle oder Newsletter-Empfängerdateien sollten vor Fremdzugriff geschützt auf dem Webserver abgelegt werden.
Warum ist es wichtig, den Schutz sensibler Daten beim Ablegen auf dem Webserver zu fokussieren?
Damit die sensiblen Daten vor unberechtigtem Zugriff geschützt sind und nicht durch unkontrollierte HTTP-Zugriffe offengelegt werden.
Welche empfohlene Methode wird auf Apache-Webservern als „erste Wahl“ genannt, um sensible Verzeichnisse zu schützen?
Die Verwendung einer *.htaccess* Datei, die von den meisten Apache-Webservern unterstützt wird.
Welche Arten des Verzeichnisschutzes sind mit Apache-Bordmitteln über eine .htaccess-Datei möglich?
Über die Apache-Bordmittel lassen sich Verzeichnisse z.B. per Passwortabfrage schützen oder nur für bestimmte Benutzer bzw. IP-Adressen freigeben.
Wie kann man in einem Beispiel mit Apache-Mitteln den Zugriff auf ein Verzeichnis nur auf bestimmte IP-Adressen beschränken?
Im Beispiel wird per *.htaccess* (abhängig von Apache 2.4 bzw. 2.2) eine Zugriffskontrolle eingerichtet, sodass nur Anfragen von erlaubten IP-Adressen Zugriff erhalten (z.B. per „Require ip …“ bzw. „allow from …“).
Funktioniert IP-Schutz über .htaccess als hundertprozentige Sicherheitslösung?
Nein. IP-Beschränkungen sind keine hundertprozentig sichere Lösung, z.B. wegen IP-Spoofing oder weil Anfragen je nach Proxy-Umgebung über eine spezielle IP-Adresse an den Webserver weitergeleitet werden.
Was wird empfohlen, um einen bestmöglichen Schutz sensibler Daten zu erreichen?
Mehrere Umsetzungsmöglichkeiten kombinieren, z.B. IP-Beschränkung, Passwortabfrage oder eine Berechtigungsprüfung über Skripte.
Wie sieht eine Umsetzung „Personalisierung“ über Weblication® für den Zugriff auf sensible Dateien aus?
Weblication® CMS nutzt ebenfalls eine *.htaccess* Datei, verwendet aber Umschreibregeln (z.B. via mod_rewrite), um den Abruf sensibler Dateien über ein Skript wie „accessDocument.php“ gegen passende Berechtigungen zu prüfen.
Welche Voraussetzung muss für die Weblication®-Personalisierung über .htaccess erfüllt sein?
Der Server muss „mod_rewrite“ unterstützen.
Wie kann der Herunterladezugriff auf Dateien bei Weblication® im beschriebenen Ansatz ermöglicht werden?
Eingeloggte Weblication® Benutzer können Dateien über den Dateiexplorer herunterladen (z.B. per Rechtsklick „Herunterladen“). Welche Dateien angezeigt/geladen werden können, hängt von den Personalisierungseinstellungen (Ansichtsrecht) ab.
Wie wird im Beispiel U2.1 die Datei-Zugriffsanfrage über accessDocument.php umgeleitet?
Mit einer RewriteRule wird jeder Abruf einer Datei in das Layout-/Projektpfad-Setup geleitet, sodass „accessDocument.php“ mit Parametern wie „document=/de/intern/$1“, „display=1“ und „forceDownload=0“ aufgerufen wird (Projektpfade anpassen!).
Was passiert laut Hinweis, wenn noch keine Personalisierung für das Verzeichnis bzw. die Dateien gesetzt wurde?
Dann können zunächst alle Benutzer und sogar Seitenbesucher die Dateien direkt aufrufen.
Wie kann man den Schutz bei Weblication® im beschriebenen Ansatz aktivieren?
Durch Setzen der Personalisierung über die Datei-Eigenschaften (Personalisierung) bzw. über das Weblication® Zusatzmodul, um Benutzer oder Gruppen mit Ansichtsrechten zu hinterlegen.
Wie kann Personalisierung in Weblication® auch ohne Zusatzmodul umgesetzt werden?
Dann muss es manuell im Quelltext der Dokumentenerweiterung erfolgen (im Artikel wird ein Auszug aus der Standard-Dateieinstellung „wdExtension.php“ mit „<wd:personalization>“ gezeigt).
Sind die beschriebenen Schutzmaßnahmen nur für HTTP-Zugriffe relevant?
Ja. Die Möglichkeiten im Artikel beziehen sich auf den HTTP-Aufruf. Andere Zugriffswege wie FTP, sFTP, SSH oder Zugriffe über das Betriebssystem sollten bei sensiblen Daten ebenfalls berücksichtigt werden.
Kann ein hundertprozentiger Schutz sensibler Daten gewährleistet werden?
Nein. Es kann kein hundertprozentiger Schutz garantiert werden; man muss selbst abwägen, welche Daten abgelegt werden und wie sie geschützt werden.