Aktionen

Exchange Build Nummer mit Zabbix abfragen

Aus znilwiki

Version vom 27. Februar 2020, 15:43 Uhr von BLinz (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Problemstellung

Im Zusammenhang mit einer Exchange Sicherheitslücke (CVE-2020-0688) kam die Frage auf wie wir schnell und dauerhaft einen Überblick über die Exchange-Versionen in den vielen überwachten Umgebungen erhalten können.

Die Exchange-Profis gaben wir folgenden PowerShell-Befehl:

Get-ExchangeServer | Format-List Name,Edition,AdminDisplayVersion

Die Ausgabe sieht wie folgt aus:

ClipCapIt-200227-141421.PNG


Ich fand das zu aufwendig über die PowerShell und habe mich nach anderen Möglichkeiten umgesehen.
In der Systemsteuerung unter Programme und Funktionen kann man diese Versionsnummer ja auch sehen:

ClipCapIt-200227-141724.PNG

Also habe ich mich in der Registry auf die Suche nach dieser Nummer gemacht - und bin mehrfach fündig geworden.
Zum Beispiel hier:

ClipCapIt-200227-141923.PNG
HKLM\SOFTWARE\Microsoft\ExchangeServer\v15\ClientAccessRole      REG_SZ      ConfiguredVersion

Ein schneller Test brachte hervor das es diesen Schlüssel identisch für

Exchange 2013
Exchange 2016
Exchange 2019

gibt. Bei Exchange 2010 ist die Version v14 statt v15:

HKLM\SOFTWARE\Microsoft\ExchangeServer\v14\ClientAccessRole      REG_SZ      ConfiguredVersion

Prima, brauchen wir also nur den Registry-Schlüssel auslesen.


Wert aus Registry auslesen

Es ist zwar kaum zu glauben - aber das hatte ich in Zabbix noch nicht gebraucht.
Wenn man danach googelt findet man .vbs-Skripte oder PowerShell-Befehle welche als UserParameter in den Agenten eingebunden werden.
Das wäre jetzt aber doch schon aufwendiger gewesen - schließlich müsste man dazu überall die Agentenkonfiguration anpassen um den neuen UserParameter hinzu zu fügen.
Eine andere, of übersehende Methode ist der Item-Key

system.run[<Befehl>]

Dieser setzt aber voraus das in der Agentenkonfiguration der Parameter

EnableRemoteCommands=1

gesetzt ist. Was er aber in unseren Umgebungen ist (und auch in dem von mir geschriebene Installationsskript).
So konnten wir schnell eine Prüfung zusammenbauen:

ClipCapIt-200227-142856.PNG

Der Item Key ist:

system.run[@echo off & FOR /F "tokens=2* skip=2" %a in ('reg query HKLM\SOFTWARE\Microsoft\ExchangeServer\v15\ClientAccessRole /v ConfiguredVersion') do echo %b]

und liefert dann nur die Version zurück:

ClipCapIt-200227-143127.PNG

Wie zuvor erwähnt - für Exchange 2010 aus dem v15 ein V14 machen.


Anmerkungen

Getestet wurde es mit Zabbix 4.x und 3.x
Falls es nicht geht fügt der Agentenkonfiguration noch die folgende Zeile hinzu:

UnsafeUserParameters=1 

Die habe ich auch überall gesetzt. Damit werden in Item-Parametern Sonderzeichen erlaubt (das brauchte ich vor Jahren schon einmal).

Der reine CMD-Befehl ist:

@echo off & FOR /F "tokens=2* skip=2" %a in ('reg query HKLM\SOFTWARE\Microsoft\ExchangeServer\v15\ClientAccessRole /v ConfiguredVersion') do echo %b

Normalerweise wenn danach googelt wird es immer

%%a %%b

sein - das ist nur innerhalb einer Batchdatei so. Das da oben ist ein Einzeiler wie Ihr ihn auch direkt eintippen könnt.
Der reg query Befehl liefert eine 3teilige Ausgabe zurück welche wir mit dem FOR zerlegen und uns nur den 3 Abschnitt zurückgeben lassen.
Das funktioniert hier gut weil das Ergebnis keine Leerzeichen etc. hat.
Das @echo off brauchen wir davor damit er den echo Befehel selbst nicht mit hinschreibt.
Ein

do @echo %b

würde wohl auch gehen (jetzt wo ich so darüber nachdenke


Quellen


Kommentare

Loading comments...