Checkmk
to checkmk.com

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:

~/etc/apache/conf.d/auth.conf
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>

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:

~/etc/apache/conf.d/auth.conf
#  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
Auf dieser Seite