.htaccess Security 

Das Update von LiveConfig auf die Version v2.7.4 bringt zwei wichtige Änderungen bei der Verwendung der .htaccess mit sich.

1. Die Verwendung von ''FollowSymLinks'' ist nicht mehr gestattet. Bitte verwenden Sie stattdessen die Option ''SymLinksIfOwnerMatch''. **Diese Restriktion besteht bereits länger.** \\ Die Verwendung von ''FollowSymLinks'' ermöglicht interne Angriffe von einem Kunden-Account auf andere, um so fremde Daten auszulesen. Wenngleich diese Option keine Angriffe von außen ermöglicht, wird dies als Sicherheitsrisiko eingestuft.
2. Über die Anweisung ''SetHandler'' ist der Zugriff auf fremde Daten ebenfalls möglich und darf daher nicht mehr verwendet werden. Wird ''SetHandler'' eingesetzt, um mittels ''SetHandler none'' die Script-Ausführung zu unterbinden, so empfehlen wir stattdessen den Einsatz einer ''RewriteRule'', um Zugriffe zu unterbinden.

Die Anpassungen als Beispiel

Wir möchten Ihnen beide Anpassungen der .htaccess anhand des CMS Drupal erläutern:

Die standardmäßig von Drupal ausgelieferte .htaccess beinhaltet die Option FollowSymLinks. Bitte verwenden Sie statt dessen die Option SymLinksIfOwnerMatch.

# Follow symbolic links in this directory.
Options +FollowSymLinks

wird zu

# Follow symbolic links in this directory.
Options +SymLinksIfOwnerMatch

Drupal legt im Ordner sites/default/files/ automatisch eine weitere .htaccess-Datei an, welche ebenfalls die Option FollowSymLinks beinhaltet. Verwenden Sie bitte auch hier SymLinksIfOwnerMatch.

Außerdem wird hier die Anweisung SetHandler verwendet, um das Ausführen von hochgeladenen Dateien zu unterbinden. Der Gedanke hinter dieser Verwendung der Anweisung ist gut gemeint, allerdings verliert diese ihre Wirkung, sobald Ihr Drupal z.B. auf einem NGINX-Server gehostet ist.

Grundsätzlich sollte bereits das Hochladen der ausführbaren Dateien innerhalb der Ordnerstruktur der CMS-Installation unterbunden werden. Statt lediglich die Ausführung bzw. den Zugriff darauf zu unterbinden, sollten entsprechende sensible Inhalte komplett außerhalb des öffentlichen Zugriffs (sprich, außerhalb des DocumentRoot) abgelegt werden.

Da einige CMS-Systeme diese aber noch nicht bieten, verwenden Sie bitte stattdessen eine RewriteRule wie in unserem Beispiel.

# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
  # Override the handler again if we're run later in the evaluation list.
  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>

wird zu

# SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
RewriteEngine on
RewriteRule .+\.(php[3457]?|pht|phtml|phps|pl|py|pyc|pyo|sh)$ - [F,L]
<Files *>
  # Override the handler again if we're run later in the evaluation list.
  # SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>