Citrix WI/PNAgent Site über Nagios monitoren

Das Citrix Webinterface wird von jedem Program Neighborhood Agent angesprochen um die veröffentlichten Anwendungen für den jeweiligen User zu bestimmen. Ist diese Komponente nicht verfügbar, sind von Windowsagents keine Anmeldungen möglich. Aus diesem Grund sollte Anmeldungen überwacht werden. Hier wird eine Möglichkeit zur Überwachung mit Nagios beschrieben.

Kommunikationswege:

Technisch stellt der Agent an das Citrix Webinterface PNAgent Site erst eine GET Anfrage (kann weggelassen werden) und übermittelt danach per POST Username und Passwort. Daraufhin leitet das Webinterface die Usercredentials and den Citrix XML-Service weiter und erhält die Liste der Anwendungen, welche für den User konfiguriert sind als XML.

Simulieren des Logins

Um unsere Anfrage zu simulieren müssen wir den Verkehr mit einem Tool wie Wireshark mitschneiden. Um mitlesen zu können sollten wir gegen ein Webinterface arbeiten, welches per HTTP anzusprechen ist.

Im vorhinein wird ein User benötigt für welchen wenigstens eine veröffentlichte Anwendung definiert ist.

Da mehrere Logins mit dem gleichem Passwort immer das selbe verschlüsselte Passwort ergeben, ist davon auszugehen, dass ein XOR mit einem geheimen Wert gemacht wird.

Die POST Anfrage vom Client zu Server sieht ungefähr folgendermaßen aus:

erst nen bischen allgemeines Zeug:

< ?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd">
<nfuseprotocol version="4.6">
<requestappdata>
<scope traverse="onelevel" type="PNFolder"/>
</requestappdata></nfuseprotocol>
<desireddetails>all</desireddetails>
<desireddetails>icon-info</desireddetails>
<servertype>x</servertype>
<servertype>win32</servertype><clienttype>ica30</clienttype>
<clienttype>content</clienttype>

nun die Usercredentials:

<credentials>
<username>MYUSERACCOUNTTOCHECK</username>
<password encoding="ctx1">THISISMYCRYPTEDPASSWORD</password>
<domain type="NT">MYDOMAIN</domain>
</credentials>

ein bischen unnützes Zeug:

<clientname>MYCLIENTNAME</clientname>
<clientaddress>111.222.333.444</clientaddress>

NagiosPlugin

Eins vorweg: ich weiss, dass es “smartere” Möglichkeiten gibt, aber es muss platz für Verbesserung geben. Ich denke ich werde das gesammte Plugin demnächst nochmal überarbeiten und schick machen.

Mit dem check_http Plugin – defaultplugin von Nagios – kann ein Post Anfrage simuliert und die Rückgabe geparsed werden. Wird dein definiertes Pattern gefunden liefert das Script “OK” und eine Antwortzeit. Diese Rückgabe parsen wir mit dem check_wiserver.sh Script.

check_wiserver.sh:

#!/bin/sh
a=`/usr/lib/nagios/plugins/check_http -I 111.112.113.114 -u http://mywebinterfaceserver/citrix/pnagent/enum.aspx -s MyMonitoringApp -P '< ?xml version="1.0" encoding="UTF-8"?>< !DOCTYPE NFuseProtocol SYSTEM "NFuse.dtd"><nfuseprotocol version="4.6"><requestappdata><scope traverse="onelevel" type="PNFolder"/><desireddetails>all</desireddetails><desireddetails>icon-info</desireddetails><servertype>x</servertype><servertype>win32</servertype><clienttype>ica30</clienttype><clienttype>content</clienttype><credentials><username>MYUSERACCOUNTTOCHECK</username><password encoding="ctx1">THISISMYCRYPTEDPASSWORD</password><domain type="NT">MYDOMAIN</domain></credentials><clientname>Nagisserver</clientname><clientaddress>115.116.117.118</clientaddress></requestappdata></nfuseprotocol>'`
 
zeic=`/bin/echo $a |/bin/grep OK`
if [[ "$zeic" = "" ]]; then
 
  echo $a
  exit 2
fi
echo $a
exit 0

In diesem Beispiel wird der Host 111.112.113.114 auf der URL http://mywebinterfaceserver/citrix/pnagent/enum.aspx mit den Usercredentials MYUSERACCOUNTTOCHECK mit dem verschlüsseltem Passwort “THISISMYCRYPTEDPASSWORD” abgefragt. In der Rückabe wird nach der veröffentlichten Anwendung “MyMonitoringApp” geparsed und “OK” zurückgegeben. Daraufhin liefert check_wiserver.sh 2 für Error oder 0 für OK an Nagios zurück.

Dieses Script muss nun lediglich noch als Command im Nagios definiert werden.

Zusammenfassung

    was wird mit der Probe überwacht?

  • Authentifizierungbackend (z.B.: Active Directory)
  • XML Service liefert valide Antworten
  • Web Interface Agent Site
    was wird mit der Probe nicht überwacht?

  • Citrix Datastore
  • Citrix Licensing (hierzu kommt demnächst ein Blogpost)
  • “richtiges Login” wie Citrix Active Application Monitoring oder Openview
    was muss getan werden:

  • Monitoringuser anlegen und Anwendung veröffentlichen
  • Login mit expliziten Credentials tracen um verschlüsseltes Passwort zu erhalten
  • in check_wiserver.sh hostname, sitename und usercredentials anpassen, ggf. Pfad zu check_http anpassen

Leave a Reply

Spam Protection by WP-SpamFree