+49 (0) 9491 / 742 988 50

Der Joomla Basis Sicherheit Guide

Joomla ist nach WordPress und Shopify das dritthäufigste CMS und bietet seinen Usern die Möglichkeit, eine Reihe von Webseiten zu realisieren. Möglich sind etwa normale Infowebsites, Foren oder Onlineshops. Über 6000 Extensions bieten zusätzliche Möglichkeiten, um den Funktionsumfang einer Standard Joomla Installation zu vergrößern.

Aufgrund der vielseitigen Möglichkeiten und der weiten Verbreitung stellt Joomla natürlich auch ein interessantes Ziel für Hacker dar. Um Ihnen dabei zu helfen, die Sicherheit Ihrer Joomla Webseite zu verbessern, haben wir diesen Basis Sicherheit Guide verfasst. Eine Kurzversion dieses Guides können Sie übrigens auch als praktische Checkliste herunterladen.

Default Admin Name ändern

Nach der Installation ist der Default Name des Admin Accounts „admin“. Da dieser Name allgemein bekannt ist, werden dadurch Brute Force Angriffe deutlich erleichtert. Dazu ein kleines Beispiel:

Wenn ein Angreifer 1000 mögliche Benutzernamen überprüft und für jeden Namen 1000 verschiedene Passwörter durchprobiert, ergeben sich 1000*1000 = 1.000.000 Versuche. Obwohl die Anzahl möglicher Passwörter also recht niedrig gewählt ist (typische Passwort Listen haben mehrere Millionen Einträge), kommt schon einiges zusammen.

Wenn der Name nun aber bekannt ist (etwa weil ein Default Name wie „admin“ nicht geändert wurde), reduziert sich die Zahl der Versuche auf 1*1000 = 1000 (oder wenn die Zahl der Versuche gleich bleibt, könnte der Angreifer nun eine Million Passwörter durchprobieren).

Ein bekannter Benutzername kann einem Angreifer die Arbeit also deutlich erleichtern. Umgekehrt bedeutet das aber auch: Wenn man einen schwer zu erratenden Benutzernamen wählt, schafft man eine zusätzliche Hürde, die der Angreifer überwinden muss.

In neueren Joomla Versionen kann der Admin Name schon während der erstmaligen Installation verändert werden. Falls Sie allerdings eine ältere Version verwenden, oder den Namen bei der Installation nicht geändert haben, können Sie dies auch noch nachträglich erledigen.

Denn den Admin Namen in Joomla zu ändern, ist nicht besonders schwer: In der Administrationsoberfläche wählt man den Reiter „User“ und dann das „User Manager“ Menü. Dort werden alle User angezeigt, die ein Konto bei der jeweiligen Joomla Installation haben. Wenn man nun den Default Admin Account anklickt, kann man den Parameter „Login Name“ ändern. Das sollte am besten direkt nach dem erstmaligen Einloggen geschehen, um unnötige Risiken zu vermeiden.

Der neue Name sollte folgende Kriterien erfüllen:

  • Kein Bezug zur Funktion (also nicht Administrator, root o.ä.)
  • Nicht ihr Vor- oder Nachname (und auch keine Kombination davon)
  • Keine Emailadresse
  • Nichts das sich aus dem Inhalt der Webseite ergeben könnte (z.B. keine Produktnamen, wenn Sie einen Onlineshop betreiben)

 

Am besten wählen Sie also einen Namen, der nur Ihnen bekannt ist und der sich nicht aus der Seite oder einem Ihrer Social Media Profile ergeben könnte. Auf diese Weise wird es für einen Angreifer deutlich schwerer, den Benutzernamen des Admin Accounts zu erraten.

Übrigens: Falls Sie Angst haben, dass Ihr Name so gut gewählt ist, dass Sie ihn selbst einmal vergessen könnten, dann können Sie einen Passwort Manager verwenden, in diesem Fall müssten Sie sich nur noch das Masterpasswort merken und können im Manager alle relevanten Usernamen und Passwörter speichern.

