Der Baustein überprüft eine Anzahl von Diensten auf Response Zeit und Rückgabewert
Zertifikat werden auf ihre Restgültigkeit überprüft.
2020-01-28_18h20_18.png
Mindestzykluszeit an Eingang 1 ist 5 Sekunden, es werden bis zu 12 Serviceworker gestartet die im Hintergrund die Abfragen, entkoppelt von der Homeserver Logik, auswerten.
Limit ist derzeit auf 100 Bausteine gesetzt.
Bausteine werden im Fehlerfall deaktiviert (also bei Python Exceptions nicht bei negativen Tests)
Unterstüzte URLs an Eingang 2
* HTTP und HTTPS Webseitenabfragen
http://host_oder_ip/pfad
http://host_oder_ip:8080/pfad?query=abc
https://host/
Bei HTTP Anfragen kann über die Eingänge 5 und 6 Benutzer und Passwort im Basic Auth gesendet werden
Wenn bei HTTP an Eingang 4 Daten anliegen werden diese als POST gesendet
die Daten können als String oder aber als JSON Dict übergeben werden
* DNS Abfragen
dns://dns_server/google.com
dns://ipdesdns/PTR/8.8.8.8
dns://ipdesdns/AAAA/www.google.de
weiter Querytypen sind SRV/NS/CNAME/MX/SOA/TXT
* NTP Abfragen
ntp://servername
* SSH Secure Shell
ssh://servername
* RDP Remote Desktop Protokoll
rdp://servername
* ESX / vSphere (derzeit begrenzt auf 20 VMs)
esx://servername
* NRPE Nagios (https://www.thomas-krenn.com/de/wiki...ieren_und_konf igurieren * WICHTIG dhparams MUSS mind. 2048b sein)
nrpe://servername/[proto]/command
mit tcp://ip: port oder udp://ip: port können auch Abfragen an beliebige Dienste gemacht werden
Erfolgsprüfung
Es sind bereits Standardüberprüfungen für manche Protokolle enthalten
So wird z.B. bei HTTP Abfragen eine HTTP Status 200 erwartet
bei DNS Abfragen Return Code 0
Bei NTP wird erwartet das die gesendete Zeit mit dem Empfangenen TX_TIMESTAMP des NTP Packets übereinstimmt (nicht etwa die Zeit)
Bei allen Tests wird außerdem die Antwortzeit als Voraussetzung für Erfolg erwartet, bei einem Timeout wird -1 zurück gegeben
Sollte ein Zertifikat noch nicht gültig sein oder abgelaufen wird dies ebenfalls zu einem negativen Erfolg führen
Über die Eingänge 7 und 8 kann die Überprüfung aber auch verändert werden.
Um z.B. bei einem HTTPS Server den Zertifikats Fingerprint zu überprüfen
EN[7] "sha256hashdesZertikats"
EN[8] "{fingerprint}"
so wird die Erfolgsprüfung nur bei übereinstimmen erfolgreich
weitere Beispiele sind
HTTP "{status}" "401" um zu überprüfen ob eine Benutzerüberprüfung aktiv ist
DNS "{result}" "dns.google" bei Überprüfung von 8.8.8.8 um die Auflösung zu einem bestimmten Namen vorauszusetzen
Das Format für das Template ist das normale Python String Format - so können auch z.B. nur Teile der Antwort überprüft werden
"{result:5.5}" nur die ersten 5 Zeichen
* calc() Funktion - mit der Funktion calc(Zahl Operator Zahl) kann das Ergebnis berechnet werden. Folgende Operatoren sind verfügbar
+ Addition, - Subtraktion, * Multiplikation, / Division, % Modulus, > größer, >= größer gleich, = gleich, != ungleich, < kleiner, <= kleiner gleich
die Funktion kann auch verschachtelt werden - calc(calc(100/Wert)/Wert)
Variablen:
.....
Welche Variablen in den Templates genutzt werden können ist über den JSON Ausgang zu testen, dort werden alle relevanten Daten übergeben.
Über eine Spende über Paypal würde ich mich freuen
Zertifikat werden auf ihre Restgültigkeit überprüft.
2020-01-28_18h20_18.png
Mindestzykluszeit an Eingang 1 ist 5 Sekunden, es werden bis zu 12 Serviceworker gestartet die im Hintergrund die Abfragen, entkoppelt von der Homeserver Logik, auswerten.
Limit ist derzeit auf 100 Bausteine gesetzt.
Bausteine werden im Fehlerfall deaktiviert (also bei Python Exceptions nicht bei negativen Tests)
Unterstüzte URLs an Eingang 2
* HTTP und HTTPS Webseitenabfragen
http://host_oder_ip/pfad
http://host_oder_ip:8080/pfad?query=abc
https://host/
Bei HTTP Anfragen kann über die Eingänge 5 und 6 Benutzer und Passwort im Basic Auth gesendet werden
Wenn bei HTTP an Eingang 4 Daten anliegen werden diese als POST gesendet
die Daten können als String oder aber als JSON Dict übergeben werden
* DNS Abfragen
dns://dns_server/google.com
dns://ipdesdns/PTR/8.8.8.8
dns://ipdesdns/AAAA/www.google.de
weiter Querytypen sind SRV/NS/CNAME/MX/SOA/TXT
* NTP Abfragen
ntp://servername
* SSH Secure Shell
ssh://servername
* RDP Remote Desktop Protokoll
rdp://servername
* ESX / vSphere (derzeit begrenzt auf 20 VMs)
esx://servername
* NRPE Nagios (https://www.thomas-krenn.com/de/wiki...ieren_und_konf igurieren * WICHTIG dhparams MUSS mind. 2048b sein)
nrpe://servername/[proto]/command
mit tcp://ip: port oder udp://ip: port können auch Abfragen an beliebige Dienste gemacht werden
Erfolgsprüfung
Es sind bereits Standardüberprüfungen für manche Protokolle enthalten
So wird z.B. bei HTTP Abfragen eine HTTP Status 200 erwartet
bei DNS Abfragen Return Code 0
Bei NTP wird erwartet das die gesendete Zeit mit dem Empfangenen TX_TIMESTAMP des NTP Packets übereinstimmt (nicht etwa die Zeit)
Bei allen Tests wird außerdem die Antwortzeit als Voraussetzung für Erfolg erwartet, bei einem Timeout wird -1 zurück gegeben
Sollte ein Zertifikat noch nicht gültig sein oder abgelaufen wird dies ebenfalls zu einem negativen Erfolg führen
Über die Eingänge 7 und 8 kann die Überprüfung aber auch verändert werden.
Um z.B. bei einem HTTPS Server den Zertifikats Fingerprint zu überprüfen
EN[7] "sha256hashdesZertikats"
EN[8] "{fingerprint}"
so wird die Erfolgsprüfung nur bei übereinstimmen erfolgreich
weitere Beispiele sind
HTTP "{status}" "401" um zu überprüfen ob eine Benutzerüberprüfung aktiv ist
DNS "{result}" "dns.google" bei Überprüfung von 8.8.8.8 um die Auflösung zu einem bestimmten Namen vorauszusetzen
Das Format für das Template ist das normale Python String Format - so können auch z.B. nur Teile der Antwort überprüft werden
"{result:5.5}" nur die ersten 5 Zeichen
* calc() Funktion - mit der Funktion calc(Zahl Operator Zahl) kann das Ergebnis berechnet werden. Folgende Operatoren sind verfügbar
+ Addition, - Subtraktion, * Multiplikation, / Division, % Modulus, > größer, >= größer gleich, = gleich, != ungleich, < kleiner, <= kleiner gleich
die Funktion kann auch verschachtelt werden - calc(calc(100/Wert)/Wert)
Variablen:
Code:
Verbindung: {responsetime} Zeit bis zur Verbindung {result} Zertifikate (alle Protokolle): {ssl_cipher_rating} Bewertung des Ciphers {ssl_cipher} verwendeter Cipher {certdata[validtodays]} Zeit in Tagen bis Zertifikat abläuft {certdata[validfromdays]} Zeit in Tagen seit Zertifikat gültig {certdata[subjectAltName][0]} SANs mit [1....2] usw {certdata[serialNumber]} Seriennummer {certdata[fingerprint]} SHA Fingerprint {certdata[subject]} / {certdata[issuer]} CN/DN DNS: {rcode} {auth} {recursion} {isopen} {records} {ttl} {rtype} {soa_master} {soa_mail} {soa_serial} {soa_refresh} {soa_retry} {soa_expire} {soa_min} {srv_prio} {srv_weight} {srv_port} HTTP: {status} {header} SSH: {sshversion} {sshproto} NTP: {version} {mode} {stratum} {poll} {precision} {rootdelay} {root_precision} {refid} {ref_ts} {orig_ts} {recv_ts} {tx_ts} {match} NRPE: {code} {result} ESX: {esx[fullName]} ESX Version {hoststatus[hardware.systemInfo.vendor]} {hoststatus[hardware.biosInfo.biosVersion]} {hoststatus[runtime.inMaintenanceMode]} {hoststatus[runtime.powerState]} {hoststatus[hardware.systemInfo.model]} {hoststatus[overallStatus]} {datastore[dsname][freepercent]} {datastore[dsname][summary.capacity]} {datastore[dsname][summary.freeSpace]} {datastore[dsname][summary.uncommitted]} {vmstatus[vmname][guest.ipAddress]} {vmstatus[vmname][guestHeartbeatStatus]} {vmstatus[vmname][guest.guestFullName]} {vmstatus[vmname][guest.hostName]} {vmstatus[vmname][runtime.powerState]} {vmstatus[vmname][guest.toolsVersionStatus"]} {vmstatus[vmname][summary.quickStats.guestMemoryUsage]}
Welche Variablen in den Templates genutzt werden können ist über den JSON Ausgang zu testen, dort werden alle relevanten Daten übergeben.
Über eine Spende über Paypal würde ich mich freuen
Kommentar