Single Sing-On mit Kerberos

Check_MK Manual

Suche im Handbuch

Dieser Artikel ist noch nicht fertig und nur ein Entwurf!

Wichtig: Dieser Artikel stellt nur nur den bisherigen Kenntnissstand dar und ist daher mit Vorsicht zu genießen ist! Zwar gibt es bereits Check_MK-Instanzen, welche erfolgreich mit dieser Konfiguration laufen. Allerdings wurden hier bisher keine Umfangreichen Tests duchgeführt. Kerberos wird von Check_MK, trotz dieser Anleitung, offiziell nicht unterstützt.

Folgende Voraussetzungen müssen erfüllt sein, um die Konfiguration in Check_MK nachträglich auf SSO (Single Sign On) mit Kerberos umzustellen:

  • Die Apache-Version ist 2.4 oder neuer.
  • Auf dem Check_MK-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 Check_MK-Server installiert und konfiguriert.
  • Eine Keytab wurde erstellt und darf von dem Site-User gelesen werden.
  • Der Check_MK-Server wurde als Service Principal eingerichtet.
  • Der Browser der Clients ist für den Zugriff mittels Kerberos konfiguriert.
  • Die Check_MK-Instanz steht auf Cookie-Auth

Der letzte Punkt stellt sicher, dass sich Nutzer ohne SSO über die reguläre Loginseite anmelden können. Sie können diese Möglichkeit auch deaktiveren. In diesem Fall gilt die Voraussetzung natürlich nicht.

1. Integration von Kerberos

Um Check_MK 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. Passen Sie die benutzten Pfade entsprechend Ihrer Umgebung an und ersetzen Sie den KrbAuthRealm und den Wert der Variable SITE entsprechend Ihrer Umgebung:

~/etc/apache/conf.d/auth.conf
Define SITE mysite

<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 "Check_MK Kerberos Login"
  KrbServiceName HTTP
  KrbMethodNegotiate on
  KrbMethodK5Passwd off
  KrbLocalUserMapping on
  KrbSaveCredentials on

  # Use Kerberos auth only in case there is no Check_MK 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/apache2/krb5.keytab.f-mk-mon-p01
  KrbAuthRealm MYCOMPANY.ORG

  # 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>

2. Cookie basierte 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
OMD[mysite]:~$ 

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_/