-
Notifications
You must be signed in to change notification settings - Fork 154
Suggestions for improving kerberos.asciidoc (2.4.0) #107
Description
Hallo,
ggf. könnte das aktualisiert werden -> das genannten mod_auth_kerb Modul is deprecated und in neueren Versionen z.B. Ubuntu 24.04. nicht mehr verfügbar, es wurde durch mod_auth_gssapi ersetzt was sehr ähnlich funktioniert.
Es funktioniert mit mod_auth_gssapi und ich hätte hier folgende Anleitung die man vlt. angepasst verwenden könnte.
Checkmk Kerberos SSO (mod_auth_gssapi) – Zusammenfassung
Grundlagen
mod_auth_kerb existiert nicht mehr → mod_auth_gssapi verwenden
Doku: https://docs.checkmk.com/latest/en/kerberos.html
Wichtige Stolpersteine
- cookie_auth.conf
MUSS disabled sein
Grund:
Satisfy any umgeht Auth → kein 401 → Browser startet kein Kerberos → immer Login-Seite, kein SSO
- Kein 401 ⇒ kein SSO
Kerberos funktioniert nur, wenn Apache 401 + WWW-Authenticate: Negotiate liefert
Redirects (301/302) verhindern Kerberos-Handshake
Checkmk User-Pflicht
Kerberos allein reicht nicht
User muss in Checkmk existieren (LDAP Sync z.B.)
Fehlt der User:
Apache: Auth OK
Checkmk: nicht existenter User → Redirect zur Login-Seite
GSSAPI Modul installieren:
z.B. Ubuntu
apt-get install libapache2-mod-auth-gssapiApache Konfiguration
Datei:
/opt/omd/sites/${SITE}/etc/apache/conf.d/auth.conf
Define SITE mysite
Define REALM MYREALM.COM
Define SERVICENAME myserver.mydomain.com
Define KEYTAB /opt/omd/sites/${SITE}/etc/apache/checkmk.keytab
# Optional: Debugging
#LogLevel auth_gssapi:debug
#LogFormat "%h %u %{REMOTE_USER}e %r %>s" withuser
#CustomLog /opt/omd/sites/${SITE}/var/log/apache/access-user.log withuser
<IfModule !mod_auth_gssapi.c>
LoadModule auth_gssapi_module /usr/lib/apache2/modules/mod_auth_gssapi.so
</IfModule>
<Location /${SITE}>
<If "! %{HTTP_COOKIE} =~ /(^|;\s*)auth_${SITE}/
&& ! %{REQUEST_URI} = '/${SITE}/check_mk/register_agent.py'
&& ! %{REQUEST_URI} = '/${SITE}/check_mk/deploy_agent.py'
&& ! %{REQUEST_URI} = '/${SITE}/check_mk/run_cron.py'
&& ! %{REQUEST_URI} = '/${SITE}/check_mk/restapi.py'
&& ! %{REQUEST_URI} = '/${SITE}/check_mk/webapi.py'
&& ! %{REQUEST_URI} = '/${SITE}/check_mk/automation.py'
&& ! %{REQUEST_URI} -strmatch '/${SITE}/check_mk/api/'
&& ! %{REQUEST_URI} = '/${SITE}/check_mk/ajax_graph_images.py'
&& ! %{QUERY_STRING} =~ /(secret=|auth|register_agent)/
&& ! %{REQUEST_URI} =~ m#^/${SITE}/(omd/|check_mk/((images|themes)/..(png|svg)|login.py|..(css|js)))# ">
Order allow,deny
Allow from all
Require valid-user
AuthType GSSAPI
AuthName "Checkmk GSSAPI Login"
GssapiCredStore keytab:${KEYTAB}
GssapiAllowedMech krb5
GssapiLocalName On
GssapiBasicAuth Off
# Fallback bei Kerberos-Fehler
ErrorDocument 401 '<html>
<head>
<meta http-equiv="refresh" content="1; URL=/${SITE}/check_mk/login.py">
</head>
<body>
Kerberos authentication failed, redirecting to login page.
<a href="/${SITE}/check_mk/login.py">Click here</a>.
</body>
</html>'
</If>
</Location>
# Unauthentifizierte Ressourcen (Login + Assets)
<LocationMatch /${SITE}/(omd/|check_mk/(images/..png|login.py|.*.(css|js)))>
Order allow,deny
Allow from all
Satisfy any
</LocationMatch>
Danke!