IP-Sperren für bestimmte (Drupal-)Verzeichnisse in der .htaccess

Um Content-Management-Systeme wie Drupal abzusichern, macht es Sinn, dass Backend zur Pflege und Verwaltung nur bestimmten IP-Bereichen zugänglich zu machen. Eine Möglichkeit für jedes nahezu jedes CMS besteht darin, dies über die Apache-Konfiguration in der .htaccess durchzuführen, sofern das Apache-Modul mod-rewrite aktiviert ist. Wir leiten jede nicht zulässige IP-Adresse auf eine Fehlerseite (403) weiter. Ich zeige das hier mal an einem Beispiel für Drupal 7 und einer aktuellen Apache-Version (>2.4.x):

Seit der Apache 2.4 Version kann man für größere IP-Bereiche die CIDR  Schreibweise verwenden. Eine Seite zur Berechnung der IP-Bereiche findet man unter mxtoolbox oder jodies, letzterer sieht ein wenig altbacken, dafür aber übersichtlicher aus.

Befindet sich auf dem Server noch eine ältere Apache Version, z. B. 2.2.x, dann könnt ihr die RewriteCond expr so nicht verwenden. In diesem Fall sieht die Konfiguration folgendermaßen aus:

Und dann existiert noch ein Sonderfall, der ab und an bei größeren Server-Farmen, gerade bei größeren Firmen vorkommen kann, die Seiten werden über einen Proxy-Server aufgerufen und die Remote-IP Adresse (%{REMOTE_ADDR}) ist deshalb für alle Besucher die selbe. In diesem Fall muss man die X-FORWARDED-FOR Server-Variable abrufen. Das Beispiel sieht dann folgendermaßen aus (Apache > 2.4.x):

Und für den Apache bis 2.2.x:

Gerade die beiden letzten Beispiele haben mir bei einigen Server-Konfigurationen etwas Kopfzerbrechen bereitet. Ich hoffe, es hilft dem einen oder anderen weiter.

Pimcore Tutorial Teil 1a: Installation

Ich überlege schon seit längerem, ein mehrteiliges Pimcore Tutorial zu schreiben. Und jetzt ergibt sich vielleicht der passende Zeitrahmen.

Pimcore ist ein CMS, Rapid Development Tool, Asset Management, PIM und noch einiges mehr, basierend auf PHP. In älteren Versionen (bis Pimcore 4) basierte es noch auf dem Zend Framework (ZF Version 1.x). Seit Pimcore 5 bildet Symfony 2 die Basis, wobei es einen Backport für alte ZF basierte Module bietet. Pimcore wurde ursprünglich von der österreichischen Agentur Elements.at entwickelt. Für die weitere Entwicklung wurde das aber in ein eigenes Unternehmen ausgelagert, die Pimcore GmbH, welche ebenfalls in Salzburg, Österreich ansäßig ist.

Nun aber zum eigentlichen Thema, der Erstellung eines Projekts mit Pimcore (Version 5).

Wie bei jedem neuen Projekt steht zuerst die Installation, und darum soll es heute gehen.

Pimcore benötigt neben einem PHP-fähigen Webspace noch eine MySQL Datenbank (oder MariaDB). Die Datenbank muss das Charset utf8mb4 haben.

Pimcore bietet mehrere Möglichkeiten zur Installation. Zum einen kann man es über die Kommandozeile installieren, sofern man über einen SSH-Zugang verfügt. Dann kann man im entsprechenden Ordner, z. B. /var/www/projekt/web, das Paket herunterladen und entpacken.

Falls man als root angemeldet ist, sollte man, bevor man irgendetwas installiert, zum User mit entsprechenden Zugriffsrechten für das Webverzeichnis wechseln, z. B. www-data.

Wechsel ins Installationsverzeichnis:

Anschließend wird Pimcore herunter geladen und im Verzeichnis entpackt:

Das Pimcore-Archiv kann nun wieder entfernt werden. Es wird nicht länger benötigt.

Falls der Shell-Zugriff nicht ohne weiteres möglich ist, ist es alternativ natürlich auch möglich, sich das Pimcore-Paket unter https://pimcore.com/en/download herunterzuladen, lokal zu entpacken und via FTP auf den Server zu kopieren (beim lokalen Arbeiten natürlich in das Verzeichnis des Webservers). Hierbei ist lediglich zu achten, dass Pimcore außerhalb des Webroot installiert werden darf, da der web Ordner im Pimcore-Paket das eigentliche Webroot-Verzeichnis wird.

Jetzt hat man einige neue Ordner und Dateien in seinem Installationsverzeichnis. Der document root des vhost sollte auf den neu erstellten Ordner web im Installationsverzeichnis zeigen.

Pimcore InstallationsformularJetzt könnt ihr die Seite unter der konfigurieren URL aufrufen, z. B. localhost. Abschließend müsst ihr die Angaben zur Datenbank machen und der Pimcore Installer erledigt den Rest. Ihr könnt bei der Installation noch zwischen verschiedenen Profilen wählen, einem fertigen System mit Beispiel-Daten zu Objekten und Templates (mit oder ohne Twig) oder einem komplett leeren Pimcore-Projekt.

Danach könnt ihr euch unter der URL http://localhost/admin/login mit eurem gewählten Passwort in das Backend einloggen und euch mit den verschiedenen Optionen vertraut machen.

Im nächsten Beitrag beschreibe ich eine alternative Installations-Methode über Composer, da das mittlerweile bei größeren Projekten zum Standard geworden ist.