Security Updates abonnieren

Unter https://developer.joomla.org/security-centre.html veröffentlicht das Entwicklerteam regelmäßig Updates zu entdeckten Sicherheitslücken. Diese Seite sollten Sie also im Auge behalten, um über aktuelle Entwicklungen und mögliche Risiken für Ihre Joomla Instanz reagieren zu können. Im Screenshot sehen Sie ein Beispiel einer solchen Meldung:

Wie Sie sehen, sind die betroffenen Versionen aufgeführt, die Auswirkungen der Schwachstelle (in diesem Fall „Low“, also ein eher geringes Risiko) und eine mögliche Lösung.

In vielen Fällen handelt es sich nur um geringfügige Schwachstellen, die in der Regel durch ein Update auf die neueste Version behoben werden können. Sie sollten also auch darauf achten, dass Ihre Joomla Installation möglichst aktuell ist.

Passwort Policy umsetzen

Das 1234 oder admin kein sicheres Passwort ist, sollte eigentlich jedem klar sein. Doch auch scheinbar sichere Passwörter, die aus Zahlen und Sonderzeichen bestehen, lassen sich oft knacken, wenn man sich die Social Media Profile der jeweiligen Person anschaut.

Das liegt ganz einfach daran, dass sich kaum ein Mensch Passwörter wie „sflj9ß2Eü#foiikdQ‘!“ merken kann und sich die Verwendung von Passwort Managern noch nicht in der breiten Bevölkerung durchgesetzt hat. Also setzt man sein Passwort aus Dingen zusammen, an die man sich gut erinnern kann: Der Name der Freundin oder des Freunds, das Land in dem man gerne Urlaub macht, das Gründungsdatum des Lieblingsfußballvereins etc.

Abgesehen davon, dass man Mitarbeiter für dieses Risiko sensibilisieren kann, kann man aber auch auf technischer Seite Vorkehrungen treffen, um zumindest eine gewisse Passwort Sicherheit zu garantieren.

Unter Users/ Manage/ Options/ Password Options kann man bei Joomla nämlich festlegen, welche Kriterien Passwörter erfüllen müssen. So kann man etwa auf eine bestimmte Mindestlänge bestehen (die Länge eines Passworts wirkt sich noch deutlicher auf die Sicherheit aus als der verwendete Zeichensatz), Zahlen vorschreiben oder auf mindestens ein Sonderzeichen bestehen.

Das mag in Einzelfällen sicher zu frustrierten Nutzen führen, wenn diese mehrere Versuche benötigen, um ein sicheres Passwort zu erzeugen, es erhöht aber eben auch die Sicherheit der Anwendung und die Sicherheit der einzelnen User Accounts. Letzten Endes muss man die User an dieser Stelle vielleicht auch einfach zu ihrem Glück zwingen, um eine gewisse Mindestsicherheit garantieren zu können.

Security Extensions nutzen

Ähnlich wie bei den meisten CMS lässt sich auch bei Joomla der Funktionsumfang der Seite durch externe Programme erhöhen. Bei Joomla werden diese Extensions genannt und können unter https://extensions.joomla.org/ heruntergeladen werden.

Um die Sicherheit der Joomla Seite zu erhöhen, bietet es sich an, auch einige Extensions mit einem Fokus auf Security zu installieren. Ohne Anspruch auf Vollständigkeit wollen wir Ihnen an dieser Stelle einige vorstellen:

  • RSFirewall!
  • Watchful
  • AdminExile
  • JomDefender
  • Securitycheck
  • jSecure
  • BadBot Protection
  • KeyCAPTCHA

 

Daneben existiert noch eine Vielzahl weitere Extensions, manche davon sind sehr generalistisch  aufgestellt, andere kümmern sich nur um eine ganz bestimmte Funktion. Weitere Security Extensions können Sie beispielsweise hier und hier finden.

