Anmeldeversuche unter VMWare Horizon View überwachen

Wer VMWare Horizon View im Intranet nutzt, denkt früher oder später auch darüber nach Zugriffsmöglichkeiten für Mitarbeiter/innen über das Internet zu realisieren. Mit dem mitgelieferten Webportal auf Basis von HTML5 ist dies natürlich perfekt geeignet, da keinerlei Installation auf dem heimischen Rechner/Notebook notwendig ist.

Für die Veröffentlichung wird nomalerweise in der DMZ der VMWare Horzion Security Server bereitgestellt, welcher mit einem weiterem VMWare Horzion Connection Server im Intranet gekoppelt wird.
vmware-view-security-server-design

Versucht jemand sich von außen unberechtigt Zugang zu verschaffen, in dem er Benutzernamen und Passwörter ausprobiert, würde ich das gerne mitbekommen. Leider gibt es bisher seitens des Herstellers VMWare keine Möglichkeit bei bestimmten Ereignissen sich benachrichtigen zu lassen.

Aber die fehlgeschlagende Anmeldung wird jedes Mal in das Ereignisprotoll -> Sicherheit des jeweiligen Horizon View Connection Servers geschrieben, mit dem der Horizon View Security Server verbunden ist. Genau da setzt meine Gedanke mit einem Powershellskripts an.

Clear-Host

[string] $strMailBetreff = "Info: VMWare Horizon Security Server"

[string] $strMailServerAdresse = "Mailserver"
[int] $intMailServerPort = 587
[bool] $bMailServerSsl = $true
[string] $strMailAbesender = "abc@domain.de"
[string] $strMailAbsenderBenutzer = "benutzer"
[string] $strMailAbsenderPasswort = "passort"

[array] $aMailEmpfaenger = @("empfänger1", "empfänger2")


# Letztes Ereignis auslesen
$Event = Get-EventLog -LogName Security -InstanceId 4625 -Newest 1 -Message "*wsnm.exe*"
$MailBody= @"
Fehler beim Anmelden eines Kontos.

Servername:`t`t$($Event.ReplacementStrings[1])
Domäne:`t`t$($Event.ReplacementStrings[2])
Benutzername:`t$($Event.ReplacementStrings[5])
Zeitstempel:`t`t$($Event.TimeGenerated)
"@


# E-Mail verschicken
$MailMessage = New-Object System.Net.Mail.MailMessage
$MailMessage.From = $strMailAbesender

foreach($a in $aMailEmpfaenger) {
    $MailMessage.To.Add($a)
}

$MailMessage.IsBodyHtml = 0
$MailMessage.Subject = $strMailBetreff
$MailMessage.Body = $MailBody
$MailMessage.Priority = "High"

$SmtpClient = New-Object System.Net.Mail.SmtpClient
$SmtpClient.EnableSsl = $bMailServerSsl
$SmtpClient.Port = $intMailServerPort
$SmtpClient.host = $strMailServerAdresse
$SmtpClient.Credentials = New-Object System.Net.NetworkCredential($strMailAbsenderBenutzer, $strMailAbsenderPasswort); 
$SmtpClient.Send($MailMessage)

Quelle: Git Repository

Das Skript muss natürlich um die E-Maildaten (sprich Mailserver, Benutzer + Passwort, Absender und Empfänger) ergänt werden. Anschließend das Skript auf dem VMWare Connection Server abspeichern, welcher mit dem VMWare Horizon Security Server verknüpft ist. Damit das Skript in Aktion tritt, wird eine einfache Aufgabe in der Aufgabenplanung einzurichten.

vmware-view-security-aufgabenplanung01

vmware-view-security-aufgabenplanung02

vmware-view-security-aufgabenplanung03

Im letzten Screenshot wird zuerst der Pfad zur powershell.exe angegeben. Bei der Zeile „Argument“ wird hinter dem Parameter der vollständige Pfad inkl. Skriptname und Dateiendung benötigt.