CGI Authentifizierung und -Autorisierung


Bemerkungen

Die gegenständlichen Angaben habe ich unter der Annahme getroffen, dass Sie auf Ihrem Rechner als Webserver einen Apache betreiben. Betreiben Sie einen anderen Webserver müssen Sie die für diesen entsprechenden Anpassungen vornehmen.

Definitionen

Im Rahmen dieser Beschreibung verwende ich folgende Begriffe die verstanden werden sollten ...

Inhaltsverzeichnis

Konfiguration der Webserver Authentifizierung
Anlegen von autorisierten Benutzern
Aktivieren der Authentifizierung/Autorisierung Funktion für CGI Programme
Standard Zugriffsrechte auf CGI Informationen
Vergabe zusätzlicher Zugriffsrechte auf CGI Informationen
Authentifizierung auf gesicherten (secure) Webservern

Konfiguration der Webserver Authentifizierung

Der erste Schritt um einen Webserver für eine Authentifizierung zu konfigurieren ist sich zu vergewissern, ob das Webserver Konfigurationsfile (z.B. httpd.conf) die 'AuthOverride AuthConfig' Anweisung für das Nagios CGI-BIN Directory beinhaltet. Wenn nicht, ist diese Anweisung, so ähnlich wie in der Folge dargestellt, dem Webserver Konfigurationsfile hinzuzufügen. Beachten Sie, dass nach der Änderung der Webserver durchgestartet werden muss um die Änderung wirksam werden zu lassen.

<Directory /usr/local/nagios/sbin>
AllowOverride AuthConfig
order allow,deny
allow from all
Options ExecCGI
</Directory>

Wenn Sie eine Authentifizierung auch für den Zugriff auf die HTML Seiten von Nagios einrichten wollen, ergänzen Sie ebenso dem folgenden ähnlich das Webserver Konfigurationsfile dem

<Directory /usr/local/nagios/share>
AllowOverride AuthConfig
order allow,deny
allow from all
</Directory>

Der zweite Schritt besteht darin ein File mit dem Namen .htaccess in die Verzeichnis-Root Ihres CGI Verzeichnisses (optional auch in Ihr HTML Verzeichnis) von Nagios (gewöhnlich /usr/local/nagios/sbin, sowie /usr/local/nagios/share). Die Inhalte der Files sollten in etwa wie folgt aussehen ...

AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd.users
require valid-user

Anlegen von autorisierten Benutzern

Nachdem Sie nun den Webserver so konfiguriert haben, dass eine Authentifizierung erforderlich ist um auf die CGI Programme zugreifen zu können, müssen Sie nun Benutzer anlegen, die diese CGI Programme aufrufen dürfen. Dies geschieht über den Befehl htpasswd der von Apache mitgeliefert wird.

Der Aufruf des folgenden Befehls legt ein neues File mit dem Namen htpasswd.users im Verzeichnis /usr/local/nagios/etc an. Auch erzeugt dieser Befehl in diesem File einen Benutzerkennung/Passwort Eintrag für den Benutzer nagiosadmin. Sie werden nach der Angabe eines Passwortes aufgefordert, das zur Webserver-Authentifizierung für den Benutzer nagiosadmin dienen soll.

htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Sie können solange mit dem Anlegen von Benutzern fortfahren, bis sie für all jene denen Sie das Zugriffsrecht auf die CGI Programme gestatten wollen einen Account angelegt haben. Verwenden Sie folgenden Befehl um weitere Benutzer anzulegen, ersetzen Sie <username> mit der gewünschten Benutzerkennung die Sie hinzufügen wollen. Beachten Sie, dass die Option -c hier nicht verwendet wird, da Sie ja bereits das File angelegt und initialisiert haben.

htpasswd /usr/local/nagios/etc/htpasswd.users <username>

Nun gut, Sie haben fürs Erste alles Notwendige getan. Wenn Sie über Ihren Webserver auf die Nagios CGI-Programme zugreifen wollen, sollten Sie nach einer Benutzerkennung und einem Passwort gefragt werden. Wenn Sie hier an dieser Stelle Probleme dabei haben die Authentifizierung zum Laufen zu bringen, suchen Sie nach weiteren Informationen in der Dokumentation Ihres Webservers.

Aktivieren der Authentifizierung/Autorisierung Funktion für CGI Programme

