Ungeschützte macOS-Desktop-Dateien

Es gibt Sicherheitsrisiken aufgrund ungeschützter .DS_Store Dateien. Wie kann ich meine .DS_Store Dateien schützen?

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

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

  1. Navigieren Sie zum Menüeintrag Cronjobs im Managed Center des gewünschten Clusters.
  2. Klicken Sie Befehl ausführen +. Es öffnet sich ein Fenster mit Eingabefeldern.
  3. Wählen Sie die Voreinstellung 'Täglich um 00:00 Uhr' aus.
  4. 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.
  5. Geben Sie im Feld Befehl den auszuführenden Befehl ein: find /var/www/share -type f -name .DS_Store -delete
  6. Unter Beschreibung geben Sie den Cronjob eine Beschreibung, wie z. B. .DS_Store-Dateien entfernen.
  7. Klicken Sie auf Speichern, um die Eingaben zu übernehmen.
  8. Nach dem Speichern wird Ihnen der neue Cronjob in der Übersicht aufgelistet und ist sofort aktiv.
    Mit diesem Cronjob werden täglich alle eventuell hochgeladenen .DS_Store-Dateien vom Server gelöscht.

Bitte beachten Sie, dass das automatische Löschen sehr Ressourcen-intensiv 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 Zugriffssperre dieser Dateien und Verzeichnisse.

Beispiel: 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>

Sie finden die .htaccess-Datei nicht?

Falls Sie in Ihrem Shop-Installationsverzeichnis nirgendwo eine Datei mit Namen .htaccess sehen, könnte dies an den Einstellungen Ihres FTP-Programms liegen. Da der Dateiname .htaccess mit einem Punkt beginnt, wird diese Datei nur dann sichtbar, wenn Sie die Anzeige von versteckten Dateien aktiviert haben.
Auch beim Zugriff per SSH müssen Sie die Anzeige von versteckten Dateien aktivieren, beispielsweise in dem Sie zum Befehl ls den Parameter -a mit angeben.

Beispiel: NGINX

Beim Einsatz von NGINX muss der Schutz in der Konfiguration der betroffenen Domain eingebaut werden. Sie können über den NGINX-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 – in den NGINX-Regeln integrierten – Anwendungs-Templates, welche bereits viele anwendungsspezifische Ordner und Dateien schützen.

 

Bei Fragen steht Ihnen unser Support telefonisch unter 05251/414130 oder per E-Mail an support@maxcluster.de zur Verfügung.

Veröffentlicht am 08.03.2024