Gängige Praxis, nicht nur bei uns: Test-Systeme, auf denen die Kundin neue Features testen kann, ohne dass gleich das Live-System aktualisiert wird. Das soll dann aber nicht für die ganze Welte erreichbar sein... wir verwenden apache als Webserver, dort ist die wohl häufigste Lösung der sogenannte htaccess-Schutz, im einfachsten Fall etwas so:
AuthType Basic
AuthName "Unser Test-System"
AuthUserFile /path/outside/of/webroot/.htpasswd
Require valid-user
Wie viele andere Systeme liefert Drupal eine eigene .htaccess-Datei, in der etliche andere Dinge eingestellt sind (der Begriff htaccess-Schutz ist daher nicht wirklich korrekt, hat sich aber eingebürgert). Naheliegend ist dann einfach die entsprechenden apache-Anweisungen in diese mitgelieferte .hatccess einzufügen - damit handele ich mir aber neue Probleme ein:
- Gerade Core-Security-Updates ändern gerne mal die .htaccess.
- Wenn ich aber selber vorher schon Änderungen vorgenommen habe , muss ich jetzt anfangen zu mergen (und kann nur hoffen, das meine Änderungen kommentiert sind und am besten am Anfang der Datei stehen...)
Aus unserer Sicht ist es daher sinnvoll, die aktuelle .htaccess-Version unverändert in der Versionsverwaltung zu haben (siehe /blog/security-review-htaccess-und-was-gehoert-ins-git).
Wohin dann aber mit den Anweisungen für den Zugriffsschutz? Unsere Antwort: direkt in die Apache-vhost-Datei (üblicherweise in /etc/apache2/sites-available und ver-sym-links in /etc/apache2/sites-enabled). Die sieht normalerweise etwa so aus:
<VirtualHost 172.16.17.121:80>
ServerName hilo-ext.dev12.computer-manufaktur.net
DocumentRoot /path/to/webserver/root
<Directory "/path/to/webserver/root">
AllowOverride All
Options FollowSymlinks
Require all granted
RewriteEngine on
RewriteBase /path/to/webserver/root
</Directory>
</VirtualHost>
Für den Zugriffsschutz fügen wir eine neue Direktive Location innerhalb von VirtualHost (nicht innerhalb von Directory) ein:
<VirtualHost ...>
...
<Directory ...>
...
</Directory>
<Location />
AuthType Basic
AuthName "Unser Test-System"
AuthUserFile /path/outside/of/webroot/.htpasswd
Require valid-user
</Location>
</VirtualHost>
Der "/" bei " "<Location />" sorgt dafür, dass die Einschränkung bei allen Aufrufen greift (siehe https://httpd.apache.org/docs/2.4/mod/core.html#location).
Danach apache config testen (guter Stil bei Änderungen an der vhost-Datei):
# apache2ctl configtest
und dann Apache neu starten:
# apache2ctl restart
Et voila.
---
Nachtrag: eine Alternative zu htaccess-Schutz bietet das Drupal Modul shield (https://www.drupal.org/project/shield).
Neuen Kommentar hinzufügen