Als nächstes das Sie tun sollten ist sich zu vergewissern, ob die CGI-Programme so konfiguriert wurden, dass der Zugriff von Benutzern auf Information und/oder Befehle über die Authentifizierungs- und Autorisierungsfunktionalität festgelegt wird. Das passiert über das Setzen der use_authentication Variable im CGI Configuration File auf einen Wert der nicht 0 (Null) ist. Beispiel:

use_authentication=1

Nun gut, Sie haben die Basiseinstellungen für die Authentifizierung/Autorisierungsfunktionalität für die CGI-Programme vorgenommen.

Standard Zugriffsrechte auf CGI Informationen

So, welche Default Zugriffsrechte besitzen nun Benutzer wenn sie über Authentifizierung/Autorisierungsmechanismen auf CGI-Informationen zugreifen?

CGI Daten Authentifizierte Kontaktpersonen * Andere Authentifizierte Benutzer *
Host Status Information Ja Nein
Host Configuration Information Ja Nein
Host History Ja Nein
Host Notifications Ja Nein
Host Commands Ja Nein
Service Status Information Ja Nein
Service Configuration Information Ja Nein
Service History Ja Nein
Service Notifications Ja Nein
Service Commands Ja Nein
All Configuration Information Nein Nein
System/Process Information Nein Nein
System/Process Commands Nein Nein

Authentifizierte Kontaktpersonen * sind berechtigt auf alle Service Informationen zuzugreifen für die sie als Kontaktpersonen definiert sind (aber nicht für jene Services bei denen sie nicht als Kontaktperson definiert sind) ...

Authentifizierte Kontaktpersonen * sind berechtigt auf alle Host Informationen zuzugreifen für die sie als Kontaktpersonen definiert sind (aber nicht für jene Hosts bei denen sie nicht als Kontaktperson definiert sind) ...

Wichtig ist zu beachten, dass per Default niemand für folgende Vorgänge autorisiert ist ...

Wenn Sie auf alle diese Informationen zugreifen wollen, müssen Sie sich, wie folgt beschrieben, alle zusätzlich erforderlichen Rechte zuweisen (und möglicherweise auch anderen Benutzern) ...

Vergabe zusätzlicher Zugriffsrechte auf CGI Informationen

Sie können authentifizierten Kontaktpersonen oder anderen authentifizieren Benutzern die Rechte auf zusätzliche über CGI-Programme erzeugte Informationen einräumen, indem Sie verschiedene Autorisierungsvariable im CGI configuration file setzen. Ich bin mir darüber im Klaren, dass es die verfügbaren Optionen nicht gestatten wirklich spezifisch Zugriffsrechte zu verwalten, aber es ist besser als nichts ...

Zusätzliche Zugriffsrechte können Benutzern gegeben werden, indem man Ihre Kennungen den folgenden Variablen im CGI Configuration File hinzufügt ...

Autorisierungsvoraussetzungen für CGI-Programme

Wenn Sie über die notwenigen Zugriffsrechtedefinitionen, die notwendig sind um auf die jeweiligen CGI-Informationen zugreifen zu können etwas verwirrt sind, informieren Sie sich über die jeweilig notwendigen Autorisierungsvoraussetzungen für jedes hier beschriebene CGI-Programm.

Authentifizierung auf gesicherten (secure) Webservern

Wenn sich Ihr Webserver in einer gesicherten Domäne befindet (z.B., hinter einer Firewall) oder wenn Sie SSL benutzen, können Sie eine Default-Benutzerkennung einrichten, die für den Zugriff auf die CGI-Programme verwendet werden kann. Das geschieht über die Definition der Option default_user_name im CGI Configuration File. Über diese angelegte Default-Benutzerkennung die Zugriff auf die CGI-Programme hat, können Sie Benutzern gestatten auf Informationen zuzugreifen, ohne sich gegen den Webserver authentifizieren zu müssen ... Sie können diese Vorgehensweise benutzen um einer sonst notwendigen Basis-Webserver-Authentifizierung entgegenzutreten, da diese Passwörter unverschlüsselt im Klartext über das Internet gesendet werden.

Wichtig: Definieren Sie keine Default-Benutzerkennung, solange Sie keinen abgesicherten (secure) Webserver betreiben. Jeder der Zugriff auf die CGI-Programme hat, muss sich auf irgendeine Art zuvor authentifiziert haben! Wenn Sie diese Variable definieren, hat jeder, auch der der sich nicht am Webserver authentifiziert hat, all jene Rechte die Sie diesem Default-Benutzer erteilt haben!