Übrigens gilt an dieser Stelle NICHT viel hilft viel. Durch mehrere Extensions, die die gleiche Aufgabe übernehmen, erhöht sich die Sicherheit nicht, es besteht vielmehr das Risiko, dass sich die unterschiedlichen Extensions in die Quere kommen und dadurch ihre Funktionalität beeinträchtigt wird. Hier sollte man sich also im Vorfeld überlegen, was man genau auf der Seite braucht und dann nur die Extensions installieren, die zur Umsetzung des gewünschten Sicherheitslevels auch notwendig sind.

Extensions regelmäßig überprüfen

Extensions können die Sicherheit der Seite erhöhen, stellen auf der anderen Seite aber natürlich auch eine Vergrößerung der Angriffsfläche dar. Um dieses Risiko zu minimieren, sollte man bei der Auswahl von Extensions darauf achten, dass diese regelmäßig aktualisiert werden. Joomla unterstützt dies, indem Extensions die erst vor kurzem ein Update erhalten haben, grün markiert sind:

Die Watchful Extension wurde beispielsweise letztmalig vor zwei Wochen geupdatet, entsprechend ist der Schriftzug grün markiert.

Bei Zap Audit ist das letzte Update dagegen schon mehr als drei Jahre her, dies wird von Joomla mit einem orangenen Schriftzug verdeutlicht. Extensions die seit mehr als einem Jahr kein Update mehr erhalten haben, sollte man nur in Ausnahmefällen installieren.

Zusätzliche sollte man in regelmäßigen Abständen die verwendeten Extensions darauf überprüfen, ob sie in der Vulnerable Extensions List auftauchen.

Für die in der Liste aufgeführten Extensions existiert kein bekanntes Update, sodass man Joomla die Deinstallation der Extension empfohlen wird.

SEF URLs aktivieren

SEF bedeutet Search Engine Friendly, also URLs die von Suchmaschinen besser verarbeitet werden können. Statt http://www.beispiel.de/index.php?option=com_content&view=article&id=1:welcome-to-joomla&catid=1:latest-news&Itemid=50 steht dann dort etwa http://www.beispiel.de/index.php/the-­news/1-­latest­-news/1­-welcome­-to­-joomla.

Das hat einerseits den Vorteil, dass Suchmaschinen wie Google besser verstehen worum es auf der Seite geht, was sich letztlich auch positiv auf den Traffic auswirkt, andererseits werden dadurch aber auch weniger Parameter in der URL übertragen, die von einem Angreifer möglicherweise manipuliert werden könnten, beispielsweise im Rahmen von Directory Traversal.

Zudem erscheinen ohne die Aktivierung von SEF URLs teilweise die verwendeten Extensions in der URL, was einem Angreifer bei der Suche nach Schwachstellen weiterhelfen kann. Es gibt also eigentlich keinen guten Grund, SEF URLs nicht zu aktivieren.

Seit der Joomla Version 1.6 können SEF URLs über die globale Konfiguration aktiviert werden. Wenn Sie zusätzlich noch auf den /index.php/ Teil der URL verzichten möchten, um kürzere besser lesbare URLs zu erzeugen, müssen Sie noch URL rewriting über die .htacces Datei aktivieren.

