Was ist Sophos SafeGuard Enterprise?
Sophos SafeGuard Enterprise ist eine Software-Lösung für Endpoint-Security, mit der man im wesentlichen eine managed Verschlüsselungslösung für Clients aufbauen kann.
Wesentliche Komponenten sind:
Die Überwachung von Sophos SafeGuard Enterprise gestaltet sich als relativ einfach, da Sophos bereits eine Web-Schnittstelle für die wichtigsten Komponenten bereitstellt:
Daher habe ich das Plugin VBS geschrieben und bin dabei auf einen unschönen Bug in der Web-Schnittstelle gestoßen.
Die Informationen der Schnittstelle werden als XML abgerufen, allerdings werden die spitzen Klammern als HTML Steuerzeichen ausgegeben und können somit nicht direkt verarbeitet werden:
Falsches XML:
Valides XML:
Dabei kommt dann folgendes raus:
Das Plugin wird kritisch, wenn entweder:
Download: Nagios Exchange
Bei Fragen bitte einfach melden.
Sophos SafeGuard Enterprise ist eine Software-Lösung für Endpoint-Security, mit der man im wesentlichen eine managed Verschlüsselungslösung für Clients aufbauen kann.
Wesentliche Komponenten sind:
- Zertifizierte Verschlüsselungstechnologien (FIPS, Common Criteria)
- Hohe Verschlüsselungsstärke (AES 256 Bit)
- Festplattenverschlüsselung
- Verschlüsselung von Wechselmedien
- Verschlüsselter Datenaustausch, ohne dass der Empfänger selber das Produkt installiert haben muss
- Verschlüsselung für CloudStorage (Dropbox und co) mit Zugriffsmöglichkeiten auf mobile devices
- Verschlüsselung für Netzwerk-Freigaben
- Unterstützung von BitLocker, FileVault etc
- Token-basierte Authentifizierung
- OU-basierte Zuweisung von Richtlinien
- Client-Unterstützung: Windows XP - 8.1, MAC OSX 10.5 - 10.9
- Datenbank-Unterstützung: SQL Server 2005 - 2012 SP1 (jeweils auch Express)
- Management-Server: Windows Server 2003 - 2012 R2
- Management-Konsole: Windows Server 2003 - 2012 R2, XP - 8.1
Die Überwachung von Sophos SafeGuard Enterprise gestaltet sich als relativ einfach, da Sophos bereits eine Web-Schnittstelle für die wichtigsten Komponenten bereitstellt:
- WebService (wie bereits oben beschrieben, eine sehr kritische Komponente)
- DBAuth: Zugriff auf die Datenbank
Daher habe ich das Plugin VBS geschrieben und bin dabei auf einen unschönen Bug in der Web-Schnittstelle gestoßen.
Die Informationen der Schnittstelle werden als XML abgerufen, allerdings werden die spitzen Klammern als HTML Steuerzeichen ausgegeben und können somit nicht direkt verarbeitet werden:
Falsches XML:
<?xml version="1.0" encoding="utf-8"?> <string xmlns="http://tempuri.org/"><Dataroot><WebService>OK</WebService> <DBAuth>OK</DBAuth> <Info> <Database>SafeGuard</Database> <Server>SGE1\SQLEXPRESS</Server> <Version>11.00.3000</Version> <Name>DBFactorySql on process: w3wp Process ID: 33264</Name> <Owner>[dbo]</Owner> <ConnectionInfo>SQL Server credentials are used for authentication.</ConnectionInfo> </Info> </Dataroot></string>
Valides XML:
Durch diesen Bug musste ich im Plugin ein Tempfile erstellen (%windir%/temp) und in diesem, das XML gerade biegen.<?xml version="1.0"?> <string xmlns="http://tempuri.org/"><Dataroot><WebService>OK</WebService> <DBAuth>OK</DBAuth> <Info> <Database>SafeGuard</Database> <Server>SGE1\SQLEXPRESS</Server> <Version>11.00.3000</Version> <Name>DBFactorySql on process: w3wp Process ID: 49588</Name> <Owner>[dbo]</Owner> <ConnectionInfo>SQL Server credentials are used for authentication.</ConnectionInfo> </Info> </Dataroot></string>
Dabei kommt dann folgendes raus:
' Author: Oliver Skibbe
' Date: 2014-06-18
' Required Variables
Const PROGNAME = "check_sge"
Const VERSION = "1.0.0"
' Nagios helper functions
nsclientDir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
Include nsclientDir & "\lib\NagiosPlugins.vbs"
' Create the NagiosPlugin object
Set np = New NagiosPlugin
Set WshShell = WScript.CreateObject("WScript.Shell")
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
Set objFSO = CreateObject("Scripting.FileSystemObject")
' fetch xml, per default "CheckConnection" is only available via localhost
Set oXMLHTTP = CreateObject("Msxml2.ServerXMLHTTP.3.0")
oXMLHTTP.SetOption 2, oXMLHTTP.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
oXMLHTTP.Open "POST", "https://localhost/SGNSRV/Trans.asmx/CheckConnection", False
oXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oXMLHTTP.Send ""
' Ugly, but we have to build a Tempfile, cause SafeGuard Enterprise does not provide a valid xml file
' Sophos Support: might be fixed in 6.20
' temporary file,
strWinDir = WshShell.ExpandEnvironmentStrings("%WinDir%")
TEMPFILE = strWinDir & "\Temp\nagios_sge.xml"
' load fetched xml file
Set myFile = objFSO.CreateTextFile(TEMPFILE, True)
bodyStr = oXMLHTTP.responseXML.xml
' this is the magic, replace broken html stuff with real ">" & "<"
bodyXML = Replace(bodyStr, "<", "<")
bodyXML = Replace(bodyXML, ">", ">")
' save file
myFile.write(bodyXML)
' Website is responding and returns OK
If oXMLHTTP.Status = 200 Then
' Parse XML
xmlDoc.load(TEMPFILE)
If isObject(xmlDoc) Then
' prepare output
For Each x In xmlDoc.documentElement.selectNodes("//string/Dataroot")
WebService = x.selectSingleNode("WebService").Text
DBAuth = x.selectSingleNode("DBAuth").Text
Info = "Database: " & x.selectSingleNode("Info/Database").Text
Info = Info & vbcrlf & "DBServer: " & x.selectSingleNode("Info/Server").Text
Info = Info & vbcrlf & "DBVersion: " & x.selectSingleNode("Info/Version").Text
Info = Info & vbcrlf & "DBOwner: " & x.selectSingleNode("Info/Owner").Text
Info = Info & vbcrlf & "DBConnectionInfo: " & x.selectSingleNode("Info/ConnectionInfo").Text
Next
If WebService = "OK" And DBAuth = "OK" Then
return_code = OK
return_msg = "Everything's fine!"
Else
return_code = CRITICAL
return_msg = "Something happened!"
End If ' end if webserver and dbauth
' prepare return msg
return_msg = return_msg & " WebService: " & WebService & " DBAuth: " & DBAuth & vbcrlf & Info
Else
' XML not loaded
return_code = CRITICAL
return_msg = "XML could not be read"
End If ' end if xml load
Else
' Webservice reporting something other than 200 (OK)
MsgBox("Error: " & oXMLHTTP.Status)
return_code = CRITICAL
return_msg = "Webservice answered something strange, http status: " & oXMLHTTP.Status
End If ' end if Webservice status 200 (OK)
' exit
np.nagios_exit return_msg, return_code
' helper for including nagios lib
Sub Include( cNameScript )
Set oFS = CreateObject("Scripting.FileSystemObject")
Set oFile = oFS.OpenTextFile( cNameScript )
ExecuteGlobal oFile.ReadAll()
oFile.Close
End Sub
' EOF
Das Plugin wird kritisch, wenn entweder:
- DBAuth und/oder WebService nicht "OK" sind
- HTTP Status != 200
- Fehler bei der XML Verarbeitung aufgetreten sind
Download: Nagios Exchange
Bei Fragen bitte einfach melden.
Keine Kommentare:
Kommentar veröffentlichen