Zum Hauptinhalt springen Skip to page footer

Die Menge an Schadcode hat die Menge an Nutzcode schon vor langer Zeit überschritten. Und auch Linux und PHP basierte Anwendungen geraten immer mehr ins Visier der Hacker. In diesem Beitrag - der laufend ergänzt wird - fasse ich alle Maßnahmen zusammen um TYPO3 und Linux zu härten.

Basics

Basis meines Systems ist ein UBUNTU 18.04 LTS. Mein Provider übernimmt die Grundhärtung des Systems, so laufen regelmäßig

sudo apt-get update && upgrade

um das System auf dem neuesten Stand zu halten. Auch TYPO3 bringt von Haus aus einige Maßnahmen mit, um möglichst wenig Angriffsfläche zu bieten. So sorgt die .htaccess Datei im Wurzelverzeichnis des Webservers dafür, welche Art von Dateien im Kontext der Installation erlaubt sind und welche nicht, und regelt Zugriffe auch über Domänen hinweg. Auch die Verwendungsmöglichkeit von selbstsprechenden URLs wird hier gesteuert.

Security Informationen

Wer über das Thema Sicherheit rund um TYPO3 auf dem Laufenden sein möchte, dem empfehle ich einen regelmäßigen Blick in die Security Advisories. Die Hintergründe zu verschiedenen Angriffsszenarien und wie man sich dagegen aus Sicht TYPO3 unterstützt finden sich gut erklärt in den Security Guidelines. Dies fängt bei einer Verwendung eines SSL-Zertifikates für den Server an - dank Let's Encrypt heutzutage keine wirkliche Hürde mehr, auch mein Server wird mit solchen Zertifikaten geschützt - und eines ausreichend starken Passworts für alle Admins und Nutzer des Systems. Und reicht bis zu den ernst gemeinten Hinweisen sowohl TYPO3 als auch alle Extensions stehts auf dem aktuellen Stand zu halten. Nach einem erfolgreichen Updates des Core Systems bitte auch nicht vergessen die Vorgängerversion auf dem Server zu löschen. Sonst liegt hier ungepatchter Code der wiederum eine mögliche Angriffsfläche bietet.

Update der Core Version und von Extensions

TYPO3 bietet nach dem Einloggen die sogenannten Anwendungsinformationen in einem kurzen Systemüberblick an. Dazu in der Toolbar oben rechts auf das Symbol zwischem der Hilfe und Eurem Avatar klicken. Steht ganz unten "Ihre TYPO3-Version ist aktuell." ist die Core Version auf dem neuesten Stand. Weitergehende Informationen lassen sich jedoch über den Punkt "Aktualisierung" in der linken Toolbar aufrufen. "Update TYPO3 Core" prüft, ob eine neue Version vorliegt und hilft - unter gewissen Voraussetzungen - bei der Aktualisierung. Der "Upgrade Wizard" hilft nach erfolgreicher Installation der neuen Version das System zu prüfen und ggfs. letzte Anpassungen durchzuführen.

Um die Verfügbarkeit von Updates für Extensions unter TYPO3 9.5.x zu prüfen einfach wie folgt vorgehen:
Im linken Seitenmenü "Erweiterungen" auswählen. Oben in der Toolleiste auf "Erweiterungen hinzufügen" klicken. Oben rechts den Button "Jetzt aktualisieren" anklicken und die erfolgreiche Übertragung aus dem TYPO3 Repository abwarten. In der Toolleiste auf "Installierte Erweiterungen" wechseln und einmal ganz ans Ende der Liste der installierten Erweiterungen scrollen. Findet sich ein Symbol mit Doppelpfeil neben einer der Extensions, steht ein Update bereit. Ein Klick darauf zeigt einen kurzen Erläuterungstext oder Hinweis auf weitere Informationen an. Diesen bitte unbedingt Folge leisten, bevor die eigentliche Aktualisierung gestartet wird. Sonst kann es sein, dass das System in einem unbrauchbaren Zustand hinterlassen wird.

