Apache Authentifizierung via AD/LDAP


Manchmal möchte man eine Webanwendung (in diesem Beispiel das Nagios Webinterface) absichern. Manchmal sogar mittels einem Active Directory im Hintergrund, was dann den schönen Vorteil hat, dass Benutzer sich nicht nochmal neue Benutzernamen und Passwörter merken müssen.

Mit dem Modul authnz_ldap geht das ganz gut.

Noch besser: Man kann sogar die verschiedenen Authentifizierungsarten mischen, also Passworddatei und AD (bzw. LDAP).

Mit folgender Konfiguration ist mir dies gelungen:

In der Datei /etc/apache2/conf.d/nagios.conf steht:

AuthName „Nagios Access“
AuthType Basic
# Neue AD-Authentication (SSO), 13.1.2011, Dietmar Schurr
AuthBasicProvider file ldap
AuthBasicAuthoritative off
AuthzLDAPAuthoritative off
AuthLDAPURL „ldap://meinadserver.beispiel.com:389/OU=Company,DC=Abteilung,DC=intra?cn?sub?objectClass=*“
AuthLDAPBindDN „CN=ldapuser,OU=Abteilung,DC=Company“
AuthLDAPBindPassword „passwort“
AuthUserFile /etc/nagios/htpasswd.users
Require valid-user

Erläuterung:
Mit der Zeile AuthBasicProvider file ldap wird festgelegt, daß zwei Möglichkeiten zur Authentifizierung zugelassen sind, nämlich file und ldap.
Mit den zwei folgenden Zeilen wird festgelegt, dass keine davon exklusiv greift, d.h. wird ein Benutzer nicht in file gefunden wird er in ldap gesucht und umgekehrt. Die folgenden drei Zeilen legen fest wie sich Apache mit LDAP verbindet (AuthLDAPURL). Dazu ist ein Benutzer (AuthLDAPBindDN) mit einem Passwort (AuthLDAPBindPassword) erforderlich. Mit der Zeile AuthUserFile /etc/nagios/htpasswd.users wird Apache mitgeteilt, in welcher Datei Benutzerdaten liegen.
Somit lässt sich also eine Authentifizierung über eine Passwortdatei parallel zur Authentifizierung mittels Active Directory (AD) erreichen. Weitere Informationen finden sich unter den beiden folgenden Links: Apache-Doku und Apache Linux Tutorial
Diese Konfiguration kommt ggf. mehrfach in folgenden Dateiein vor: nagios.conf, nagios-pnp.conf und nagvis.conf
Unabhängig davon muss ein Kontakt in der Datei /etc/nagios/objects/contacts.cfg definiert werden, damit dieser Kontakt (entspricht einem Benutzer) erweiterte Rechte und Benachrichtigungen von Nagios erhalten kann.

Ergänzung (7.2.2013):

Versucht man sich mit einem AD-Server zu verbinden, dann sieht das ggf. etwas anders aus. Hier ein Beispiel aus der Praxis:

# Auth. mit LDAP
AuthName "Nagios Anmeldung(Benutzer in Kleinbuchstaben)"
AuthType Basic
# Anmeldung AD
AuthBasicProvider ldap file
AuthBasicAuthoritative off
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://ldap.company.de:389/OU=Benutzer,DC=de,DC=it,DC=gruppe?sAMAccountName?sub?(objectClass=*)"
#AuthLDAPBindDN  "OU=Benutzer,DC=de,DC=it,DC=company"
AuthLDAPBindDN  cn=LDAPBindUser,OU=Serviceaccounts,OU=Administration,DC=de,DC=it,DC=company
AuthLDAPBindPassword binduserpassword
AuthUserFile /usr/local/nagios/etc/htpasswd.users
Require valid-user

Hier mit wird ein gültiger AD-User zugelassen. Alternativ wird ein User aus der Datei /usr/local/nagios/etc/htpasswd.users zugelassen.
Achtung: AD unterscheidet offenbar nicht zwischen groß- und klein geschriebenen Benutzernamen. Beide werden erkannt und zugelassen. Nagios unterscheidet jedoch und möchte den User so haben wie in den Konfigurationsdateien (contacts.cfg) definiert. Es kann also passieren, daß ein User trotz erfolgreicher Anmeldung im Nagios keine Rechte hat. Deshalb der Hinweis im Anmeldedialog betreffend die Kleinbuchstaben.