Logo faq-o-matic.net
Logo faq-o-matic.net

Monitoring: Sophos SafeGuard Enterprise

von veröffentlicht am9. Juli 2014, 06:34 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Client-Software, Monitoring, Sicherheit, VBScript   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Dieser Beitrag erschien zuerst auf Ollis Blog.

Sophos SafeGuard Enterprise ist eine Software-Lösung für Endpoint-Security, mit der man im wesentlichen eine zentral verwaltete Verschlüsselungslösung für Clients aufbauen kann. Die Lösung lässt sich eigentlich gut ins Monitoring einbinden – wenn da nicht ein ärgerlicher Bug in der XML-Komponente wäre. In diesem Artikel stelle ich eine Lösung dafür vor.

Wesentliche Komponenten der Software 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 usw.) mit Zugriffsmöglichkeiten auf Mobilgeräte
  • 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 Installation des Clients kann bequem mittels einer Software-Verteilung erfolgen, die Kommunikation mit dem Server erfolgt dann bidirektional (z.B. Richtlinien abrufen, Zustand hochladen), über HTTP optional mit SSL-Verschlüsselung. Die Überwachung von Sophos SafeGuard Enterprise gestaltet sich 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

Da der Abruf der Informationen aus Sicherheitsgründen nur über Localhost gestattet ist und der Server/Management Center nur auf einem Windows Server installiert werden kann, konnte ich ohne Interpreter-Installation auf dem Server leider keine meiner bevorzugten Sprachen nutzen. Daher habe ich das Plugin in 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:

<string xmlns=“http://tempuri.org/“><?xml version=“1.0″ encoding=“utf-8″?>
<string xmlns=“http://tempuri.org/“>&lt;Dataroot&gt;&lt;WebService&gt;OK&lt;/WebService&gt;
&lt;DBAuth&gt;OK&lt;/DBAuth&gt;
&lt;Info&gt;
&lt;Database&gt;SafeGuard&lt;/Database&gt;
   &lt;Server&gt;SGE1\SQLEXPRESS&lt;/Server&gt;
   &lt;Version&gt;11.00.3000&lt;/Version&gt;
   &lt;Name&gt;DBFactorySql on process: w3wp
Process ID: 33264&lt;/Name&gt;
   &lt;Owner&gt;[dbo]&lt;/Owner&gt;
   &lt;ConnectionInfo&gt;SQL Server credentials are used for authentication.&lt;/ConnectionInfo&gt;
&lt;/Info&gt;
&lt;/Dataroot&gt;</string></string>

Valides XML:

<string xmlns=“http://tempuri.org/“><dataroot><webservice><?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></webservice><info><connectioninfo></connectioninfo>
</info>
</dataroot></string>

Durch diesen Bug musste ich im Plugin ein Tempfile erstellen (%windir%/temp) und in diesem das XML gerade biegen. 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:

  • DBAuth und/oder WebService nicht „OK“ sind
  • HTTP Status nicht gleich 200
  • Fehler bei der XML Verarbeitung aufgetreten sind

Download: Nagios Exchange

© 2005-2019 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!