Suchergebnisse :
×Kerberos ist ein kryptographiebasiertes Authentifizierungsprotokoll das den Zugriff auf Anwendungen schützt. Dieses Protokoll soll eine sichere Authentifizierung über ein unsicheres Netzwerk ermöglichen. Die Kernidee von Kerberos besteht darin, Benutzer zu authentifizieren und gleichzeitig zu verhindern, dass Passwörter über das Internet gesendet werden.
Kerberos: Kerberos ist ein Authentifizierungsprotokoll, das das Konzept des Single Sign-On (SSO) unterstützt. Im Fall von HTTP wird die Unterstützung von Kerberos üblicherweise über den Authentifizierungsmechanismus „SPNEGO“ bereitgestellt.
Kerberos-Bereich: Eine administrative Domäne zur Authentifizierung wird mit dem Begriff Realm bezeichnet. Sein Ziel besteht darin, die Einschränkungen zu definieren, wann ein Authentifizierungsserver einen Benutzer, Host oder Dienst authentifizieren kann. Dies bedeutet nicht, dass ein Benutzer und ein Dienst Mitglieder desselben Bereichs sein müssen, damit die Authentifizierung erfolgen kann: Wenn die beiden Objekte über eine Vertrauensverbindung verbunden sind, obwohl sie zu unterschiedlichen Bereichen gehören, kann die Authentifizierung dennoch erfolgen.
Schulleiter: In einem Kerberos-System stellt ein Kerberos-Principal eine eindeutige Identität dar, an die Kerberos Tickets für den Zugriff auf Kerberos-fähige Dienste ausstellen kann. Das Trennzeichen „/“ wird verwendet, um die verschiedenen Komponenten zu trennen, aus denen sich Prinzipalnamen zusammensetzen. Das Zeichen „@“ kann verwendet werden, um einen Bereich als letztes Element des Namens zu kennzeichnen. Wenn kein Bereich angegeben ist, wird davon ausgegangen, dass der Principal zum Standardbereich gehört, der in der Datei krb5.conf festgelegt ist.
Kunden/Benutzer: ein Prozess, der im Namen eines Benutzers auf einen Dienst zugreift. Innerhalb eines Realms kann es mehrere Clients oder Benutzer geben.
Service: Etwas, auf das der Benutzer Zugriff erhalten möchte.
SSO: Single Sign-On ist ein Verfahren, das es einem Benutzer ermöglicht, sich nach Abschluss der Benutzerauthentifizierung nur einmal anzumelden und auf zahlreiche Dienste zuzugreifen. Nach der Anmeldung bei einem primären Dienst erfordert dies eine Authentifizierung bei jedem Dienst, für den der Benutzer eine Berechtigung erteilt hat. SSO bietet eine Reihe von Vorteilen. Einer davon ist die Vermeidung des mühsamen Prozesses der wiederholten Identitätsüberprüfung mithilfe von Passwörtern oder anderen Authentifizierungssystemen.
GSSAPI: Programme können über das Generic Security Service Application Program Interface (GSSAPI), eine Anwendungsprogrammierschnittstelle (API), auf Sicherheitsdienste zugreifen. Ein IETF-Standard ist GSSAPI. Es bietet an sich keine Sicherheit. Stattdessen werden GSSAPI-Implementierungen von Sicherheitsdienstleistern angeboten. Der Austausch undurchsichtiger Nachrichten (Tokens), der die Implementierungsdetails vor der übergeordneten Anwendung verbirgt, ist das Unterscheidungsmerkmal von GSSAPI-Anwendungen.
SPNEGO: Client-Server-Software nutzt den einfachen und geschützten GSSAPI-Verhandlungsmechanismus, der häufig als „spen-go“ bezeichnet wird, um die Auswahl der Sicherheitstechnologie auszuhandeln. Wenn sich eine Client-Anwendung bei einem Remote-Server anmelden muss, aber keine Seite sicher ist, welche Authentifizierungsprotokolle die andere unterstützt, wird SPNEGO eingesetzt. Der Pseudomechanismus verwendet ein Protokoll, um die verfügbaren gemeinsamen GSSAPI-Mechanismen zu identifizieren, wählt einen aus und weist dann alle nachfolgenden Sicherheitsaktionen diesem ausgewählten Mechanismus zu.
KDC: Ein Schlüsselverteilungszentrum ist ein Netzwerkdienst, der Tickets und temporäre Sitzungsschlüssel bereitstellt. oder eine Instanz dieses Dienstes oder des Hosts, auf dem er ausgeführt wird. Das KDC bedient sowohl Erstticket- als auch Ticketgewährungsanfragen. Der anfängliche Ticketteil wird manchmal als Authentifizierungsserver (oder Dienst) bezeichnet. Der Ticket-erteilende Ticketteil wird manchmal als Ticket-erteilender Server (oder Dienst) bezeichnet.
Der Zugriff eines Clients auf eine Ressource in einer Active Directory-Domäne kann mithilfe des Challenge-Response-Authentifizierungsprotokolls namens Windows NT LAN Manager (NTLM) authentifiziert werden. Wenn ein Client Zugriff auf einen domänenbezogenen Dienst anfordert, sendet der Dienst eine Aufforderung an den Client und weist ihn an, mit seinem Authentifizierungstoken eine mathematische Operation durchzuführen und das Ergebnis dann dem Dienst bereitzustellen. Das Ergebnis kann vom Dienst oder vom Domänencontroller (DC) überprüft werden. Der Dienst gewährt dem Client Zugriff, wenn der DC oder der Dienst überprüft, ob die Antwort des Clients korrekt ist.
Da der Benutzer den zugrunde liegenden Authentifizierungsfaktor nur einmal bei der Anmeldung eingeben muss, handelt es sich bei NTLM um eine Art Single Sign-On (SSO).
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab
Hinweis: Gewährleisten BEISPIEL.COM sollte in Großbuchstaben geschrieben werden. Wenn der Benutzer mit SPN bereits vorhanden ist, verwenden Sie diesen Benutzer, um einen neuen zu erstellen. Das Kerberos-Prinzip unterscheidet zwischen Groß- und Kleinschreibung. Bitte prüfen Sie, ob es Unterschiede in der Groß-/Kleinschreibung gibt, bevor Sie den Keytab-Befehl ausführen.
Server-Hostname: | Dies ist der Hostname der auf dem Server gehosteten Site. |
EXAMPLE.COM: | Es handelt sich um den Active Directory-Domänennamen. |
Benutzername: | Es handelt sich um ein Dienstkonto im Active Directory. |
Passwort: | Es handelt sich um das Passwort des oben verwendeten Dienstkontos. |
Pfad: | Pfad zu einem lokalen Speicherort, an dem die Keytab-Datei gespeichert wird. (C:\Temp\spn.keytab) |
Hinweis: Der obige Befehl erstellt eine Keytab-Datei. Es muss auf dem Client-Server platziert werden, auf dem Ihre WordPress-Site gehostet wird. Der Benutzer, der Apache ausführt, sollte vollen Zugriff auf diese Datei haben. Der Benutzer sollte über Berechtigungen für die Keytab-Datei verfügen.
chmod 644 etc/apache2/spn.keytab
sudo apt-get install krb5-user
Hinweis: In den neuesten Versionen von Ubuntu/Debian ist die mod_auth_kerb wurde veraltet und durch ersetzt mod_auth_gssapi.
sudo apt-get install libapache2-mod-auth-kerb
a2enmod auth_kerb
sudo apt-get -y install libapache2-mod-auth-gssapi
[libdefaults]
default_realm = EXAMPLE.COM
# ...
# ...
[realms]
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Hinweis: Ersetzen Sie die IP/DNS des AD-DOMAIN-CONTROLLERS mit Ihrer IP/DNS-Adresse. Sicherstellen BEISPIEL.COM sollte in Großbuchstaben geschrieben werden.
Ersetzen Sie die BEISPIEL.COM 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.
Hinweis: Fügen Sie den folgenden Abschnitt im Verzeichnis entsprechend dem verwendeten Apache-Modul hinzu. Z.B: „mod_auth_kerb“ or „mod_auth_gssapi“.
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
<IfModule !mod_auth_gssapi.c>
LoadModule auth_gssapi_module /usr/lib64/httpd/modules/mod_auth_gssapi.so
</IfModule>
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiAllowedMech krb5
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
BrowserMatch Windows gssapi-no-negotiate
Require valid-user
</Directory>
Hinweis: Gewährleisten BEISPIEL.COM sollte in Großbuchstaben geschrieben werden.
Im Folgenden sind die Komponenten der obigen Konfiguration aufgeführt:
EXAMPLE.COM: | Dies ist die Active Directory-Domäne, wie in krb5.conf konfiguriert. |
PFAD ZUM KEYTAB: | Zugänglicher Pfad zum Keytab auf diesem Server. (etc/spn.keytab) |
Sobald Sie mit der Konfiguration der Einstellungen fertig sind, Klicke hier um Browser für Kerberos SSO zu konfigurieren.
Um Ihre Kerberos/NTLM-SSO-Konfiguration zu testen, klicken Sie hier.
Bitte beheben Sie Fehler klicken Sie hier.
Wenn Sie kein Dienstkonto haben, erstellen Sie ein neues Benutzerkonto (Dienstkonto) in Active Directory-Benutzer und -Computer. Stellen Sie sicher, dass diesem Objekt keine SPN-Einträge zugewiesen sind (das Attribut „servicePrincipalName“ sollte leer sein).
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab
Anmerkungen: Gewährleisten BEISPIEL.COM sollte in Großbuchstaben geschrieben werden. Das Kerberos-Prinzip unterscheidet zwischen Groß- und Kleinschreibung. Bitte prüfen Sie, ob es Unterschiede in der Groß-/Kleinschreibung gibt, bevor Sie den Keytab-Befehl ausführen.
Server-Hostname: | Dies ist der Hostname der auf dem Server gehosteten Site. |
EXAMPLE.COM: | Es handelt sich um den Active Directory-Domänennamen. |
Benutzername: | Es handelt sich um ein Dienstkonto im Active Directory. |
Passwort: | Es handelt sich um das Passwort des oben verwendeten Dienstkontos. |
Pfad: | Pfad zu einem lokalen Speicherort, an dem die Keytab-Datei gespeichert wird. (C:\Temp\spn.keytab) |
Hinweis: Der obige Befehl erstellt eine Keytab-Datei. Es muss auf dem Client-Server platziert werden, auf dem Ihre WordPress-Site gehostet wird. Der Benutzer, der Apache ausführt, sollte vollen Zugriff auf diese Datei haben. Der Benutzer sollte die Berechtigung für die Keytab-Datei haben.
chmod 644 etc/httpd/spn.keytab
yum install -y krb5-workstation krb5-devel krb5-libs mod_auth_gssapi mod_session
Hinweis: In den neuesten Versionen von CentOS ist die mod_auth_kerb wurde veraltet und durch ersetzt mod_auth_gssapi.
yum install mod_auth_kerb
sudo apt-get -y install libapache2-mod-auth-gssapi
default_realm = EXAMPLE.COM
dns_lookup_realm = true
dns_lookup_kdc = true
EXAMPLE.COM = {
kdc = <DNS entries pointing to your primary domain controller>: Port
admin_server = <DNS entries pointing to your primary domain controller>: Port
}
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
Hinweis: Ersetzen Sie die IP/DNS des AD-DOMAIN-CONTROLLERS mit Ihrer IP/DNS-Adresse. Sicherstellen BEISPIEL.COM sollte in Großbuchstaben geschrieben werden.
Ersetzen Sie die BEISPIEL.COM 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.
<Directory "/placeholder">
AuthType Kerberos
KrbAuthRealms EXAMPLE.COM
KrbServiceName HTTP/<Server Host Name>
Krb5Keytab <PATH TO KEYTAB>
KrbMethodNegotiate on
KrbMethodK5Passwd on
require valid-user
</Directory>
LoadModule auth_gssapi_module modules/mod_auth_gssapi.so
<Directory "/placeholder">
AuthType GSSAPI
AuthName "Kerberos auth"
GssapiBasicAuth On
GssapiCredStore keytab:<PATH TO KEYTAB>
GssapiLocalName On
Require valid-user
</Directory>
Im Folgenden sind die Komponenten der obigen Konfiguration aufgeführt:
PFAD ZUM KEYTAB | Zugänglicher Pfad zum Keytab auf diesem Server. (etc/apache2/spn.keytab) |
„/Platzhalter“ | Pfad zum Dokumentstamm |
Sobald Sie mit der Konfiguration der Einstellungen fertig sind, Klicke hier um Browser für Kerberos SSO zu konfigurieren.
Um Ihre Kerberos/NTLM-SSO-Konfiguration zu testen, klicken Sie hier.
Bitte beheben Sie Fehler klicken Sie hier.
Hinweis: Angenommen, die Website muss unter http://machinename und http://machinename.domain.com antworten. Diese Adressen müssen wir im SPN-Attribut des Dienstkontos angeben.
Setspn -S http/<computer-name>.<domain-name> <domain-user-account>
Beispiel: C:\Benutzer\Administrator> setspn -S HTTP/Maschinenname.domain.com service_account
Hinweis: „machinename.domain.com“ ist hier der Computername. Stellen Sie sicher, dass es auf dem Windows-Server auflösbar ist, auf dem der AD-Dienst ausgeführt wird.
setspn -l domain or service_account
Beispiel: C:\Benutzer\Administrator> setspn -l service_account oder C:\Benutzer\Administrator> setspn -l domain_name
Hinweis: Standardmäßig stehen zwei Anbieter zur Verfügung: Negotiate und NTLM. Negotiate ist ein Container, der Kerberos als erste Authentifizierungsmethode verwendet. Wenn die Authentifizierung fehlschlägt, wird NTLM verwendet. Daher ist es erforderlich, dass Negotiate in der Liste der Anbieter an erster Stelle steht.
Beispiel:domain.com\service_account
Hinweis: Wenn Sie „useAppPoolCredentials“ auf „True“ setzen, bedeutet dies, dass wir IIS erlauben, das Domänenkonto zum Entschlüsseln von Kerberos-Tickets von den Clients zu verwenden.
Starten Sie den Fiddler und starten Sie den Browser mit der gewünschten Website. Suchen Sie die Zeile für den Website-Zugriff auf der linken Seite des Fensters. Wählen Sie auf der rechten Seite des Fensters die Registerkarte „Inspizieren“ aus. Dass Kerberos zur Authentifizierung auf der IIS-Website verwendet wurde, geht aus der Zeile „Authorization Header (Negotiate) scheint ein Kerberos-Ticket zu enthalten“ hervor.
Sobald Sie mit der Konfiguration der Einstellungen fertig sind, Klicke hier um Browser für Kerberos SSO zu konfigurieren.
Um Ihre Kerberos/NTLM-SSO-Konfiguration zu testen, klicken Sie hier.
Bitte beheben Sie Fehler klicken Sie hier.
Setspn -s http/<computer-name>.<domain-name> <domain-user-account>
Beispiel: C:\Benutzer\Administrator> setspn -S HTTP/Maschinenname.domain.com service_account
Hinweis: „machinename.domain.com“ ist hier der Computername. Stellen Sie sicher, dass es auf dem Windows-Server auflösbar ist, auf dem der AD-Dienst ausgeführt wird.
setspn -l domain\service_account
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so
<Directory "...../xampp/htdocs">
......
......
#Require all granted
AllowOverride None Options None
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
Require valid-user
</Directory>
Sobald Sie mit der Konfiguration der Einstellungen fertig sind, Klicke hier um Browser für Kerberos SSO zu konfigurieren.
Um Ihre Kerberos/NTLM-SSO-Konfiguration zu testen, klicken Sie hier.
Bitte beheben Sie Fehler klicken Sie hier.
Die clientseitige Konfiguration ermöglicht es dem jeweiligen Browser, SPNEGO zu verwenden, um die Kerberos-Authentifizierung für den Browser auszuhandeln. Sie müssen sicherstellen, dass der Browser auf dem System eines Endbenutzers für die Unterstützung der Kerberos-Authentifizierung konfiguriert ist.
Standardmäßig gelten die allgemeinen Browserkonfigurationseinstellungen. Für den Internet Explorer sind keine weiteren zusätzlichen Einstellungen erforderlich.
Standardmäßig gelten die allgemeinen Browser-Konfigurationseinstellungen, für Google Chrome sind keine weiteren zusätzlichen Einstellungen erforderlich.
Das Kerberos-Protokoll erfordert, dass die Uhrzeiten von Client und Server übereinstimmen: Wenn die Systemuhr des Clients nicht mit der des Servers übereinstimmt, schlägt die Authentifizierung fehl. Die einfachste Möglichkeit, die Systemuhren zu synchronisieren, ist die Verwendung eines Network Time Protocol (NTP)-Servers.
Um Ihre Keytab- und Kerberos-Konfiguration zu überprüfen, können Sie die folgenden Befehle ausführen:
Der Befehl klist zeigt den Inhalt eines Caches oder einer Schlüsseltabelle für Kerberos-Anmeldeinformationen an. Mit diesem Befehl können Sie überprüfen, ob Sie ein gültiges Ticket haben oder nicht.
Zum Auflisten aller Einträge in der Schlüsseltabelle etc/apache2/spn.keytab mit Zeitstempeln.
Zeigt den Verschlüsselungstyp für den Sitzungsschlüssel und das Ticket an und listet die Einträge in einer Schlüsseltabelle auf.
Überprüfen Sie die Kerberos-Authentifizierung mit der Keytab-Datei.
Mit diesem Befehl können Sie unter Linux jedes Kerberos-Token auf Ihrem lokalen Computer zurücksetzen. Der Befehl zerstört Ihr vorheriges Kerberos-Ticket.
Mit diesem Befehl können Sie unter Windows jedes Kerberos-Token auf Ihrem lokalen Computer zurücksetzen. Der Befehl zerstört Ihr vorheriges Kerberos-Ticket.
<?php
var_dump($_SERVER);
?>
Hinweis: Bitte entfernen Sie die Datei test.php, nachdem Sie Ihre Konfiguration überprüft haben. Da es einige wertvolle Informationen enthält.
ktutil
ktutil: read_kt <keytab_filename_1>
ktutil: read_kt <keytab_filename_2>
ktutil: read_kt <keytab_filename_3>
ktutil: write_kt spn.keytab
ktutil: quit
klist -k spn.keytab
kinit: Pre-authentication failed: Invalid argument while getting initial credentials
ktutil
addent -password -p HTTP/<Server Host Name>@EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96
wkt spn.keytab.
Unspecified GSS failure. Minor code may provide more information (Clock skew too great)
or
kinit: krb5_get_init_creds: Too large time skew
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 (, ).
kinit: KDC has no support for encryption type while getting initial credentials
[libdefaults]
default_tgs_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
default_tkt_enctypes = arcfour-hmac-md5 des-cbc-crc des-cbc-md5
kinit: krb5_get_init_creds: Error from KDC: CLIENT EXPIRED
or
kinit: Client's entry in database has expired while getting initial credentials
kinit: krb5_cc_get_principal: No credentials cache file found
or
kinit: krb5_get_init_creds: Error from KDC: CLIENT_NOT_FOUND
kinit : Cannot find KDC for requested realm while getting initial credentials
kinit: Preauthentication failed while getting initial credentials
kinit: Client not found in Kerberos database while getting initial credentials
kinit: Client's entry in database has expired