Kerberos für Nginx einrichten

Typischerweise wird Kerberos für den Apache Webserver eingerichtet. Falls Sie Nginx betreiben möchten, ohne parallel einen Apache Webserver aufzusetzen, der nur für die Kerberos Authentifizierung im Verzeichnis /kerb/ zuständig ist, können Sie wie folgt vorgehen.

save

Diese Anleitung setzt mindestens Ubuntu 26.04 voraus.

Der Nginx Webserver benötigt die Erweiterung um das Modul SPNEGO HTTP Authentication. Dieses ist in der Lage die Kerberos Authentifizierung ähnlich zu Apache durchzuführen. Installieren Sie hierzu das Paket libnginx-mod-http-auth-spnego und zusätzlich kerb5-user, um auf dem Server Keberos Tools für z. B. Tests zu besitzen.

apt-get install libnginx-mod-http-auth-spnego krb5-user
wb_incandescent

Die Installation sollte in /etc/nginx/module-enabled/ eine entsprechende spnego Konfiguration anlegen, welche das Modul lädt. Stellen Sie sicher, dass in Ihrer Nginx Konfiguration die Konfigurationsdateien aus diesem Verzeichnis geladen werden (siehe /etc/nginx/nginx.conf).

include /etc/nginx/modules-enabled/*.conf;

Nun muss für das Verzeichnis /kerb/ Kerberos aktiviert werden. Dies wird in Ihrer Nginx Konfiguration über einen entsprechenden location Block definiert.

location /kerb/ { auth_gss on; auth_gss_keytab /etc/krb5.keytab; auth_gss_allow_basic_fallback on; auth_gss_force_realm on; proxy_set_header X-Remote-User $remote_user; #include php.conf; # Wird nur benötigt, falls Ihr Server nach Vorbild des EGOCMS Images eingerichtet ist }

Die Kerberos Authentifizierung erfordert zwei Dateien:

  • /etc/krb5.conf
  • /etc/krb5.keytab

Die Kerberos Konfigurationsdatei krb5.conf sieht beispielsweise so aus (stellen Sie sicher, dass Ihre Realm Domain in Großbuchstaben geschrieben ist):

[libdefaults] default_realm = REALM.LOCAL dns_lookup_kdc = false dns_lookup_realm = false rdns = false forwardable = true [realms] REALM.LOCAL = { kdc = kerb.example.com admin_server = kerb.example.com } [domain_realm] .example.com = REALM.LOCAL example.com = REALM.LOCAL
wb_incandescent

Erklärung:

  • REALM.LOCAL: Ihre Realm Domain (in Großbuchstaben)
  • kerb.example.com: URL/IP zum Active Directory Server.
  • example.com: Die Domain Ihrer Webseite.
check

Die Kerberos Keytab Datei krb5.keytab wird analog zu den Anleitungen generiert, die auch für einen Apache Webserver gelten.