Sicherheit durch Verschlüsselung ist nicht nur auf den meisten Internetseiten und und im Emailverkehr (zumindest vom Client zum Server) mittlerweile Standard. Auch innerhalb von Unternehmen laufen immer mehr Verbindungen über SSL ab.
Im Monitoring sollte Sicherheit eigentlich ganz oben auf der Agenda stehen, jedoch ist gerade beim Windows Monitoring mit check_nrpe und ganz besonders check_nt nicht alles zum besten bestellt. Währen check_nrpe wenigstens eine grundlegende Verschlüsselung bietet sendet check_nt seine Daten in Klartext.
Heute möchte ich euch daher zeigen wie man eine Sichere Verbindung mit nsclient++ herstellt. Hierbei wird nsclient++ auf dem Windows Host als Server/Agent eingesetzt und auf Icinga-Seite als Client.
Zur Verschlüsselung und Authentifizierung wird SSL mit CA und Zertifikaten engesetzt.
Als erstes muss man sich auf Linux Seite nsclient++ kompilieren. Das ist nicht schwer, hält jedoch ein paar Fallstricke bereit. Ich beschreibe den Vorgang hier exemplarisch für ein Debian System,
Zuerst installieren wir die notwendigen Abhängigkeiten.
aptitude install -y git build-essential cmake python libssl-dev libboost-all-dev python-dev libprotobuf-dev protobuf-compiler
# Und zusätzlich
aptitude install libcrypto++-dev libcrypto++9
aptitude install libzmq1 libzmq-dev
aptitude install libtinyxml2-dev libtinyxml2.6.2

Jetzt können wir den Git Snapshot herunterladen. Auf grund eines Problems im aktuellen Source Code greifen die dabei auf den 0.4.1 Branch zurück.
git clone https://github.com/mickem/nscp.git
git checkout 0.4.1
# aktuellen Branch anzeigen:
git branch

Um einem weiteren kleinen Bug zu entgehen muss noch eine Datei im jetzt entstandenen Verzeichnis umbenannt werden.cd nscp/build
mv FindTinyXML2.cmake FindTINYXML2.cmake
Es ist tatsächlich wahr. Linux ist case-sensitive. Weil in dem libtinyxml2 Paket die Datei tinyxml2.cpp fehlt besorgen wir uns schnell eine neue und kopieren sie ins richtige Verzeichnis. Bei der Gelegenheit nehmen auch gleich noch eine passende tinyxml2.h mit.
wget https://raw.github.com/leethomason/tinyxml2/master/tinyxml2.cpp
wget https://raw.github.com/leethomason/tinyxml2/master/tinyxml2.h
mv tinyxml2.cpp /usr/include/
mv tinyxml2.h /usr/include/

Nach diesen ganzen Vorarbeiten kann es jetzt an das eigentliche kompilieren gehen. Zuerst erstellen wir ein neues Verzeichnis und wechseln hinein. Das ganze sollte folgendermaßen aussehen.
mkdir build
tree -L 1
.
├── build     # build verzeichnis
└── nscp      # git snapshot
cd build

Hier wird jetzt konfiguriert und anschließend kompiliert.
cmake ../nscp
make
# and check it
make test

Damit ist der Client fertig, jetzt ist der Windows Agent an der Reihe. Hier muss nichts kompiliert werden. Benutze einfach das fertige zip oder msi Paket von nsclient.org und installiere es.
Im nächsten Teil der Serie wird nsclient++ konfiguriert um SSL Verschlüsselung und Authentifizierung zu benutzen. Außerdem werde ich ein paar Überwachungsbeispiele angeben.

Christoph Niemann
Christoph Niemann
Senior Consultant

Christoph hat bei uns im Bereich Managed Service begonnen und sich dort intensiv mit dem internen Monitoring auseinandergesetzt. Seit 2011 ist er nun im Consulting aktiv und unterstützt unsere Kunden vor Ort bei größeren Monitoring-Projekten und PERL-Developer-Hells.