Einrichten von NTLM/Kerberos SSO Single Sign-On für UBUNTU/RHEL/CentOS
Übersicht
Die Kerberos-SSO-Erweiterung erleichtert den Erhalt eines Kerberos-Ticket-Granting-Tickets (TGT) aus dem Active Directory Ihres Unternehmens oder einer anderen Identitätsanbieterdomäne und ermöglicht Benutzern die Authentifizierung bei Ressourcen wie Websites, Anwendungen und Dateiservern.
Schritte zur Integration von Kerberos SSO LDAP für Single Sign-On (SSO)
Schritt 1: Installieren Sie Kerberos-Clientbibliotheken auf dem Webserver
Für UBUNTU:
- Verwenden Sie den folgenden Befehl auf Ihrem Terminal, um die Kerberos-Clientbibliotheken zu installieren.
sudo apt-get install krb5-user
Für RHEL/CentOS:
- Verwenden Sie den folgenden Befehl auf Ihrem Terminal, um die Kerberos-Clientbibliotheken zu installieren.
yum install krb5-workstation krb5-libs krb5-auth-dialog
Schritt 2: Konfigurieren der Active Directory-Domäne in der Kerberos-Konfigurationsdatei
Die folgenden Schritte werden verwendet, um die Active Directory-Domänen in der Kerberos-Konfigurationsdatei zu konfigurieren:
- Öffnen und bearbeiten Sie die Datei /etc/krb5.conf.
- Fügen Sie den folgenden Konfigurationsausschnitt zur Datei krb5.conf hinzu.
- Speichern Sie die Datei.
EXAMPLE.ORG= { kdc = <AD DOMAIN CONTROLLER IP/DNS> :88 }
Anmerkungen: Ersetzen Sie die IP/DNS des AD-DOMAIN-CONTROLLERS mit Ihrer IP/DNS-Adresse. Stellen Sie sicher, BEISPIEL.ORG sollte in Großbuchstaben geschrieben werden.
Ersetzen Sie die BEISPIEL.ORG mit dem Active Directory-Domänennamen.
Und stellen Sie sicher, dass der Port 88 auf dem AD-Domänencontroller von diesem Server aus zugänglich ist.
Schritt 3: Installieren Sie das auth_kerb-Modul für Apache
Für UBUNTU:
- Verwenden Sie den folgenden Befehl, um das auth_kerb-Modul für Apache zu installieren.
- Sobald das Modul auth_kerb installiert ist, muss es mit dem folgenden Befehl aktiviert werden.
- Starten Sie Apache nach der Aktivierung neu, damit es wirksam wird.
sudo apt-get install libapache2-mod-auth-kerb
a2enmod auth_kerb
Für RHEL/CentOS:
- Verwenden Sie den folgenden Befehl, um das auth_kerb-Modul für Apache zu installieren.
- Starten Sie Apache neu, damit es wirksam wird.
yum install mod_auth_kerb
Schritt 4: Keytab-Datei auf dem AD-Domänencontroller erstellen
- Führen Sie auf dem AD-Domänencontroller den folgenden Befehl aus, um die Keytab-Datei zu erstellen.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.ORG -pass PASSWORD
-mapuser <svc@EXAMPLE.ORG> -Ptype KRB5_NT_PRINCIPAL -out "<PATH>\spn.keytab"
Anmerkungen: Stellen Sie sicher, dass EXAMPLE.ORG in Großbuchstaben geschrieben ist.
| Server-Hostname: | Dies ist der Hostname der auf dem Server gehosteten Site. |
| Server-Hostname: | Dies ist der Hostname der auf dem Server gehosteten Site. |
| BEISPIEL.ORG: | Es handelt sich um den Active Directory-Domänennamen. |
| PASSWORT: | Es handelt sich um das Passwort des oben verwendeten Dienstkontos. |
| svc@EXAMPLE.ORG: | Es handelt sich um ein Dienstkonto im Active Directory. |
| Pfad: | Pfad zu einem lokalen Speicherort, an dem die Keytab-Datei gespeichert wird. |
- Für das Dienstkonto gelten einige Voraussetzungen:
- Für das Kontokennwort sollte ein Kennwort festgelegt sein Nicht abgelaufen.
- Dem Konto sollte für die Delegierung vertraut werden.
- Kopieren Sie die Keytab Datei vom AD-Domänencontroller auf den auf Apache gehosteten Webserver übertragen.
Anmerkungen: Der obige Befehl erstellt eine Keytab-Datei. Sie muss auf dem Server abgelegt werden. Der Benutzer, der Apache ausführt, sollte vollen Zugriff auf diese Datei haben. Der Benutzer sollte über die Berechtigung für die Keytab-Datei verfügen.
Schritt 5: Konfigurieren von Kerberos SSO für das Site-Verzeichnis
Für UBUNTU:
- Bearbeiten Sie die Datei /etc/apache2/sites-enabled/000-default.conf.
- Fügen Sie den folgenden Abschnitt im Verzeichnis der Site hinzu.
<Directory "/placeholder"> AuthType Kerberos KrbAuthRealms EXAMPLE.ORG KrbServiceName HTTP Krb5Keytab <PATH TO KEYTAB> KrbMethodNegotiate on KrbMethodK5Passwd on require valid-user </Directory>
Für RHEL/CentOS:
- Bearbeiten Sie die Konfigurationsdatei auth_kerb.conf im Ordner /etc/httpd/conf.d/.
- Fügen Sie den folgenden Abschnitt im Verzeichnis der Site hinzu.
LoadModule auth_kerb_module /usr/lib/apache2/modules/mod_auth_kerb.so <Directory "/placeholder"> AuthType Kerberos KrbAuthRealms EXAMPLE.ORG KrbServiceName HTTP Krb5Keytab <PATH TO KEYTAB> KrbMethodNegotiate on KrbMethodK5Passwd on require valid-user </Directory>
Anmerkungen: Stellen Sie sicher, dass EXAMPLE.ORG in Großbuchstaben geschrieben ist.
Im Folgenden sind die Komponenten der obigen Konfiguration aufgeführt:
| BEISPIEL.ORG: | Dies ist die Active Directory-Domäne, wie in krb5.conf konfiguriert. |
| PFAD ZUM KEYTAB: | Zugänglicher Pfad zum Keytab auf diesem Server. |
- Nach dieser Konfiguration muss Apache neu gestartet werden, damit die Änderungen wirksam werden.
Problemlösung
Dies sind die häufigsten Fehlermeldungen:
- Falsche Dateisystemberechtigungen für /etc/krb5.keytab, dh für den Linux-Benutzer des Webservers nicht lesbar.
- Um Dateisystemberechtigungen zu ändern, verwenden Sie $ chmod 400 Dateiname.
- Fehlender Dienstprinzipal (möglicherweise HTTP/webserver.yourdomain.com@YOURDOMAIN.COM) in /etc/krb5.keytab.
- Die Website befindet sich nicht in der Zone „Lokales Intranet“ im IE oder der IE ist falsch konfiguriert, siehe Authentifizierung verwendet NTLM statt Kerberos.
- Falsches KVNO- oder Maschinenkennwort in /etc/krb5.keytab → Erstellen Sie die Schlüsseltabelle mit den richtigen Informationen neu.
- Problem mit dem lokalen Kerberos-Ticket-Cache auf Ihrer Arbeitsstation. Verwenden Sie Kerbtray.exe, um den Ticket-Cache zu leeren und die Website erneut im IE zu öffnen.
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Permission denied).
gss_acquire_cred() failed: Unspecified GSS failure. Minor code may provide more information (, Key table entry not found).
Warning: received token seems to be NTLM, which isn't supported by the Kerberos module. Check your IE configuration.
gss_accept_sec_context() failed: An unsupported mechanism was requested (, Unknown error)
gss_accept_sec_context() failed: Unspecified GSS failure. Minor code may provide more information (, ).
