Ungeschützte macOS-Desktop-Dateien
Es gibt Sicherheitsrisiken aufgrund ungeschützter .DS_Store
Dateien.
Details:
Das Betriebssystem MacOS legt auf lokalen Speichermedien automatisch Indexdateien - .DS_Store
- an, die Anzeigeoptionen zu allen Dateien sowie Unterverzeichnissen eines Ordners speichern. Aufgrund verschiedener Arbeitsweisen werden beim Abgleich von Dateien zwischen dem Installationsverzeichnis des Produktivshops und dem Arbeitsgerät des Web-Entwicklers häufig alle Dateien mit kopiert. Die eigentlich lokalen .DS_Store
-Dateien können so beim späteren Hochladen von Änderungen oder bei einer Neusynchronisation auf den Webserver kopiert werden. Da die Dateien Informationen wie Konfigurationsdateien, Sicherheitskopien oder Datenbank-Exporte beinhalten, birgt ihre Erreichbarkeit über den Webserver die Gefahr der Übernahme oder Manipulation eines Shops oder des Abrufens von Datenbankinhalten.
Problemlösung: .DS_Store-Dateien löschen
Da die .DS_Store
-Dateien nur Darstellungsinformationen für Mac OS beinhalten, sollten diese Dateien vom Webserver gelöscht werden. Mit dem folgenden Befehl können Sie sich diese Dateien auf Ihrem Cluster anzeigen lassen. Beachten Sie, dass die Ausführung einige Zeit in Anspruch nehmen kann, wenn Sie sehr viele Verzeichnisse und Dateien auf Ihrem Cluster speichern.
find /var/www/share -type f -name .DS_Store
Erzeugt dieser Befehl keine Ausgabe wurden keine .DS_Store
-Dateien gefunden. Werden Ihnen Dateien ausgegeben, die Sie löschen möchten, fügen Sie dem Befehl zusätzlich den Parameter -delete
hinzu:
find /var/www/share -type f -name .DS_Store -delete
Cronjob zum Löschen der .DS_Store-Dateien
Um generell zu verhindern, dass .DS_Store
-Dateien auf dem Cluster abgelegt werden, können Sie das Löschen dieser Dateien auch automatisieren.
Legen Sie dafür über das Managed Center Ihres Clusters einen Cronjob zum Entfernen dieser Dateien an.
Navigieren Sie zum Menüeintrag "Cronjobs" im Managed Center des gewünschten Clusters.
Klicken Sie den blauen Button "Befehl ausführen". Es öffnet sich ein Fenster mit Eingabefeldern.
Wählen Sie die Voreinstellung "Täglich um 00:00 Uhr" aus.
Geben Sie im Feld Minute einen zufälligen Wert zwischen 0 und 59 ein. Der Wert "17" ist nur ein Beispiel, aber eine "krumme" Zahl (nicht durch 5 teilbar) ist ideal.
Geben Sie im Feld "Befehl" den auszuführenden Befehl ein:
find /var/www/share -type f -name .DS_Store -delete
Klicken Sie auf den grünen Button "Speichern".
Nach dem Speichern wird Ihnen der neue Cronjob als Kachel unter der Überschrift "Befehl ausführen" angezeigt. Aktivieren Sie ihn durch Anklicken des roten Schalters auf der linken Seite der Kachel. Damit werden täglich alle eventuell hochgeladenen
.DS_Store
-Dateien vom Server gelöscht.
Bitte beachten Sie, dass das automatische Löschen sehr ressourcenintensiv sein kann, wenn Sie sehr viele Verzeichnisse und Dateien auf Ihrem Cluster haben. Auch bei einem zwischen mehreren Servern verteilten Medienverzeichnis ist dieses Vorgehen nicht ideal. Bitte kontaktieren Sie uns in einem solchen Fall für eine individuelle Lösung.
Weitere Sicherheitsmaßnahmen
Generell sollten sich in dem Verzeichnis, aus welchem der Webserver Dateien ausliefern kann, nur Dateien befinden, die auch ausgeliefert werden sollen. Bei Magento 2 beispielsweise können Sie dies einfach erreichen, indem Sie das htdocs
-Verzeichnis durch einen symbolischen Link auf das Magento-Unterverzeichnis pub
ersetzen. Bei Shopware 6 ist diese Einstellung (mit dem Unterverzeichnis public
) bereits Pflicht. Beim Erstellen von Datenbankexporten, Backups und Logdateien sollten Sie zudem darauf achten, dass diese direkt außerhalb des htdocs
-Verzeichnisses gespeichert werden.
Wenn sich bestimmte Dateien im htdocs
-Verzeichnis oder einem Unterordner befinden müssen, aber diese nicht über den Webserver erreichbar sein sollen, empfehlen wir die Zugrifssperre dieser Dateien und Verzeichnisse.
Apache
Beim Einsatz von Apache lassen sich Verzeichnisse oder Dateien über die .htaccess
-Konfigurationsdatei schützen. Dieser Schutz gilt dabei für das Verzeichnis, indem sich die Datei befindet sowie auch für alle Verzeichnisse darunter. Bearbeiten Sie eine vorhandene .htaccess
-Datei im htdocs
-Verzeichnis oder erstellen Sie die Datei, falls sie nicht existiert. Wenn Sie ein komplettes Verzeichnis mit allen Unterverzeichnisse schützen möchten, fügen Sie den folgenden Inhalt in die .htaccess
-Datei ein:
Require all denied
Diese Konfiguration ist gültig für Apache 2.4. Apache 2.2 benötigt eine andere Konfiguration, diese Version kommt bei unseren Clustern jedoch nicht mehr zum Einsatz.
Möchten Sie einzelne Dateien in einem oder mehreren Verzeichnissen schützen, fügen Sie den folgenden Inhalt in die .htaccess
-Datei im htdocs
-Verzeichnis ein:
# Zugriff auf Dateien mit der Endung "sql" sperren
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule \.sql$ - [NC,F,L]
</IfModule>
NGINX
Beim Einsatz von NGINX muss der Schutz in der Konfiguration der betroffenen Domain eingebaut werden. Sie können über den Regeleditor der betroffenen Domain die folgende Zeile in die userdefined.conf
hinzufügen. Passen Sie die Regel dabei entsprechend der zu schützenden Dateien oder Verzeichnisse an.
# Zugriff auf Dateien mit der Endung "sql" sperren
location ~* "\.sql$" { return 403; }
Weitere Handlungsempfehlungen
- Schützen Sie auch die Verzeichnisse der Versionskontrollsysteme Git und Subversion vor unerlaubtem Zugriff.
- Prüfen Sie beim Einsatz von Apache in einer vorhandenen
.htaccess
-Datei, ob der Zugriff auf entsprechende Verzeichnisse oder Dateien gesperrt wird. Auch in den zu schützenden Verzeichnissen selbst können.htaccess
-Dateien enthalten sein. - Verwenden Sie beim Einsatz von NGINX unsere Anwendungs-Templates, welche bereits viele anwendungsspezifische Ordner und Dateien schützen.