Zabbix web scenario für CMS Joomla!

Zabbix web scenario für CMS Joomla!

getestet mit CMS Joomla! Version 3 and Zabbix Version > 5.2

Um das Backend von Joomla! regelmäßig und automatisiert mit zabbix zu monitoren, soll das folgende HowTo die Funktion der web scenarien anhand von einem Login in das Joomla-Backend mittels zabbix erklären. Die beschriebene funktionsweise kann auch auf andere Websiten mit einem Login verwendet werden, wo Session Tokens verwendet werden.

Die Dokumenation von Zabbix liefert gute Beschreibungen zu den einzelnen Punkten und weitere Beispiele.

Nutzen Sie unbedingt für das Monitoring einen eigenen Backend Joomla-User, mit einem komplexen Passwort. Das Passwort bitte in zabbix mittels der „secret text Funktion“ verschlüsselt ablegen.

In Zabbix werden drei Makros auf Host-Ebene benötigt.

  • {$JOOMLA_BACKEND} -> https://www.**WEBSITE-URL**/administrator
  • {$JOOMLA_USERNAME} -> **JOOMLA-BACKEND-USER**
  • {$JOOMLA_PASSWORD} -> **PASSWORD FOR BACKEND**

Erstellen Sie als nächstes ein Template für die Administrator-Anmeldeprüfung und verlinken dieses mit dem Host. Im foglenden werden nun die notwendigen Web Szenarien auf dem Template angelegt.

  1. Schritt: Administrator Login Formular
    Für den Login bei Joomla werden im Hintergrund CSRF token generiert, die für jede Session neu erstellt werden. Diese benötigen wir für den Login-Prozess, ohne wird der Prozess ansonsten abgelehnt. Im ersten Schritt wird der CSRF Token für unsere Session ausgelesen und in einer Variablen gespeichert. Joomla verwendet zusätzlich noch einen zweiten Token, den wir ebenfalls auslesen.
    {csrf.token} = regex:csrf.token…([0-9a-z]{32})"
    {return} = regex:return..value="(.*)"

  2. Schritt: Administrator Log in
    Im Login werden die Macros des Hosts sowie die Tokens in einen Post-Request an Joomla! geschickt.

    Um zu prüfen, ob das Backend von Joomla! erfolgreich mit unserer Anmeldung erreicht wurde, suchen wir nach einem Wort im HTML-Body, welcher nur im Admin-Menü sichtbar wird. Da ich die englische Version nutze, suche ich nach dem Begriff „Control Panel“. Mit der deutschen ÜBersetzung kann auch „Kontrollzentrum“ als required string verwendet werden.
  3. Schritt: Adminsitrator Logout
    Um die Session sauber zu beenden benötigen wir den Logout-Token der nicht dem CSRF-Token unserer Session gleicht. Diesen lesen wir in dem Schritt aus.
    {logout.token} = regex:task=logout&([0-9a-z]{32})
  4. Schritt: Adminstrator Logout check
    Zum Schluss wird der Logout mittels Post-Request abgeschickt und zum Schluss geprüft ob der required string, welcher nur auf dem Login-Promt vorkommt, wieder vorhanden ist. Ich habe hier „loginform“ genommen.

Bitte bei allen Schritten die Funktion „follow redirects“ aktivieren!

Um zu überprüfen ob der Login funktionert hat, bitte im Joomla für den Admin-User die Anmeldezeit kontrollieren. Zusätzlich darf nach dem Logout in der Datenbank Table „Session“ kein Eintrag für den User mehr vorhanden sein.


Tempalte Downloads:


Tipp:

Um ein Website-Monitoring zu vervollständigen empfehlen wir noch weitere Checks bzw. Items:

  • Web Szenario um Website zu prüfen (Code 200 / required string)
  • DNS-Check (z.B. net.dns.record[8.8.8.8,{HOST.NAME},A])
  • TLS/SSL certificate validity – Laufzeitprüfung des Web-Zertifikats
Simon Wetzstein

Simon Wetzstein ist System Engineer bei Convx. Er arbeitet seit über 15 Jahren in der Contactcenter & Monitoring-Branche. Als Analyst, Architekt und Speaker setzt er sich mit den Möglichkeiten und verschiedenen Technologien in der Digitalen Transformation auseinander.