Nagios Sicherheitsvorkehrungen


Einleitung

Dies ist ein Versuch einen kurzen Überblick über einige Sicherheitsaspekte zu schaffen, die bei der Nagios Installation Berücksichtigung finden sollten, um Nagios nicht von vorne herein in einer unsicheren Art aufzusetzen. Diese Dokument ist neu. Wenn also jemand weiterführende Hinweise oder Bemerkungen zu den Sicherheitsaspekten von Nagios angeben kann, so bitte ich darum mir diesbezüglich eine kleine Notiz zukommen zu lassen nagios@nagios.org

Lassen Sie Nagios nicht unter "root" laufen!

Nagios muss nicht unter "root" betrieben werden, deshalb verzichten Sie darauf. Wenn Nagios im Rahmen des Bootvorganges über ein Initialisierungs-Skript gestartet wird, kann es beendet werden um die Privilegien zurückzunehmen und unter zu Hilfenahme der nagios_user und nagios_group Anweisungen über das Haupt-Konfigurationsfile unter einem(r) anderen(r) Benutzer/Gruppe gestartet werden.

Wenn es notwendig ist Event Handler oder Plugins durchzuführen die Root-Rechte erfordern, soll versucht werden dafür sudo zu verwenden.

Durchführung von Befehlen externer Programme "external commands" nur wenn unbedingt notwendig ermöglichen

Standardmäßig ist die Möglichkeit der Durchführung von Befehlen externer Programme (external commands) deaktiviert. Dies Maßnahme schützt den Administrator davor das freigeschaltete Command-Interface nach der Nagios Installation unwissentlich "anderen" zu überlassen ... Wenn der Einsatz von Event Handlern oder die Verwendung der Befehlseingabemöglichkeit über das Web-Interface geplant ist, muss die Möglichkeit der Durchführung von Befehlen externer Programme "external commands" freigeschaltet werden. Ist hingegen nicht daran gedacht Event Handler einzusetzen oder die Befehlseingabemöglichkeit des Web-Interfaces zu nutzen, empfehle ich eindringlich "external commands" deaktiviert zu lassen.

Setzen Sie die richtigen Zugriffsrechte für das External Command File

Wurde die Möglichkeit der Durchführung von Befehlen externer Programme "external commands" freigeschaltet, müssen die richtigen Zugriffsrechte für das Verzeichnis /usr/local/nagios/var/rw vergeben werden. Lediglich der Nagios User (gebräuchlich nagios) und der Web-Server User (gebräuchlich nobody) benötigen entsprechende Schreibrechte. Das beste ist Nagios auf einem Rechner zu installieren, der dezidiert nur dem Monitoring und anderen Administrator Tätigkeiten dient und nicht von anderen öffentlichen Accounts genutzt wird.

Wird Nagios auf einem öffentlichen Multi-User Rechner installiert, kann die Schreibrechtevergabe an den Web-Server User für die Command Files zu Sicherheitsproblemen führen. Schlussendlich ist es nicht beabsichtigt jedem Benutzer des Systems die Steuerung von Nagios über das External Command File zu ermöglichen. In diesem Fall schlage ich vor die Schreibrechte auf das Command File nur dem Nagios User zu erteilen und ähnliches wie CGIWrap zu verwenden um die CGIs unter dem Nagios User anstelle des Users nobody ablaufen lassen zu können. Siehe den unten angeführten Hinweis über die Verwendung von CGIWrap.

Anweisungen darüber wie man die Rechte für die External Command Files setzen kann, sind hier zu finden.

Authentifizierungs-Aufforderung für CGIs

Eindringlich empfehle ich den Zugriff auf die CGIs nur über eine entsprechende Authentifizierung zu ermöglichen. Ist dies beabsichtigt, sind in der Dokumentation die Hinweise über die Standard-Rechte von authentisierten Benutzern zu beachten. Hinweise darüber wie man eine Authentifizierung aktiviert und die entsprechenden Rechte konfigurieren kann findet man hier. Wird die CGI Authentifizierung über die use_authentication Anweisung im CGI Config File deaktiviert, weist command CGI alle Versuche Befehle über das External Command File abzusetzen zurück. Schlussendlich ist es nicht beabsichtigt es der ganzen Welt zu gestatten Nagios zu bedienen, oder?

Lassen Sie CGI-Programme unter Nagios Userrechten laufen

Wird Nagios auf einem öffentlichen Rechner oder auf einem Multi-User System betrieben empfehle ich

Verwenden Sie bei Command Definitions "Full Path" Angaben

Werden Commands definiert, ist sicherzustellen, dass jeweils die umfassenden Pfade full path für jedes Skript oder Binary das ausgeführt wird angegeben werden.

Verbergen Sie mit Hilfe von $USERn$ Makros sensitive Informationen

CGIs lesen das Main Config File sowie die Object Config File(s). Es ist nicht angebracht irgendwelche sensitive Informationen (Benutzernamen, Passworte, usw.) darin zu speichern. Um Benutzernamen und/oder Passworte in einer Command Definition zu verarbeiten können $USERn$ Makros genutzt werden um diese zu verbergen. $USERn$ Makros können in einem oder in mehreren Resource Files definiert werden. CGIs versuchen nicht den Inhalt von Resource Files zu lesen, deshalb können sie von den Rechten her restriktiver gehandhabt werden (600 oder 660). Wie $USERn$ Makros definiert werden können ist im resource.cfg File der Nagios Basis Distribution ersichtlich.