Der Typo3 Basis Sicherheit Guide
Da die erste Typo3 Version bereits 1998 erschien, nimmt das Content Management System (CMS) im CMS Universum beinahe schon die Rolle eines Großvaters ein. Der Marktanteil ist zwar nicht so groß wie bei WordPress oder Shopify, doch das CMS scheint weiterhin gut am Markt anzukommen. In Deutschland setzen etwa Congstar, die Lufthansa und Fuchs Petrolub für ihre Internetauftritte auf Typo3.
Mit 500.000 Webseiten die Typo3 verwenden, ist das CMS zwar deutlich kleiner als der Mitbewerber WordPress der auf 75 Millionen kommt, allerdings ist diese Zahl immer noch groß genug, um interessant für professionelle Hacker zu sein. Denn je mehr User eine Software hat, umso größer sind die potenziellen Auswirkungen, wenn man eine Schwachstelle in dieser Software finden kann.
In diesem Typo3 Basis Sicherheit Guide zeigen wir Ihnen deshalb ein paar einfache Maßnahmen, die Sie umsetzen können, um die Sicherheit Ihrer Typo3 Webseite zu erhöhen. Tiefergehende technische Kenntnisse sind dafür übrigens nicht nötig, es handelt sich in den meisten Fällen um Maßnahmen, die bequem über die Typo3 Adminoberfläche umgesetzt werden können.
Übrigens gibt es eine Kurzversion dieses Guides auch als praktische Checkliste zum Download, diese können Sie gerne ausdrucken und dann die einzelnen Punkte nacheinander durchgehen und abhaken. Auf diese Weise ist sichergestellt, dass bei der Absicherung Ihrer Seite nichts vergessen wird.
Default Credentials ändern
Wenn man nach Typo3 Default Credentials googelt, erweist sich schon das erste Ergebnis als überaus hilfreich:
Ein Klick auf das Ergebnis verdeutlicht nochmal, was bereits auf der Google Ergebnisseite zu sehen war: Der Default Username nach der Installation ist „admin“.
Durch diesen leicht zu erratenden Namen werden Brute Force Angriffe auf die Login Seite wesentlich erleichtert, da der Angreifer nun nur noch eines der beiden Felder Username und Passwort erraten muss. Wenn man dazu noch bedenkt, dass viele Menschen Passwörter wählen, die sich aus Dingen zusammensetzen, die man leicht in ihren Social Media Profilen recherchieren kann (z.B. Name des Partners, Lieblingsfußballclub, Lieder die man gerne hört etc.), steigt die Gefahr deutlich an, dass ein Angreifer einen erfolgreichen Login durchführen kann.
Aus diesem Grund sollte auch der Username so gewählt werden, dass er von einem Angreifer möglichst nicht erraten werden kann. Das bedeutet:
- Keine Funktionsbezeichnungen wie „admin“ oder „Administrator“, da diese üblicherweise als allererstes ausprobiert werden.
- Keine Emailadressen, da diese üblicherweise auch auf anderen Seiten zu finden sind (z.B. als Kontaktangabe in einem Karrierenetzwerk wie Xing) bzw. sich in der Regel aus einer Kombination von Vor- und Nachname zusammensetzen und so auch leicht erraten werden können.
- Keine Namen mit Bezug zur Seite, wer eine Webseite mit touristischen Informationen über Frankreich betreibt, sollte also Usernamen vermeiden die Wörter wie „Eifelturm“ oder „Paris“ enthalten.
Am besten wählt man also einen Usernamen, an den man sich zwar leicht erinnern kann, den andere aber nicht mit einem selbst in Verbindung bringen können.
Falls Sie auf Ihrer Typo3 Webseite bisher den Namen „admin“ verwendet haben, können Sie das im Übrigen auch nachträglich noch ändern: Nach dem Login in das Backend der Seite sieht man oben rechts seinen Usernamen, klickt man darauf hat man die Möglichkeit User Settings auszuwählen. In diesen Einstellungen kann dann auch der Name geändert werden.
Zudem gibt es hier auch die Möglichkeit, sich benachrichtigen zu lassen, wenn sich jemand in den eigenen Account eingeloggt hat. Wer seine Seite mehrmals täglich besucht, wird die entsprechenden Emails vermutlich eher nervig als hilfreich finden. Für Leute, die Ihre Seite aber nur selten administrieren, kann diese Funktion sinnvoll sein, um eventuell unerwünschte Aktivitäten frühzeitig zu erkennen.
localconf.php absichern
In der Local Configuration Datei ist die globale Konfiguration einer jeden Typo3 Seite gespeichert. Nach der Installation sieht das in etwas so aus:
Der Screenshot stammt übrigens aus der offiziellen Typo3 Dokumentation, sodass keine Gefahr für eine reale Seite besteht. Denn eines wird hier sofort deutlich: Diese Datei ist für Angreifer höchst interessant. Unter anderem sind hier Passwörter und die Konfiguration von Sicherheitsmaßnahmen zu finden, sodass schon das Einsehen der Datei einem Angreifer viele wichtige Informationen für weitere Angriffe liefern kann.
Kann er darüber hinaus auch noch schreibend auf die Datei zugreifen, also Änderungen vornehmen, die von der Seite auch gespeichert werden, kommt das einer Komplettübernahme der Seite gleich. In diesem Fall wäre es dem Angreifer etwa möglich, eigene Administrator Accounts anzulegen.
Die Datei ist unter der Adresse typo3conf/LocalConfiguration.php zu finden und muss besonders geschützt werden, um Angriffe auf die Seite zu erschweren.
Eine Möglichkeit, dies zu erreichen ist es, alle sicherheitsrelevanten Einträge des Local Configuration Files in eine andere Datei auszulagern, die außerhalb des Rootverzeichnisses liegt. Diese Datei kann dann mittels des folgenden Codeblocks wieder in Local Conf inkludiert werden:
<?php
require(‚<Verzeichnis_ausserhalb_Root>/localconf.php‘);
?>
Auf diese Weise kann ein möglicher Angreifer den eigentlichen Inhalt nicht sehen, die entsprechenden Variablen können allerdings dennoch von Typo3 zur Konfiguration der Seite verwendet werden.
Security Extensions verwenden
Wie bei Content Management Systemen üblich, kann auch bei Typo3 der Funktionsumfang der Kernsoftware durch externe Erweiterungen vergrößert werden. Bei Typo3 werden diese Erweiterungen Extensions genannt und können unter https://extensions.typo3.org/ eingesehen werden:
Zwar können Extensions grundsätzlich auch negative Auswirkungen auf eine Seite haben, nämlich dann wenn diese zusätzliche Sicherheitslücken aufweisen, die in der Kernsoftware nicht vorkommen, allerdings bieten Extensions auch die Möglichkeit, die Sicherheit der Seite zu verbessern. Und zwar dann, wenn man Extensions mit einem Fokus auf Sicherheit installiert. Eine kleine Auswahl solcher Security Extensions wollen wir an dieser Stelle vorstellen, natürlich ohne Anspruch auf Vollständigkeit:
- FAL Protect
- T3Monitor
- m:e Backend Security
- Brute Force Protection
- Secure Downloads
- Easy Captcha
Wenn man im Marktplatz nach dem Tag #security sucht, findet man darüber hinaus auch noch einige weitere Extensions, die dazu verwendet werden können, die Sicherheit der Seite zu erhöhen.
Extensions prüfen
Grundsätzlich kann jeder eigene Extensions für Typo3 entwickeln. Das führt einerseits zu einer großen Bandbreite an Extensions, die das Erstellen sehr vielfältiger Webseiten ermöglichen. Andererseits führt es aber auch zu recht unterschiedlichen Code Qualitäten.
Manche Extensions werden von Firmen mit mehreren Softwareentwicklern in Vollzeit entwickelt, während andere eher aus Freizeitprojekten entstehen und das Erscheinen neuer Updates stark davon abhängt, wie viel Zeit der jeweilige Entwickler im Moment aufbringen kann. Aufgrund dessen kann die Qualität von Extensions auch recht unterschiedlich ausfallen. Es sei an dieser Stelle auf zwei Punkte hingewiesen:
- Dieses Problem ist nicht Typo3 spezifisch, sondern betrifft grundsätzlich alle Content Management Systeme, deren Funktionsumfang durch Drittanbieteranwendungen erweitert werden kann (was auf praktisch alle populären CMS zutrifft).
- Schwachstellen in Erweiterungen sind in der Regel nicht auf die Böswilligkeit des Entwicklers zurückzuführen, sondern darauf, dass IT-Sicherheit in vielen Fällen kein Fokus der Extension ist und das Thema somit eher stiefmütterlich behandelt wird.
Als Webseitenbetreiber sollte man dennoch versuchen sicherzustellen, dass die auf der eigenen Seite verwendeten Extensions einem gewissen Mindeststandard genügen. Dafür bietet Typo3 verschiedene interessante Funktionen:
Zum einen wird für Extensions angezeigt, in welchem Status sich die Entwicklung befindet (alpha, beta, stable). Im obigen Screenshot sind zwei Extensions zu sehen: Die eine befindet sich im beta Modus, die andere ist stable.
Alpha und Beta Phasen stellen dabei Testphasen dar, zu diesem Zeitpunkt ist die Entwicklung also noch nicht vollständig abgeschlossen, die Anwendung kann aber schon von ersten Usern getestet werden, deren Feedback dann für eine Verbesserung der Anwendung genutzt werden kann. Anwendungen im Status stable sind dagegen grundsätzlich fertig entwickelt, hier können allerdings auch von Zeit zu Zeit Updates zu Fehlerbehebung oder zur Integration neuer Funktionen fällig werden.
Grundsätzlich sollte man, gerade bei Security Extensions, eher auf Anwendungen vertrauen, die bereits fertig entwickelt sind, sich also im Status stable befinden.
Klickt man eine Extension an, hat man zudem über den Menüpunkt „Code Insights“ den dazugehörigen Code auf GitHub einzusehen:
Dadurch kann also grundsätzlich jeder überprüfen, wie es um die Codequalität und eventuelle Sicherheitslücken einer Extension bestellt ist. Wer nicht selbst programmieren kann, hat zumindest die Möglichkeit, einen befreundeten Entwickler über den Code schauen zu lassen oder sich darauf zu verlassen, dass eventuelle Schwachstellen zumindest von anderen Mitgliedern der Community gefunden werden.
Zusätzlich kann man auf der Detailseite einer Extension auch das Datum ihres letzten Updates einsehen. Wie üblich sollte man hier auf eine Installation verzichten, wenn das letzte Update bereits ein paar Jahre in der Vergangenheit liegt.
Sessions mit IPs verbinden
Manche Angriffe entstehen aus einer Kombination verschiedener Schwachstellen. Wenn die Anwendung beispielsweise eine Cross Site Scripting (XSS) Schwachstelle aufweist, durch die das Ausführen von Code im Browser eines Users möglich wird, und gleichzeitig die Cookies kein HTTPonly Flag gesetzt haben, dann können die Cookie Werte von einem Angreifer ausgelesen werden. Der Angreifer kann also den Wert eines Cookies auslesen, an sich selbst schicken und sich dann mittels diesen Cookies gegenüber der Anwendung ausweisen und damit die Session des validen Users übernehmen.
Welche Auswirkungen das hat, hängt dann nur noch von den Rechten des ursprünglichen Users ab: Ist dieser Administrator, so hat der Angreifer die Kontrolle über die komplette Seite erlangt. Typo3 bietet allerdings eine Möglichkeit, solche Angriffe zu erschweren: Nämlich dadurch, dass Sessions mit IP-Adressen verbunden werden. Wenn der Angreifer dann eine Session übernimmt, aber nicht über die dazugehörige IP-Adresse auf die Seite zugreift, kann ihm der Zutritt dennoch verweigert werden.
Über TsConfig kann einem User im Typo3 Backend eine bestimmte IP-Adresse zugeordnet werden. TsConfig stellt dabei eine Möglichkeit dar, innerhalb des Backends Konfigurationen vorzunehmen, die über die Standardmenüpunkte hinausgehen.
Um eine IP-Adresse festzulegen, wählt man einen bestimmten User aus und gibt im TsConfig Teil der Detailseite des Users folgendes ein:
options.lockToIP = [IP-Adresse]
Statt [IP-Adresse] muss natürlich die IP-Adresse eingegeben werden, die mit dem User in Verbindung stehen soll.
Typo3 Security Reports nutzen
Es ist wichtig zu wissen, welche Angriffe eventuell auf die eigene Webseite durchgeführt werden, um entsprechend reagieren zu können. Wer beispielsweise bemerkt, dass jeden Tag mehrere tausend Login Versuche für den Administrator Account vorgenommen werden, der kann gegebenenfalls das Passwort des Accounts ändern, wenn dieses nicht stark genug ist und in absehbarer Zeit von einem Angreifer erraten werden kann.
Um solche und ähnliche Probleme frühzeitig zu erkennen, bietet Typo3 zwei verschiedene Funktionalitäten an: Reports und Logs. Beide können über die Adminoberfläche eingesehen werden.
Unter dem Punkt Reports sind generelle Informationen zum Sicherheitsstatus der Webseite und des Admin Accounts einsehbar. Die entsprechenden Reports sollten regelmäßig überprüft werden, um mögliche Sicherheitslücken zu entdecken.
Unter dem Punkt Logs sind Logdateien der Anwendung zu finden. Als User kann man hier auch Einfluss nehmen, welche Ereignisse genau geloggt werden. Beispiele sind etwa fehlerhafte Login Versuche in den Admin Account, erfolgreiche Logins zur Adminoberfläche etc. Diese Logs sollten regelmäßig gesichtet werden, um auf diese Weise laufende Angriffe festzustellen, die andernfalls vielleicht nicht bemerkt werden würden.
Bei kleineren Webseiten mit wenig Aktivität kann man die Log Files in der Regel einfach manuell auf Auffälligkeiten durchsuchen. Bei Seiten auf denen viel passiert (mehrere Mitarbeiter, die sich regelmäßig in das Backend einloggen, User die sich registrieren und einloggen etc.) sollte man gegebenenfalls auf eine automatisierte Lösung zur Log File Analyse wie etwa SpectX zurückgreifen.
Informiert bleiben
Sicherheit ist ein kontinuierlicher Prozess. Es ist also nicht damit getan, ein paar Einstellungen an der Webseite vorzunehmen und sich dann zurückzulehnen, sondern man muss regelmäßig daran arbeiten, die Seite sicher zu halten.
Wichtigster Punkt dabei ist sicherlich das regelmäßige Updaten der Typo3 Software und deren Extensions. Wer die Kernsoftware und ihre Erweiterungen stets aktuell hält, der ist von vielen Schwachstellen schon mal nicht betroffen.
Zudem sollte man einen Überblick über neu entdeckte Schwachstellen und deren mögliche Auswirkungen, sowie dazugehörige Lösungen behalten. Dazu bietet sich die Seite https://typo3.org/help/security-advisories an:
Auf dieser Seite werden regelmäßig Sicherheitslücken veröffentlicht, die dem Typo3 Entwicklerteam gemeldet wurden. Wer diese Meldungen lieber per E-Mail erhalten möchte, kann sich auf der Security Advisories Mailing List eintragen.
Die Detailansicht einer solchen Meldung ist im nachfolgenden Screenshot zu sehen:
Wie zu sehen, wird das Problem beschrieben, die betroffenen Versionen von Typo3 werden aufgeführt und eine Einschätzung der Kritikalität (in diesem Fall Medium) wird vergeben. Außerdem wird auch eine Lösung vorgeschlagen: In diesem Fall ein Update.
Wer sich ein wenig auf der Seite umschaut, wird schnell feststellen, dass mit einem Update auf die jeweils aktuelle Typo3 Version eigentlich alle Schwachstellen behoben werden können. Umgekehrt bedeutet das auch: Wer seine Typo3 Version immer aktuell hält, muss sich keine großen Sorgen machen. Dennoch ist es eine gute Angewohnheit, sich hin und wieder (etwa ein Mal pro Woche) die Liste der entdeckten Schwachstellen anzusehen.
Fazit
Wir hoffen, dass wir Sie mit diesem Basis Sicherheit Guide bei der Absicherung Ihrer Typo3 Installation unterstützen konnten. Sollten Sie an einer eingehenden Analyse des Sicherheitsstatus Ihrer Webseite interessiert sein, dann sprechen Sie uns doch gerne wegen einem Penetrationtest an.
Übrigens können Sie eine Kurzfassung dieses Guides auch als praktische Checkliste herunterladen, um die einzelnen Punkte dann nacheinander bequem abhaken zu können.