Im Falle eines Apache Servers funktioniert das wie folgt:

  • Öffnen Sie die .htacces Datei mit einem Texteditor
  • Suchen Sie in der Datei nach „RewriteBase“
  • Falls am Anfang dieser Zeile ein Hashtag Symbol (#) steht, entfernen Sie dieses
  • Speichern Sie die Datei
  • Abschließend müssen Sie noch in der Systemkonfiguration unter „Site“ „mod_rewrite nutzen“ auf Ja setzen

Berechtigungen für Files anpassen

Berechtigungen sollten immer so restriktiv wie möglich gehandhabt werden. Das bedeutet, jeder sollte nur genau das sehen und benutzen können, was für die Erfüllung seiner Aufgaben auch erforderlich ist. Ein Mitarbeiter, der beispielsweise Kundenanfragen bearbeitet, braucht logischerweise auch Zugang zu diesen. Er benötigt aber keine Berechtigung, um zusätzliche Extensions auf der Seite zu installieren. Wenn der Fall auftreten sollte, dass viele Kunden eine bestimmte Funktionalität wünschen, muss dies vom Servicemitarbeiter an ein Mitglied des Entwicklerteams weitergegeben werden, das über die entsprechenden Berechtigungen verfügt eine Extension zu installieren.

Um solche Berechtigungen abzubilden, bieten sich die Joomla Benutzergruppen an. Mit diesen können User in Gruppen wie „Gast“ oder „registrierter Benutzer“ eingeteilt werden, wodurch sie die entsprechenden Rechte der Gruppe ausüben können. Es kann aber auch vorkommen, dass diese Rechte immer noch zu weitreichend sind und man eine feingranularere Rechteverwaltung benötigt. Beispielsweise wenn die User einer bestimmten Gruppe alle Ordner eines Verzeichnisses sehen sollen, außer einem einzigen.

Für diese Fälle gibt es bei Joomla auch die Möglichkeit, Berechtigungen für einzelne Dateien oder Ordner zu vergeben. Die vorhandenen Berechtigungen können auf der Adminoberfläche über den Reiter „Seite“ und darin den Menüpunkt „System Informationen“ eingesehen werden.

Um Berechtigungen zu ändern, kann die Extension Admin Tools verwendet werden. Hinweis: Berechtigungen sind oftmals in Form von dreistelligen Zahlen wie 755 oder 644 dargestellt. Dabei steht die erste Zahl für die Berechtigungen des Eigentümers einer Datei, die zweite Zahl für die Gruppe und die dritte Zahl für die Berechtigungen aller anderen User.

Die Zahl 7 stellt dabei die Berechtigung zum Lesen, Schreiben und Ausführen einer Datei dar. Die Zahl 6 die Berechtigung zum Lesen und Schreiben und die Zahl 4 die Berechtigung zu Lesen. Im Fall von 755 bedeutet das, dass der Eigentümer einer Datei diese Lesen, Schreiben und Ausführen kann. Gruppen oder andere User haben allerdings keine Schreibrechte, können die Datei also nicht lesen oder ausführen.

Wichtig ist dabei insbesondere, dass die Kombination 777 vermieden wird. Diese Berechtigung gibt jedem die Möglichkeit, Dateien zu verändern, auch normale User können also auf Konfigurationsdateien zugreifen, diese abändern und dadurch möglicherweise die Webseite übernehmen.

?template=name* unterbinden

Wenn der String ?template=name* an das Ende einer URL angehängt wird, kann eine Seite mit einem anderen Template dargestellt werden. Für name muss dabei der Name des Templates verwendet werden.

Für Entwickler kann diese Funktion hilfreich sein, um zu sehen, welche Auswirkungen eine Änderung des Templates auf das Erscheinungsbild der Seite hätte. Allerdings sollte die Funktion nicht in Produktivumgebungen genutzt werden, da ansonsten Manipulationen der Seite möglich werden.

Um dieses Verhalten zu unterbinden, muss die .htacces Datei um die folgende Regel ergänzt werden:

RewriteEngine On

RewriteCond %{QUERY_STRING} template=(.*)

RewriteRule ^(.*)$ index.php [F,L]

Fazit

Wir hoffen, dass Ihnen dieser Basis Sicherheit Guide dabei hilft, die Sicherheit Ihrer Joomla Webseite zu verbessern. Gerne können Sie unsere Checkliste verwenden um abzuhaken, welche Punkte Sie bereits erledigt haben.