Vorgeschichte
Bei populärer Open Source Software wie z.b. Joomla, Wordpress, Drupal oder Typo3 ist bekannt wie der Administationsbereich zu erreichen ist.
Dies ermöglicht beispielsweise Brute Force Attacken.
Man kann diesen Bereich mit Hilfe von Erweiterungen oder Verzeichnisschutz zusätzlich schützen, jedoch beinhalted dies meistens ein weiteres Passwort oder eine komplizierte URL mit passwortähnlichen GET Parametern.
Ich nutze selbst auf diversen Seiten das AdminExile Plugin jedoch gingen mir je längers je mehr die verschiedenen URL Parameter auf die Nerven weshalb ich mich auf die Suche nach einer einfacheren Lösung machte.
Ausführung
Zuerst erstellt man einen Ordner im Joomla Stammverzeichnis z.b.
{root}/pmjadmin
In diesem Ordner erstellt man dann eine
index.php
mit folgendem Inhalt:
<?php
// Cookiename + Wert, die in der htaccess getestet werden sollen
// Können angepasst werden
$cookiename = 'pmjcookie';
$cookievalue = 'legit';
setcookie($cookiename, $cookievalue, 0, '/');
// Setze das Scheme, wenn vom Server nicht gegeben (http(s))
if (!isset($_SERVER['REQUEST_SCHEME']))
{
$_SERVER['REQUEST_SCHEME'] = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
}
// http(s)://
$url = $_SERVER['REQUEST_SCHEME'] . '://';
// Domain
$url .= $_SERVER['SERVER_NAME'];
// eventuell Unterordner + "administrator"
$url .= rtrim(dirname(dirname($_SERVER['SCRIPT_NAME'])), '/') . '/administrator';
// Weiterleitung
header('Location: ' . $url);
Danach erstellt man im Ordner
{root}/administrator
eine
.htaccess
Datei mit folgendem Inhalt:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} !pmjcookie=legit [NC]
RewriteRule .* - [R=404,NC,L]
Damit kann der Administrationsbereich nur noch erreicht werden wenn zuerst das Cookie aus der index.php gesetzt wurde indem man die URL
your.domain/pmjadmin
aufruft.
Anmerkung: Das Cookie wird auf "ewig" gesetzt!
Falls man also an einem fremden Computer arbeitet muss das Cookie nach getaner Arbeit manuell gelöscht werden!
Ansonsten ist der Administrationsbereich auf diesem Gerät immer über die Standard-URL erreichbar.
Zusätzliche Anpassungen
Cookie Lebenszeit
Wie vorgängig erwähnt bleibt das Cookie ewig bestehen wenn man es nicht manuell löscht.
Mit folgendem Code kann man aber die Session Lebenszeit aus der Joomla Konfiguration übernehmen.
In der
{root}/pmjadmin/index.php
fügt man einfach ganz am Anfang folgenden Code ein:
require_once('../configuration.php');
$config = new JConfig();
$cookielifetime = time() + ($config->lifetime * 60);
$config = null;
und ersetzt folgende Zeile:
- setcookie($cookiename, $cookievalue, 0, '/');
+ setcookie($cookiename, $cookievalue, $cookielifetime, '/');
Weiterleitung auf individuelle 404 Fehlerseite
In der
{root}/administrator/.htaccess
Datei kann man das 404 Eror Document definieren falls man eine individuelle Fehlerseite hat.
Man fügt einfach am Ende der Datei folgende Zeile ein:
ErrorDocument 404 /link-to-your-custom-error-page
Quellen
Das ganze Tutorial basiert komplett auf Administrator-Verzeichnis per htaccess schützen veröffentlicht von Benjamin Trenkle auf Wicked Software.
Auf dieser Seite findet man auch noch zusätzliche Tips wie man dieses Konzept noch erweitern kann.
Ich habe nur die Teile in diesem Artikel verarbeitet die ich selbst benötigt habe.