Da es mittlerweile schon etwas her ist, dass ich den ersten Teil dieses Posts geschrieben habe, fühlte ich mich diese Woche genötigt die damals angekündigten Informationen heute mal in einen neuen Blogpost zu gießen.
Heute soll es um den eigentliche Abfrage des NSClient gehen.

Zertifikate

Hierzu brauchen wir als erstes einen auf Windows installierten NSClient++. Dieser benötigt einen aktiven nrpe Server und ein paar Zertifikate. Die Zertifikate kann man auf dem klassischen Weg mit openSSL auf der Commandline erstellen oder man vereinfacht sich die Sache und nimmt ein grafisches Tool. Ich habe mich dabei für GnoMint entschieden, da hier die Komplexität so gering ist wie es noch nie vorher gesehen habe. Zusammengefasst muss man 5 Knöpfe drücken und hat zum Schluss zwei CA files, die jeweils ein Zertifikat autorisieren. Diese muss man in in zwei Ordner exportieren und anschließend dem Agent und dem Client unterschieben.
 

Anlegen und zuordnen der Zertifikate + CA

Anlegen und zuordnen der Zertifikate + CA


Man sieht in diesem Screenshot ganz gut dass das CA-file, welches auf dem Server liegen wird das Zertifikat autorisiert welches auf der Client Seite liegen wird und anders herum.

Der Agent

Nachdem NSClient++ auf gewohnte weise installiert wurde muss man jetzt noch ein paar einstellungen anpassen.

Diese stehen alle in der nrpe-Server-Sektion. In dem Code Snippet zeige ich nur diese einstellungen, alle anderen Einstellungen sind von dieser Thematik unberührt.
[/settings/NRPE/server]
[...]
; ENABLE SSL ENCRYPTION - This option controls if SSL should be enabled.
use ssl = true
; ENCRYPTION CIPHERS
allowed ciphers = ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH
; PATH TO CERTIFICATES
certificate = NSCP_Server\NSCP_Server.pem
certificate key = NSCP_Server\NSCP_Server.key
ca=NSCP_Server\ca.pem
; SWITCH ON VERIFICATION
verify mode = peer-cert

Nach wie vor muss der Monitoring Server auch noch unter den “allowed hosts” eingetragen werden.

Der Client

Im ersten Teil hatte ich schon mal erklärt, wie man den Client unter Linux kompiliert. Dies ist mittlerweile einfache geworden, da Mr. Medin zusammen mit dem Sourcecode auch ein paar Vagrant Boxen in seinem github account Pflegt.
Nach dem klonen, kann man einfach in das entsprechende Verzeichnis gehen, ‘vagrant up’ eingeben und wenige minuten später hat man ein voll durchkompiliertes check_nrpe mit SSL Features.
Diesem muss man noch sein Client-Zertifikat geben und dann kann man es folgendermaßen benutzen:
./check_nrpe host="<mein_neuer_host>" certificate-key=NSCP_Client/NSCP_Client.key certificate=NSCP_Client/NSCP_Client.pem ca=NSCP_Client/ca.pem verify=peer-cert command="checkmem" arguments="warning=30 critical=40"
Das ist zwar etwas länger als frühere check_nrpe Aufrufe und der Syntax ist mal wieder ein klein wenig anders (beachten Sie command= und arguments= ) aber schlussendlich machen wir die Security Abteilung ein wenig glücklicher.
verify=peer-cert sorgt übrigens wie auch beim Agenten dafür, dass die Verschlüsselung beidseitig geprüft wird. Dieses Verhalten ist zu empfehlen, da man ohnehin auf beiden Seiten Zertifikate vom gleichen Typ benötigt. Sonst funktioniert es auch nicht einseitig.

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.