Überwachung von Zertifikaten: Der SSL-Cert-Monitor von OpenNMS

Die Verschlüsselung von Online-Kommunikation ist in den letzten Jahren zu einem notwendigen Standard geworden – daher sollte man sich mit den verschiedenen Verschlüsselungsverfahren auseinandersetzen. Eines dieser Verfahren ist die Verschlüsselung durch SSL, mit dem Protokolle wie HTTPS, IMAPS und SMTPS umgesetzt werden. Hierfür stützt sich das Verfahren auf Zertifikate, die zudem dazu genutzt werden können, um Server zu authentifizieren. Da die Zertifikate als Sicherheitsmerkmal nur eine begrenzte Gültigkeitsdauer haben, muss man diese regelmäßig erneuern. Wird ein Zertifikat nicht rechtzeitig erneuert, kommt es beim Zugriff auf den Server im (für den Administrator) besten Fall zur einer Warnung, die ignoriert werden kann.

Unsichere Verbindung
Reaktion des Firefox – Webbrowser auf das simulierte Auslaufen eines SSL – Zertifikates

Andernfalls können die Sicherheitsrichtlinien der Clients vorsehen, dass diese eine Verbindung zum Server verweigern, was die Nutzung bis zur Erneuerung des Zertifikats verhindert. Aus diesem Grund ist es sehr wichtig, die Zertifikate rechtzeitig zu erneuern, wobei der gesamte Prozess und der damit erforderliche Vorlauf berücksichtigt werden muss.

Der Zertifikats-Monitor von OpenNMS

OpenNMS bringt einen eigenen Monitor zur Überwachung der Restlaufzeit von SSL-Zertifikaten mit. An dieser Stelle soll am Beispiel eines Monitors zur Überwachung der Restlaufzeit eines Zertifikates für einen HTTPS-Server gezeigt werden, wie dieser auf einer Monitoringumgebung eingerichtet werden kann. Die Überwachung erfolgt in Form eines Pollers; dementsprechend findet die Konfiguration in der Datei poller-configuration.xml im Konfigurationsverzeichnis von OpenNMS statt.
Die Beispielkonfiguration:
<service name=“SSL-Cert-HTTPS-443″ interval=“7200000″ user-defined=“false“ status=“on“>
<parameter key=“retry“ value=“2″/>
<parameter key=“timeout“ value=“3000″/>
<parameter key=“port“ value=“443″/>
<parameter key=“days“ value=“30″/>
</service>
Der Poller kann beliebig benannt werden, die Bezeichnung sollte aber „sprechend“ sein. Die Benennung SSL-Cert-HTTPS-443 ist zwar recht allgemein, aber nützlich – wenn man mit einem Poller alle HTTPS-Zertifikate überwachen möchte.
Möchte man nur einzelne Dienste überwachen oder soll der Name des Pollers gleich Rückschlüsse auf das betroffene Zertifikat erlauben, ist dies auch möglich; allerdings muss dann für jede Benennung ein eigener Poller konfiguriert werden, was sich später auch in der Bindung selbiger an die überwachten Zertifikate äußert.
Das Intervall, in dem die Gültigkeit der Zertifikate geprüft wird, ist mit 7.200.000 Millisekunden (entspricht zwei Stunden) angegeben, was angesichts einer Vorwarnzeit in Tagen ausreicht. Die Zeit, die vor dem Ablauf eines Zertifikates gewarnt werden soll, wird mit dem Parameter days festgelegt. Hier sind 30 Tage als Vorwarnzeit angegeben, was an die eigenen Bedürfnisse angepasst werden kann. Die Angabe des Ports, auf dem der Dienst läuft, ist hier besonders wichtig, da er zur Zuordnung zum verwendeten Protokoll (HTTPS, IMAPS, …) dient. Die Paremeter retry und timeout dienen zur Konfiguration der Wiederholungen im Fall ein einer fehlschlagenden Abfrage und der Zeit, die OpenNMS pro Anfrage auf eine Antwort des überwachten Dienstes warten soll. Damit wäre die Konfiguration abgeschlossen – um nun den Dienst überwachen zu können, ist seine Zuordnung zum Monitor notwendig. Hierfür muss einfach die Zeile
<monitor service=“SSL-Cert-HTTPS-443″ class- name=“org.opennms.netmgt.poller.monitors.SSLCertMonitor“ />
zum Zuordnungsblock am Ende der Datei eingefügt werden. Bei der Verwendung von spezifischeren Pollern muss an dieser Stelle eine Zeile pro Poller eingefügt werden, wobei der Servicename exakt dem Namen des Pollers entsprechen muss.

Abschluss der Einrichtung und Start des Monitors

Nachdem die Datei gespeichert wurde, ist noch ein Neustart von OpenNMS notwendig, damit der Monitor genutzt werden kann. Bevor OpenNMS neu gestartet wird, sollte der Detektor für den Dienst eingerichtet werden, damit dieser die Dienste beim Neustart gleich erkennt. Am einfachsten kann dies über die Weboberfläche von OpenNMS realisiert werden. Im Administrationsbereich von OpenNMS (Configure OpenNMS) wird „Manage Provisioning Requisitions“ und dort „Edit Default FS“ ausgewählt. Falls für Requisitions eigene Foreign Source Definitions genutzt werden, sollten diese gewählt werden. Nun kann der Detektor wie in der Abbildung gezeigt eingerichtet werden. Hierbei ist es ebenfalls notwendig, dass der Detektor exakt den gleichen Namen wie der zuvor definierte Poller hat, da die Zuordnung über den Namen stattfindet. Anschließend kann OpenNMS neu gestartet werden.

Einrichtung eines TCP - Detektors für den SSL-Cert-HTTPS-443 - Monitor
Einrichtung eines TCP – Detektors für den SSL-Cert-HTTPS-443 – Monitor

Werden einzelne Poller zur Überwachung der Zertifikate genutzt, bietet sich die Verwendung von Loopback-Detektoren an. Alternativ können die Dienste – bei Nutzung von Requisitions – an die zu überwachenden Interfaces gebunden werden. Sollte sich nun ein Zertifikat dem Ablaufdatum nähern und die angegebene Vorwarnzeit unterschreiten, so wird von OpenNMS ein Ausfall vom Typ NodeLostService erzeugt, der wie alle Ausfälle dieser Art auf der Oberfläche angezeigt wird und auf Wunsch auch über verschiedene Wege (z.B. E-Mail, SMS) kommuniziert werden kann.
Eine wichtige Einschränkung des Monitors: In seiner jetzigen Implementierung ist es leider nur möglich, SSL-Zertifikate direkt abzufragen. Ist beispielsweise für den Zugriff auf IMAPS ein Verbindungsaufbau mittels STARTTLS oder das Senden eines Host-Headers beim Abfragen eines SSL-Zertifikats von einem Webserver mit virtuellen Hosts nötig, so kann der SSL-Cert-Monitor leider nicht eingesetzt werden.
Anmerkung: Die Hintergrundinformationen für diesen Artikel wurden der OpenNMS-Dokumentation unter http://docs.opennms.org/opennms/releases/18.0.1/guide-admin/guide-admin.html#_sslcertmonitor entnommen.
 
Autor: Andreas Fuchs

EU Efre