Sophos AntiVirus in Nagios überwachen
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.
Inhaltsverzeichnis
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:
Dann noch der Service und die Zurdnung zum Host - fertig:
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.