In diesem Beitrag will ich einige nützliche Hinweise zum Thema Sicherheit in Joomla! schreiben.
Der Artikel ist selbstverständliche keine Anleitung dafür, ein "unhackbares" Joomla! zu erstellen, aber es trägt sicherlich etwas dazu bei, es möglichen Angreiferen zu erschweren.
Allgemeines
- Achtet bereits bei der Installation darauf, dass Ihr nicht die standard Tabellenpräfix "jos_" verwendet. Damit rechnet natürlich auch jeder. Setzt euch hier irgendein anderes Präfix, welches euch ja später nicht mehr interessieren dürfte.
Habt Ihr bereits die Installation durchgeführt, könnt ihr mit der Komponente EASYSQL die Präfixe im nachhinein ändern.
Löscht die Komponente am Besten auch gleich nach der Benutzung wieder.
- Grundsätzlich erzähl ich sicherlich nichts neues, dass man sichere Passwörter für seine Zugänge verwenden soll. Wörter wie "hans82" würde ich in jeden Fall vermeiden. Besser währ "h8Sna". Was die Passwortlänge angeht, so empfehle ich mind. 8 Zeichen zu verwenden und auch ruhig Sonderzeichen mit einzubeziehen.
Die Passwörter sollten ca. alle 6 Monate geändert werden. - Kommt bitte nicht auf die Idee und schreibt nun eure ganzen Passwörter in eine Excel Datei, welche ihr mit "passwörter.xls" auf den Desktop legt.
Schreibt sie euch am einfachsten in ein kleines Passwörterbuch und denkt auch daran, wenn Ihr Besuch habt, es zu verstecken. Wenn Ihr dennoch eine Datei anlegt, benennt sie wenigstens so, dass man nicht gleich einen Schluss auf deren Inhalt ziehen kann. Schützt auch diese Datei selbst mit einem Passwort und legt sie am Besten auf einen USB-Stick, welchen Ihr bei nicht Gebrauch auch abzieht. - Wie beim 1. Punkt beschrieben, sollte man auf nicht benötigte Komponenten, Module oder Plugins verzichten und diese auch gleich wieder löschen. Jeder zusätzliche Code kann Sicherheitslücken beinhalten. Löscht alles, was Ihr nicht benötigt, auch Templates sind in der Regel nur 2 notwendig. Das Frontend- und Backendtemplate. Alle anderen können gelöscht werden. Löscht auch eure Papierkörbe und den Cache.
- Nach dem Login, legt euch gleich einen neuen Login an. Benutzt am Besten auch hier bereits einen etwas "kryptischeren" Benutzernamen. z.B. die 1. Buchstaben eures vollständigen Namens gefolgt vom Geburtsdatum oder so. Passwort siehe vorherige Punkte. Gebt dem Benutzer den Superadministrator und logt euch mit diesem anschließend ein. Geht dann zu den Benutzern, stellt den ursprünglichen "admin" Account auf Administrator oder Manger, (in jeden Fall entzieht im den Superadministrator. Anschließend könnt Ihr diesen löschen. Achtet darauf, auch wirklich einen NEUEN Benutzer anzulegen, da dieser dann auch eine neue ID bekommt. Der Standard Benutzer bei der Installation bekommt nämlich immer die gleiche ID!
Fehlerseiten
- Die standard Fehlerseiten von Joomla! geben eine Menge Hinweise für eure Angreifer. So sagt z.B. ein Fehler 403 dass man auf das Verzeichnis oder die Datei keine Zugriffsberechtigung hat. Es sagt aber sehr wohl, dass es überhaupt existiert.
Eine Möglichkeit wäre, eine eigene Fehlerseite in sein Template zu integrieren. Dafür müsst Ihr lediglich im Template-Verzeichnis eine error.php anlegen und kopiert z.B. folgenden Inhalt in die Seite:<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xml:lang="<?php echo $this->language; ?>"
lang="<?php echo $this->language; ?>"
dir="<?php echo $this->direction; ?>">
<head>
<title>
<?php echo 'ERROR'; ?>
</title>
</head>
<body>
<div id="errorheader">Error</div>
<div id="errorbody">
<p>Sorry! You caused an error.</p>
</div>
</body>
</html> - Der direkte Aufruf dieser Datei wird in der 3. Zeile verboten und mögliche Fehler werden mit den beiden Zeilen im BODY-Tag abgespeist.
Dateirechte
- Grundsätzlich sollten alle Verzeichnisse mit 755 berechtigt sein. Dateirechte sind allgemein auf 644. Dies kann z.B. mit FileZilla ganz komfortabel eingestellt werden, indem entsprechend die haken gesetzt werden.
- Ausnahmen bilden folgende Dateien:
index.php index2.php configruation.php /templates/meintemplate/index.php /administrator/index.php /administrator/index2.php /administrator/index3.php Alle .css, .js, .htaccess und Bild-Dateien
Auch hier kann man in Filezilla einen Filter anlegen, welcher ausschließelich die gewünschten Dateien anzeigt, welche man dann die Rechte geben kann.
HTACCESS-Einstellungen
Hier habe ich 3 Varianten für euch parat.
- Die 1. Variante
Diese Einstellungen verbieten den Zugriff auf die Verzeichnisse, in welchem die .htaccess liegt.
<Files „*.*“> Deny from all </Files>
kopiert Ihr einfach in folgende Ordner. Hier soll auch niemand zugriff haben/administrator/backups /administrator/cache /administrator/language /cache /language /libraries /logs /tmp /xmlrpc*
- Die 2. Variante
Diese Einstellungen gewähren Ausnahmen in den Verzeichnissen, in welchen die .htaccess liegt.
<Files „*.*“> Deny from all </Files>
kopiert Ihr einfach in folgende Ordner. Hier machen wir ein paar Ausnahmen z.B. für Bilder, welche ja dargestellt werden sollen.
<FilesMatch "\.(js|css|png|jpg|jpeg|gif|ico|flv|swf)$"> Allow from all </FilesMatch> /Files>/administrator/components /administrator/help /administrator/images /administrator/includes /administrator/modules /administrator/templates /components /images /includes
- Die 3. Variante
Die letzte Variante kommt in den Administrator-Ordner und gewährt nur gewissen IP-Räumen den Zugriff### Zugriff von IP erlauben - Start ###
Hier lest Ihr am Besten mit einem IP-Tool eure aktuelle IP Adresse aus. Nehmt die ersten beiden Zahlenblöcke und kopiert sie an die stelle der X. Damit gewährleistet Ihr, dass euer Anschluss in den Administratorzugang darf. Ihr könnt hier natürlich auch weitere IP-Räume eintragen z.B. wenn Ihr über mehrere Zugänge in euren Admin Bereich kommen wollt.
Order Deny,Allow
Deny from all
Allow from xxx.xxx
Satisfy all
### Zugriff von IP erlauben - End ###
Legt die Datei in euren Administrator-Ordner und vergesst nicht, den .htaccess Dateien die Rechte 444 zuzuweisen.
Templates
Standardmäßig wird in Joomla! der Meta-Generator Tag mit einem Hinweis auf Joomla! erstellt. Angreifer können somit schonmal feststellen, mit welchem CMS die Seite gemacht ist und deren Sicherheitslücken ausnutzen.
<?php // Change GeneratorTag $this->setGenerator(''); ?>
Fügt diese Zeilen einfach in den HEAD-Bereich eures Templates. In diesem Fall wird nichts im Generator-Tag angezeigt. Ihr könnt hier in den einfachen Anführungszeichen aber auch X-Beliebiges hineinschreiben und enstprechend für etwas Verwirrung sorgen.