Eine Herausforderung beim Monitoring ist die Absicherung der Monitoring-Daten und der Zugriffskonten. Sowohl bei der Datenübertragung als auch bei der Speicherung der Informationen können Sicherheitsrisiken auftreten, die Monitoring-Verantwortliche adressieren sollten.
In diesem Blog stelle ich Ihnen einige Best Practices vor, die Ihnen helfen, Ihr Monitoring so sicher wie möglich zu konfigurieren. Die meisten Punkte können Sie mit wenigen Handgriffen umsetzen. Die hinterlegten Links führen Sie direkt zu den passenden Kapiteln im Checkmk Handbuch.
Grundsätzlich ist Checkmk nach den beiden Prinzipien Security-by-Design und Security-by-Default aufgebaut und reduziert dadurch bereits mögliche Gefahren. Trotzdem gibt es bei der Konfiguration von Checkmk einige Bereiche, die man nicht standardmäßig vorgeben kann, sondern die Sie erst nach der Installation anpassen können.
Nutzen Sie starke Passwörter für Ihre Zugänge
Sie sollten in Checkmk durchweg starke Passwörter nutzen. Dies betrifft die Checkmk Nutzerkonten, aber auch Kennwörter für Zugänge, die das Monitoring selbst nutzt, um beispielsweise Daten über APIs abzurufen. Sie können zum Beispiel einen Passwort-Generator nutzen, um starke Passwörter zu generieren.
Haben Sie eine neue Checkmk Instanz aufgesetzt, hat diese immer zwei Benutzerkonten. Den Automationsbenutzer "automation" und das Administrationskonto “cmkadmin”.
Der Automationsbenutzer dient zur Anbindung von anderen Systemen, um bestimmte Tätigkeiten zu automatisieren. Externe Software muss dabei bestimmte URLs der Checkmk Oberfläche automatisiert abrufen können. Der Automationsbenutzer ermöglicht die Authentifizierung über bestimmte Variablen in der URL. Dazu der nutzt Automationsbenutzer ein Automationspasswort, das Sie in Checkmk erstellen können. Sie können sich mit ihm nicht über die Weboberfläche anmelden.
Für “cmkadmin” generiert Checkmk zufällig ein Passwort bei der Erstellung der Instanz. Falls Sie dieses nicht geändert haben, sollten Sie das Passwort im User-Menü anpassen. Für lokale Checkmk Benutzerkonten können Sie zudem die Vergabe von sicheren Passwörtern erzwingen. Diese Option finden Sie in den Global settings von Checkmk.
Halten Sie Checkmk auf dem neuesten Stand
tribe29 veröffentlicht regelmäßig Patches für alle unterstützten Checkmk Versionen. Sie sollten diese Updates immer zeitnah installieren. Neben neuen Features dienen die Patches der Schließung von möglichen Schwachstellen. Der Update-Mechanismus von Checkmk erlaubt den parallelen Einsatz von mehreren Checkmk Versionen, dadurch gehen Sie nicht das Risiko ein, dass Ihre Monitoring-Umgebung nach einem Update nicht mehr funktioniert. Alte Versionen bleiben weiterhin nutzbar und Sie entscheiden, wann Sie diese entfernen.
Die Verfügbarkeit von neuen Checkmk Versionen kündigt tribe29 im monatlichen Checkmk Newsletter und im Checkmk Forum an. Abonnieren Sie den Newsletter oder besuchen Sie regelmäßig das Forum, um auf dem aktuellsten Stand zu bleiben.
Zudem sollten Sie keine Major-Versionen von Checkmk ohne aktiven Support nutzen. Behalten Sie daher die Support-Zeiträume der Checkmk Versionen im Auge. In der Regel endet der aktive Support immer sechs Monate nach der Veröffentlichung einer neuen Version.
Erstellen Sie Backups Ihrer Checkmk Konfiguration
Sie können in wenigen Minuten eine Sicherungskopie Ihrer Checkmk Konfiguration anfertigen. Die Option finden Sie unter Setup -> Maintenance -> Backups. Die Anleitung zu Backups im Checkmk Handbuch erläutert die Details.
Beachten Sie, dass Sie Sicherungskopien nur wiederherstellen können, wenn die Checkmk Umgebung sowohl die gleiche Version als auch die gleiche Edition wie das Backup hat. Die darunterliegende Systemplattform ist hingegen für das Backup nicht relevant: Haben Sie zum Beispiel in der Vergangenheit Debian als Host-System genutzt, können Sie Checkmk problemlos auf RHEL wiederherstellen.
Checkmk kann Backups verschlüsseln und Sie sollten diese Funktion nutzen, wenn Sie den Zugriff auf den Speicherort der Backups nicht vollständig kontrollieren. Legen Sie zum Beispiel die Backups in die Cloud, haben Sie keine Kontrolle über das physische Speichermedium und sollten die Backups auf jeden Fall verschlüsseln.
Kommunikation der Checkmk Agenten mit TLS verschlüsseln
Da die Checkmk Entwickler stetig an der Verbesserung der Sicherheit arbeiten, bringt ein Wechsel auf eine neue Major-Version oftmals neue Sicherheitsmechanismen mit sich. Das jüngste Beispiel dafür ist der Agent Controller, der seit der Version 2.1 Teil der Checkmk Agenten ist. Er übernimmt den Transport der vom Agentenskript gesammelten Daten.
Das bietet beim Server-Monitoring unter anderem den Vorteil, dass Sie die Kommunikation zwischen den Agenten und dem Checkmk Server via TLS (Transport Layer Security) verschlüsseln können.
Damit die Verschlüsselung funktioniert, müssen Sie eine aktuelle Version des Agenten auf dem überwachten Server installieren und anschließend den Agenten in Checkmk registrieren. Die Agenten arbeiten vor der Registrierung immer im unverschlüsselten Legacy-Pull-Modus. Sie erkennen dies daran, dass der Monitoring-Service “Check_MK Agent” nach der Aufnahme des Monitoring-Hosts Ihres überwachten Servers diese Warnung in Checkmk zeigt.
Beispiel für die Registrierung des Linux-Agenten in Checkmk
In den meisten Fällen erfolgt die Registrierung über einen Befehl auf dem Terminal. Für einen Linux-Server sieht das zum Beispiel so aus:
- Installieren Sie den passenden Checkmk Agenten auf dem zu überwachenden Server und nehmen Sie den Server als Host in Checkmk auf.
- Öffnen Sie das Terminal auf Ihrem Linux-Server, den Sie überwachen möchten.
- Melden Sie sich als Root-User an.
- Nutzen Sie den Befehl cmk-agent-ctl register zur Registrierung.
cmk-agent-ctl register --hostname <Host-Name> \ --server <Checkmk Server> --site <Checkmk Site>\ --user automation --password <Automation-Secret>
- Sie können den Befehl kopieren, müssen aber diese Punkte anpassen:
- Nach hostname tragen Sie anstatt
<Host-Name>
den Namen des Linux-Servers ein . - Auf server folgt der Host-Server Ihrer Checkmk Instanz. Sie können hier auch die IP-Adresse angeben. Entfernen Sie in jedem Fall den Platzhalter
<Checkmk Server>
. - Hinteer site tragen Sie den Namen Ihrer Checkmk Instanz ein. Sie sehen diese im URL-Pfad der Weboberfläche, dort ist der Site-Name in der Regel das erste Wort.
- Nach user sollten Sie den Automationsbenutzer belassen, er dient genau für solche Zwecke.
- Hinter password fügen Sie das Passwort des Automationsbenutzers ein und entfernen den Platzhalter
<
Automation-Secret>
. Haben Sie die nötigen Angaben angepasst, bestätigen Sie den Befehl.
- Nach hostname tragen Sie anstatt
Für meinen Host “example-ubuntu.domain.net” sieht der Befehl so aus:
- Führen Sie den Befehl aus. Sind die Angaben korrekt, werden Sie aufgefordert, die Identität der Checkmk Instanz zu bestätigen.
- Bestätigen Sie mit “Y”, um den Vorgang abzuschließen.
In meinem Fall war die Registrierung erfolgreich, der Service “Check_MK Agent” hat seinen Status auf OK geändert.
Das Passwort für den Automationsbenutzer finden Sie unter Setup -> User. Klicken Sie dort auf das erste Symbol unter Actions. Dann können Sie das Passwort auswürfeln.
Standardmäßig unterstützt der Agent Controller die meisten gängigen Linux-Distributionen und Windows-Server. Die Details dazu finden Sie im Handbuchartikel zum Linux-Monitoring, beziehungsweise im Kapitel zum Windows-Monitoring.
Wenn Ihr Host keine direkte Verbindung zum Checkmk Server hat oder Sie mehrere Hosts auf einmal registrieren möchten, können Sie die Registrierung auch über einen beliebigen Host durchführen. Die nötigen Schritte finden Sie im Kapitel zur Auftragsregistrierung im Checkmk Handbuch.
Regelmäßige Prüfung der Freigaben und Konfiguration
Unter Setup -> Users finden Sie eine Übersicht über alle Checkmk Benutzerkonten und sollten regelmäßig deren Sicherheitsfreigaben überprüfen. Ziel ist die Umsetzung des Prinzips der geringsten Privilegien. Wenn ein Anwender oder eine Anwenderin zum Beispiel für einen Bereich nur Leserechte braucht, sollten Sie ihm oder ihr keine darüber hinausgehenden Rechte einräumen.
Dieses Prinzip gilt auch für die Zugriffsrechte von Konten, die Checkmk selbst zur Überwachung nutzt. Wenn Sie beispielsweise VMware überwachen, hinterlegen Sie in der VMware-Regel von Checkmk ein VMware-Zugangskonto für vCenter und/oder einen ESXi-Host, um die VMware-API abzurufen. Hier sollten Sie immer nur auf Read-only-Konten setzen, alles andere wäre ein Sicherheitsrisiko.
Seit der Checkmk Version 2.1 können Sie Ihre Security-Konfiguration in Checkmk prüfen, indem Sie unter Setup -> Maintenance -> Analyze configuration nach unten zum Punkt Security scrollen. Checkmk verschlüsselt Benachrichtigungen, wenn Sie zwischen Checkmk Sites transferiert werden (seit Version 2.1 standardmäßig aktiviert). Sollte jemand relevante Einstellungen geändert haben, sehen Sie das hier umgehend.
Checkmk mit HTTPS und 2FA absichern
Der Screenshot zeigt, dass Checkmk erkannt hat, dass die HTTPS-Verschlüsselung der Checkmk Benutzeroberfläche nicht aktiviert ist. Die Verwendung von HTTPS erhöht die Sicherheit und ist die Grundlage zur Nutzung von Zwei-Faktor-Authentifizierung (2FA) in Checkmk. Sie müssen dazu die VirtualHost-Konfiguration Ihres Checkmk Host-Servers anpassen. Sie finden die entsprechende Anleitung im Kapitel zu HTTPS im Checkmk Handbuch.
Wenn Sie 2FA anschließend nutzen möchten, brauchen Sie neben Ihrem Passwort einen Authenticator, der dem Internetstandard FIDO2/WebAuthn entspricht. Das kann zum Beispiel ein Yubikey sein. Die Anleitung zur Umsetzung finden Sie im Kapitel zur Zwei-Faktor-Authentifizierung im Checkmk Handbuch.
Fazit: Kleine Schritte, große Wirkung
IT-Teams müssen immer davon ausgehen, dass es zu einem Sicherheitsvorfall kommt. Deshalb ist es wichtig, dass Sie gerade beim Monitoring allgemeine Security-Best-Practices befolgen, wie der Einsatz von starken Passwörtern und regelmäßige Updates. Checkmk bietet darüber hinaus zusätzliche Sicherheitsmechanismen, wie TLS-Verschlüsselung der Agenten, die dabei helfen, das Schutzniveau noch weiter zu erhöhen. Dieser Blog fasst die wichtigsten Schritte zusammen und zeigt, wie Sie diese in Checkmk umsetzen.