1. Einleitung
Ein Single Sign-On auf die GUI von Checkmk mit Kerberos wird von Checkmk zwar nicht offiziell unterstützt, aber Sie können das recht einfach selbst einrichten. Wie das geht, zeigt Ihnen diese Anleitung.
Folgende Voraussetzungen müssen erfüllt sein, um die Konfiguration in Checkmk nachträglich auf SSO (Single Sign-On) mit Kerberos umzustellen:
Die Apache-Version ist 2.4 oder neuer.
Auf dem Checkmk-Server ist das Modul libapache-mod-auth-kerb (bzw. mod_auth_kerb unter RHEL/CentOS oder apache2-mod_auth_kerb unter SUSE) installiert.
Der Kerberos-Client ist auf dem Checkmk-Server installiert und konfiguriert.
Eine Keytab wurde — z.B. unter
/etc/krb5.keytab
— erstellt und darf von dem Site-User gelesen werden.Der Checkmk-Server wurde als Service Principal eingerichtet.
Der Browser der Clients ist für den Zugriff mittels Kerberos konfiguriert.
Die Checkmk-Instanz steht auf Cookie-Auth
Der letzte Punkt stellt sicher, dass sich Nutzer ohne SSO über die reguläre Login-Seite anmelden können. Sie können diese Möglichkeit auch deaktivieren. In diesem Fall gilt die Voraussetzung natürlich nicht.
2. Integration von Kerberos
Um Checkmk auf die Authentifizierung über Kerberos umzustellen, wechseln
Sie als Site User in das Verzeichnis des Apache und sichern die Datei
cookie_auth.conf
weg. Diese wird nicht mehr benötigt.
OMD[mysite]:~$ mv etc/apache/conf.d/auth.conf /tmp/
Danach wird die Datei auth.conf
gelöscht und neu geschrieben. Die
fettgedruckten Einträge sind lediglich Beispiele und können Sich von
Ihrer Konfiguration unterscheiden. Passen Sie diese daher entsprechend Ihrer
Umgebung an:
Define SITE *MyCheckmkSite*
Define REALM *MyRealm.org*
<IfModule !mod_auth_kerb.c>
LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so
</IfModule>
<Location /${SITE}>
Order allow,deny
Allow from all
AuthType Kerberos
AuthName "Checkmk Kerberos Login"
KrbServiceName HTTP
KrbMethodNegotiate on
KrbMethodK5Passwd off
KrbLocalUserMapping on
KrbSaveCredentials on
# Use Kerberos auth only in case there is no Checkmk authentication
# cookie provided by the user
Require expr %{HTTP_COOKIE} =~ /auth_/
Require expr %{REQUEST_URI} = "/${SITE}/check_mk/register_agent.py"
Require expr %{QUERY_STRING} =~ /(_secret=|auth_|register_agent)/
Require valid-user
# Environment specific: Path to the keytab and the realm
Krb5Keytab */etc/krb5.keytab*
KrbAuthRealm ${REALM}
# When Kerberos auth fails, show the login page to the user
ErrorDocument 401 /${SITE}/check_mk/login.py
</Location>
# These files are accessible unauthenticated (login page and needed ressources)
<LocationMatch /${SITE}/(omd/|check_mk/(images/.*\.png|login\.py|.*\.(css|js)))>
Order allow,deny
Allow from all
Satisfy any
</LocationMatch>
3. Auf Cookies basierende Logins
Wenn Sie nur noch Logins über SSO zulassen möchten, deaktivieren Sie das Cookie-Auth. Achten Sie darauf, dass Sie diesen Wert nur ändern können, wenn die Instanz gestoppt ist:
OMD[mysite]:~$ omd config set MULTISITE_COOKIE_AUTH off
Sie können dann entsprechend auch in der auth.conf
die folgende
Zeile weglassen oder auskommentieren:
# Require expr %{HTTP_COOKIE} =~ /auth_/
4. Fehlerdiagnose
Mit den folgenden Kommandos können Sie prüfen, ob das Kerberos-Setup an sich funktioniert:
root@linux# kinit -p username
root@linux# klist