Sophos AntiVirus in Nagios überwachen

Aus ITwiki
Version vom 18. August 2017, 14:30 Uhr von Flo84 (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Dieser Artikel bezieht sich auf die Sophos Endpoint Cloud Security-Lösung. Es ist möglich, dass auch der Update-Status andere AV-Produkte von Sophos mit diesem Nagios-Plugin überwacht werden können. Im Großen und Ganzen prüft das nachfolgende VBScript lediglich das Änderungsdatum der Datei

%programdata%\Sophos\AutoUpdate\data\status\SophosUpdateStatus.xml

Diese Datei wird bei jedem Update geändert.

VBScript check_sophosavupdate.vbs

Erstelle zunächst die Datei check_sophosavupdate.vbs mit folgendem Inhalt:

'
' check_sophosavupdate.vbs
'
' Version 1.0
'
' Copyright by Flo Krug
'
' Comment: Nagios Plugin to check Sophos Antivirus Update time
'
' Parameters
' -w <warning_hours> (required): value in hours when nagios/this script generates a warning if sophos av was not updated
' -c <critical_hours> (required): value in hours when nagios/this script generates a critical if sophos av was not updated

Dim arg_warning, arg_critical, arg_counter
Dim strSophosAvFile, objSophosAvFile
Dim strUpdateDate, strWarningDate, strCriticalDate, strCurrentDate

' Parameters -w and -c required
Set args = WScript.Arguments
If args.Count < 4 Or args.Count > 4 Then
	WScript.Echo "UNKNOWN: wrong parameters. Use: check_sophosavupdate.vbs -w <warning_hours> -c <critical_hours>"
	WScript.Quit (3)
End If
arg_counter = 0
For Each arg In args
	arg_counter = arg_counter + 1
	If LCase(arg) = "-w" And arg_counter < args.Count Then
		arg_warning = args(arg_counter)
	End If
	If LCase(arg) = "-c" And arg_counter < args.Count Then
		arg_critical = args(arg_counter)
	End If
Next

' We have to check if SophosUpdateStatus.xml exists because this file tells us when the last Sophos AV update run 
Set wshShell = CreateObject( "WScript.Shell" )
strSophosAvFile = wshShell.ExpandEnvironmentStrings("%PROGRAMDATA%") & "\Sophos\AutoUpdate\data\status\SophosUpdateStatus.xml"

Set objFSO = Createobject ("Scripting.FileSystemObject")
If objFSO.FileExists(strSophosAvFile) = False Then
	WScript.Echo "UNKNOWN: File " & strSophosAvFile & " not found"
	WScript.Quit (3)
End If

' Now we need the last modified date and compare it with the current time
Set objSophosAvFile = objFSO.GetFile("" & strSophosAvFile & "")

strUpdateDate = objSophosAvFile.DateLastModified
strWarningDate = objSophosAvFile.DateLastModified + (arg_warning/24)
strCriticalDate = objSophosAvFile.DateLastModified + (arg_critical/24)
strCurrentDate = Now


' Compare last update time, warning and critical date and generate nagios event
If strCriticalDate <= strCurrentDate Then
	WScript.Echo "CRITICAL: last updated on " & strUpdateDate & " (WARNING on " & strWarningDate & ", CRITICAL on " & strCriticalDate & ")"
	WScript.Quit (2)
End If
If strWarningDate <= strCurrentDate Then
	WScript.Echo "WARNING: last updated on " & strUpdateDate & " (WARNING on " & strWarningDate & ", CRITICAL on " & strCriticalDate & ")"
	WScript.Quit (1)
End If

WScript.Echo "OK: last updated on " & strUpdateDate & " (WARNING on " & strWarningDate & ", CRITICAL on " & strCriticalDate & ")"
WScript.Quit (0)

Das Script erwartet folgende Parameter:

-w <warning_hours>: ist das Update länger als warning_hours her, wird eine Warnung ausgelöst
-c <critical_hours>: ist das Update länger als critical_hours her, wird ein Critical ausgelöst

Das Ganze kann man natürlich zunächst mal über die Eingabeaufforderung testen, Beispiel:

check_sophosavupdate.vbs -w 24 -c 48

Folgendes würde passieren: ist das letzte Update mehr als 24 Stunden her, wird eine Warnung ausgelöst, nach 48 Stunden meldet Nagios einen Critical alert.

NSClient++ konfigurieren

Per NRPE wird nun das Script von Nagios am Client aufgerufen. Kopiere daher zunächst die check_sophosavupdate.vbs-Datei in den Ordner scripts unterhalb des NSClient++ Installationsverzeichnisses. Editiere dann die nsclient.ini:

[/settings/external scripts/scripts]
; Eigene Scripts:
check_sophosavupdate=cscript.exe //T:30 //NoLogo scripts\check_sophosavupdate.vbs $ARG1$

Datei speichern, NSClient++ Dienst neu starten.

Nagios einrichten

Ich verwende NagiosQL zum Erstellen der Nagios-Konfigdateien, deshalb nachfolgend nur die Screenshots, wie hier vorzugehen ist, um den Status im Nagios überwachen zu können.

Zunächst brauchen wir einen neuen Command check_sophosavupdate:

Nagios sophosupdate01.png

Dann noch der Service und die Zurdnung zum Host - fertig:

Nagios sophosupdate02.png

Bitte achte genau auf die Schreibweisen wie in den Screenshots zu sehen. Ein falsch verwendetes, fehlendes oder geschriebenes Hochkomma kann dazu führen, dass das Script nicht funktioniert.

Bewertung

War dieser Beitrag hilfreich für Dich?
Bitte stimme unten ab.
0
0
0
Es wurden seit Erstellung der Umfrage am 14:17, 18. Aug. 2017 0 Stimmen abgegeben.
poll-id 1E916E254E1F26C828B1BA5613DF501B