Sobald man mehr als ein Dutzend TYPO3 Webseiten betreibt, wird man recht schnell den Wunsch verspüren, diese zentral überwachen zu können. Hier kommt die TYPO3 Extension Caretaker ins Spiel, die von einem zentralen Server aus beliebig viele TYPO3 Instanzen überwachen kann. Dabei wird nicht nur die Erreichbarkeit der Webseite geprüft, sondern auch die Sicherheit der verwendeten TYPO3 Version und Extensions.
Wenn eine neue TYPO3 Webseite fertig und live ist, würde man sich gerne entspannt zurücklehnen und die Webseite einfach mal laufen lassen. Aber so eine TYPO3 Installation ist ein komplexes Gebilde aus der verwendeten TYPO3 Version, Extensions aus dem TYPO3 Extension Repository und den eigenen Einstellungen. Deswegen ist es gar nicht so einfach, den Gesundheitszustand einer TYPO3 Instanz zu überwachen. Mit einer Überwachungssoftware wie Nagios kann man hauptsächlich den Zustand des Servers und der Hardware überwachen. Aber für die Innereien einer TYPO3 Instanz gibt es bislang noch keine anständige Lösung. Zwei Firmen aus Kiel und Hamburg haben sich zusammen getan und eine flexible und leistungsfähige Lösung geschaffen, die diese Anforderungen erfüllen soll:
- zentrales Testen und Überwachen von entfernten TYPO3 Instanzen, Extensions und Setups
- Integration Tests (auf der Basis von Selenium)
- Flexible und komfortable Verwaltung über TYPO3 Datensätze
- Erweiterbarkeit des gesamten Systems
Caretaker
Herausgekommen ist der Caretaker, eine TYPO3 basierte Lösung. Hier eine kleine Auswahl der Features und Möglichkeiten:
- Prüfen der Erreichbarkeit (HTTP Status Code / Ping)
- TYPO3 Core Version prüfen
- unsichere Extensions finden
- gezielte Prüfung einer Extension auf Versionsnummer
- Blacklist für Benutzernamen und Passwörter
- TYPO3 Core auf nicht autorisierte Änderungen am Code prüfen
- (Nicht-)Existenz von Dateien prüfen, z.B. ENABLE_INSTALL_TOOL
- TYPO3_CONF_VARS prüfen, z.B. auf Default Install Tool Passwort
- verfügbare Extension Updates anzeigen
- Benachrichtigungssytem
- Integration von eigenen Test Services
Wie funktioniert der Caretaker?
Das Caretaker Basis System wird zum einen auf einem zentralen Server als TYPO3 Extension installiert. Dazu kommt dann die Erweiterung caretaker_instance, die die eigentlichen Tests enthält. caretaker_instance kommuniziert über eine mit RSA verschlüsselte Verbindung mit den einzelnen TYPO3 Instanzen. Zusätzlich gibt es noch die Möglichkeit, per SNMP mit Instanzen zu kommunizieren.
Der Caretaker Server kann dabei lediglich lesend auf die einzelnen TYPO3 Instanzen zugreifen. Updates können über Caretaker nicht automatisiert eingespielt werden, da die Gefahr zu groß ist, eine TYPO3 Instanz dadurch funktionsunfähig zu machen.
Die Informationen über die neuesten Änderungen bei TYPO3 Extensions bezieht Caretaker über einen Scheduler Task, der regelmäßig die Liste der Extensions aus dem TER bezieht. Dieser Scheduler Task ist seit TYPO3 4.5 Bestandteil von TYPO3. Die jeweils neuesten TYPO3 Versionsnummern werden aus einem RSS Feed von Sourceforge ermittelt. Änderungen am TYPO3 Core werden durch Fingerprints erkannt. Die Extension caretaker_integrity liefert einige Fingerprints bereits mit. Für neue TYPO3 Versionen können die Fingerprints über einen Cronjob in caretaker_integrity generiert werden.
Caretaker Backend
Im TYPO3 Backend gibt es nach der Installation von Caretaker ein neues Modul, in dem die einzelnen Instanzen gepflegt werden können. Um die Übersichtlichkeit zu erhöhen, können TYPO3 Instanzen in Instanzgruppen zusammengefasst werden. Außerdem wird durch Farben (rot, gelb, grün) der Zustand der einzelnen Instanzen bzw. Tests angezeigt. Im TYPO3 Backend werden zudem die Tests und Testgruppen gepflegt und individuelle Einstellungen gemacht.
Die wichtigsten Tests im Überblick
Ein paar der Tests, die ich in meiner Caretaker Installation eingerichtet habe, möchte ich im Folgenden kurz vorstellen:
- unsichere Extensions
Das TYPO3 Security Team markiert unsichere Extensions in der Extension Liste. Sobald der Caretaker feststellt, dass eine bestimmte Version einer Extension als unsicher markiert ist, wird Alarm geschlagen - unsichere TYPO3 Version
In der Testkonfiguration kann festgelegt werden, welche Versionsnummer mindestens erfüllt sein muss. So kann schnell festgestellt werden, ob unsichere TYPO3 Versionen verwendet werden - Source Integrity
Über die eingangs bereits erwähnten Fingerprints werden die Dateien des Core mit den Fingerprints verglichen. Dadurch können unerwünschte Änderungen an Core Dateien sofort erkannt werden - Datei „ENABLE_INSTALL_TOOL“ vorhanden
Hier wird geprüft, ob die Datei in typo3conf vorhanden ist und jünger als 2 Stunden ist
- Standard Install Tool Password „joh316“ ist aktiv
TYPO3 weist zwar darauf hin, wenn das Standard Password noch aktiv ist, aber ich lasse das zusätzlich durch den Caretaker prüfen - Prüfung der BE User Accounts auf verbotene Passwörter
Prüft alle Backend Accounts auf verbotene Passwörter wie „password“, „12345678“, etc.
- Deprecation Log aktiv
Prüft, ob das Deprecation Log noch aktiv ist
- Extension Updates verfügbar
Dieser Test zeigt alle verfügbaren Extension Updates an
- HTTP / Ping Test
Prüft die Erreichbarkeit der Webseite per Ping und wertet zusätzlich noch den Status Code einer Anfrage per HTTP aus
Weitere Test Services:
- Logfile Analyzer Service
- Redmine Testcase
- Selenium Testcase
Caretaker Frontend
Zusätzlich zum Backend bietet Caretaker auch eine Frontend Ausgabe der Test Ergebnisse. Diese Ausgabe kann zum Beispiel Kunden zugänglich gemacht werden.
Benachrichtigungen
Caretaker liefer ein simples und ein erweitertes Benachrichtigungssystem per Mail gleich mit. Für das erweiterte Benachrichtigungssystem ist aber leider noch keine Dokumentation verfügbar. Tobias Liebig, einer der Caretaker Entwickler, hat aber bereits einen Blog Eintrag mit einer Anleitung angekündigt!
Systemvoraussetzungen für den Einsatz von Caretaker
Die TYPO3 Instanz mit dem Caretaker Server benötigt PHP 5.2 mit OpenSSL Unterstützung und TYPO3 4.3 oder höher.
Für die Instanzen reicht TYPO3 4.o oder höher, allerdings wird auch hier PHP 5.2 benötigt.
Download
Caretaker ist zwar grundsätzlich auch im TER verfügbar, allerdings ist die veröffentlichte Version mehr als ein Jahr alt und hat sich seit dem schon wieder stark weiter entwickelt.
Es empfiehlt sich deshalb, den aktuellen Stand aus dem Subversion Repository auszuchecken.
Links zum Thema
- Extensions im TER:
- typo3.org/extensions/repository/view/caretaker/current/
- typo3.org/extensions/repository/view/caretaker_instance/current/
- Forge:
- forge.typo3.org/projects/extension-caretaker
- SVN: https://svn.typo3.org/TYPO3v4/Extensions/caretaker
- Dokumentation: forge.typo3.org/projects/extension-caretaker/wiki
- Webseite:
- Mailingliste:
- Twitter:
Support
Unterstützung durch die Entwickler und andere User bekommt man über die oben genannte Mailingliste.
Caretaker Entwicklung unterstützen
Die an Caretaker beteiligten Entwickler und Firmen haben eine Menge Zeit und Geld in das Projekt investiert. Für weitere Features werden noch Spenden gesucht, um die Entwicklung zu finanzieren.
Auf meiner persönlichen Wunschliste steht vor allem die Möglichkeit, im Caretaker Backend Abfragen dieser Art zu starten: Filter alle Instanzen raus, die die Extension XYZ in Version 1.2.3 nutzen. Abfragen dieser Art sind bislang leider nicht möglich und das ist meiner Meinung nach das größte Manko von Caretaker, denn wenn z.B. das Security Team ein Security Bulletin raus gibt, muss ich alle Instanzen (und ich verwalte mit Caretaker mittlerweile verdammt viele) von Hand kontrollieren.
Außerdem würde ich mir häufigere TER Releases wünschen, denn das würde sicher zur vermehrten Nutzung von Caretaker beitragen. Die aktuell im TER verfügbare Version ist soweit ich das in Erinnerung habe, nur bis TYPO3 4.4 kompatibel. Öftere Updates wären auch für die Extension caretaker_integrity mit den Fingerprints nötig. Der mitgelieferte Cronjob läuft zumindest bei mir noch nicht so ganz rund und es ist bei jedem TYPO3 Release Handarbeit angesagt, um die neuen Fingerprints zu erzeugen. Auch fehlen Fingerprints von vielen älteren TYPO3 Versionen, die mit dem aktuellen Cronjob leider nicht erzeugt werden können.
Fazit
Caretaker ist ein super System, um viele TYPO3 Instanzen zu überwachen. Zum aktuellen Zeitpunkt muss man beim Einsatz von Caretaker aber noch an diversen Stellen selber Hand anlegen und sich zum Beispiel die richtige Dokumentation zusammen suchen.
Gegenüber anderen auf TYPO3 spezialisieren Monitoring Systemen wie zum Beispiel t3manager, hat Caretaker aber den entscheidenden Vorteil, dass man das System auf einer eigenen Maschine installieren kann und die Daten über seine TYPO3 Instanzen nicht in fremde Hände geben muss. Außerdem kann Caretaker flexibel an eigene Wünsche angepast werden.
Bei genügend Interesse schreibe ich demächst einen weiteren Artikel, die die Installation und Einrichtung von Caretaker genauer beschreibt. Bitte das Interesse in den Kommentaren bekunden.
Mich würde jetzt noch interessieren, wer den Caretaker bereits einsetzt und welche Erfahrungen gemacht wurden.