Bei dieser Gelegenheit bitte auch alle Extensions auf Ihren Wartungszustand prüfen. Dieser ist in der Spalte "Status" vermerkt. Steht dort z.B. "deprecated" wird die Extension nicht mehr gepflegt oder von der installierten Hauptversion von TYPO3 nicht unterstützt. Es empfiehlt sich diese schleunigst zu deinstallieren und für Ersatz zu sorgen, da der Code nicht mehr gewartet wird. Und da kein Code perfekt ist, tauchen früher oder später Schwachstellen auf und das System ist kompromittierbar.

Linux/Apache2 Härtung

Ubuntu 18.04 mit einem aktuellen Apache bringt eine ordentliche Default Konfiguration mit, auch in Sachen Sicherheit. Die Mächtigkeit und Flexibilität von Linux zeichnet sich aber gerade durch die vielen individuellen Konfigurationsmöglichkeiten aus. Ein "One size fits all" gibt es daher nicht und ist auch nicht erwünscht. Wer nicht ein vorkonfiguriertes und gewartetes Webhostingprodukt einsetzt, muss daher ein wenig selbst Hand anlegen.

Ein sinnvolles und wichtiges Tool ist Observatory von der Mozilla Foundation. Aufrufen, eigene Domain eingeben, evtl. noch per Checkbox auswählen, dass das Ergebnis nicht veröffentlicht werden soll und den Scan starten.

Als erstes merkt das Mozilla Tool an, dass "Header set X-Frame-Options" falsch konfiguriert ist.

Nun gibt es zwei Wege dies zu korrigieren. Erstens via Apache Konfiguration und damit global für das ganze System, zweitens via Einträgen im Typo3 Template Setup, dann allerdings nur lokal für die TYPO3 Instanz. Bei ersterem reicht es in der Datei

/etc/apache2/conf-available/security.conf

die Kommentierung in der Zeile

Header set X-Frame-Options: "sameorigin"

zu entfernen und via z.B. PuTTY mit "sudo service apache2 restart" den Apache neu zu starten. Ein Klick auf "Initiate Rescan" im Mozilla Tool zeigt, dass die Härtung greift und belohnt die Änderung mit einer besseren Bewertung.

Als nächstes merkt das Tool an, dass eine Content Security Policy fehlt. Dies zahlt ebenfalls gegen die sogenannten Cross-Site-Scripting Angriffe ein, indem festgelegt wird, woher welche Ressourcen wie Bilder und Medien geladen und angezeigt werden dürfen. Dazu in der gleichen Datei wie oben

Header set Content-Security-Policy: "default-src 'none'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; img-src 'self'; font-src 'self'; frame-src 'none'; frame-ancestors 'self';"

eingeben. Erprobt ist diese Zeile mit TYPO3 9.5.4 und dem offiziellen TYPO3 Introduction Package. Mit "sudo service apache2 restart" startet der Server neu und man kann sich mit einem "Initiate Rescan" vom Tool mit einer besseren Bewertung belohnen lassen. Allerdings bin ich auch nach langem Herumprobieren und Recherche mit dem "unsafe-inline" bei script-src und style-src sehr unzufrieden. Dies führt maximal zu einem B+ bei Mozilla und lässt Angriffsflächen offen. Ohne jedoch funktioniert die Seite nicht, da das TYPO3 Package offensichtlich inline-Notation bei z.B. dem Karussell nutzt.

Moderne Browser blocken zwar Cross Site Scripting Versuche ab, man kann diese jedoch vollständig blockieren, indem man in oben genannter Datei

Header set X-Xss-Protection: "1; mode=block"
Header set Referrer-Policy: "strict-origin"

ergänzt. Ein letztes Mal "sudo service apache2 restart" auf der Konsole eingeben und das System sollte gut bewertet sein.

Wenn die lokale Variante für die TYPO3 Instanz ausreicht, genügt es im TYPO3 Template im Feld Setup an erster Stelle die folgenden Zeilen zu ergänzen

config.additionalHeaders {
  10.header = Content-Security-Policy:
default-src 'none'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; img-src 'self'; font-src 'self'; frame-src 'none'; frame-ancestors 'self';
  10.header = X-Frame-Options:SAMEORIGIN
  20.header = X-Xss-Protection: 1; mode=block
  30.header = X-Content-Type-Options: nosniff
  40.header = Referrer-Policy:strict-origin
}

Abspeichern nicht vergessen und das Mozilla Tool ist fast zufrieden, denn auch hier gilt wieder die gleiche unzufriedenstellende Situation beim "unsafe-inline".