Résultats de recherche :
×Kerberos est un protocole d'authentification basé sur la cryptographie qui protège l’accès aux applications. Ce protocole est conçu pour fournir une authentification sécurisée sur un réseau non sécurisé. L'idée clé de Kerberos est d'authentifier les utilisateurs tout en empêchant l'envoi de mots de passe sur Internet.
Kerberos : Kerberos est un protocole d'authentification qui prend en charge le concept de Single Sign-On (SSO). Dans le cas de HTTP, la prise en charge de Kerberos est généralement assurée en utilisant le terme mécanisme d'authentification « SPNEGO ».
Royaume de Kerberos : Un domaine administratif pour l'authentification est désigné par le terme domaine. Son objectif est de définir les restrictions sur le moment où un serveur d'authentification peut authentifier un utilisateur, un hôte ou un service. Cela n'implique pas qu'un utilisateur et un service doivent être membres du même domaine pour que l'authentification ait lieu : si les deux objets sont connectés via une connexion de confiance bien qu'ils appartiennent à des domaines différents, l'authentification peut toujours avoir lieu.
Principal: Dans un système Kerberos, un principal Kerberos représente une identité distincte à laquelle Kerberos peut émettre des tickets pour accéder aux services compatibles Kerberos. Le séparateur "/" est utilisé pour séparer les différents composants qui composent les noms principaux. Le caractère "@" peut être utilisé pour identifier un domaine comme élément final du nom. Si aucun domaine n'est spécifié, il est présumé que le principal appartient au domaine par défaut défini dans le fichier krb5.conf.
Clients/Utilisateurs : un processus qui accède à un service au nom d'un utilisateur. Il peut y avoir plusieurs clients ou utilisateurs dans un domaine.
Service clients : Quelque chose auquel l'utilisateur souhaite accéder.
SSO : L'authentification unique est une procédure qui permet à un utilisateur de se connecter une seule fois et d'accéder à de nombreux services après avoir terminé l'authentification de l'utilisateur. Après s'être connecté à un service principal, cela implique une authentification dans chaque service auquel l'utilisateur a accordé une autorisation. Le SSO présente un certain nombre d'avantages, l'un d'entre eux étant d'éviter le processus fastidieux de validation répétée de l'identité à l'aide de mots de passe ou d'autres systèmes d'authentification.
GSSAPI : Les programmes peuvent accéder aux services de sécurité via l'interface de programme d'application générique du service de sécurité (GSSAPI), qui est une interface de programmation d'application (API). Une norme de l'IETF est GSSAPI. Il n'offre aucune sécurité en soi. Au lieu de cela, les implémentations GSSAPI sont proposées par des fournisseurs de services de sécurité. L'échange de messages opaques (jetons), qui dissimulent les détails de mise en œuvre à l'application de niveau supérieur, est la caractéristique distinctive des applications GSSAPI.
SPNÉGO : Le logiciel client-serveur utilise le mécanisme de négociation GSSAPI simple et protégé, fréquemment appelé « spen-go », pour négocier la sélection de la technologie de sécurité. Lorsqu'une application client doit se connecter à un serveur distant mais qu'aucune des extrémités ne sait avec certitude quels protocoles d'authentification l'autre prend en charge, SPNEGO est utilisé. Le pseudo-mécanisme utilise un protocole pour identifier les mécanismes GSSAPI communs disponibles, en choisit un, puis attribue toutes les actions de sécurité ultérieures à ce mécanisme choisi.
CDD : Un centre de distribution de clés est un service réseau qui fournit des tickets et des clés de sessions temporaires ; ou une instance de ce service ou de l'hôte sur lequel il s'exécute. Le KDC traite à la fois les demandes initiales de tickets et les demandes d’octroi de tickets. La partie initiale du ticket est parfois appelée serveur d'authentification (ou service). La partie du ticket d'octroi de tickets est parfois appelée serveur (ou service) d'octroi de tickets.
L'accès d'un client à une ressource sur un domaine Active Directory peut être authentifié à l'aide du protocole d'authentification défi-réponse connu sous le nom de Windows NT LAN Manager (NTLM). Lorsqu'un client demande l'accès à un service lié au domaine, le service envoie un défi au client, lui demandant d'utiliser son jeton d'authentification pour effectuer une opération mathématique, puis de fournir le résultat au service. Le résultat peut être vérifié par le service ou vérifié par le contrôleur de domaine (DC). Le service accorde l'accès au client si le contrôleur de domaine ou le service vérifie que la réponse du client est exacte.
Parce qu'il permet à l'utilisateur de saisir le facteur d'authentification sous-jacent une seule fois, lors de la connexion, NTLM est une sorte d'authentification unique (SSO).
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab
Remarque: Ensure EXEMPLE.COM doit être en majuscule. Si l'utilisateur avec SPN existe déjà, utilisez-le au lieu d'en créer un nouveau. Le principe Kerberos est sensible à la casse. Veuillez vérifier les différences d'écriture en majuscules/minuscules avant d'exécuter la commande keytab.
Nom d'hôte du serveur : | Il s'agit du nom d'hôte du site hébergé sur le Serveur. |
EXEMPLE.COM : | Il s'agit du nom de domaine Active Directory. |
Pseudo | Il s'agit d'un compte de service dans Active Directory. |
Mot de passe: | Il s'agit du mot de passe du compte de service utilisé ci-dessus. |
Chemin: | Chemin vers un emplacement local qui stockera le fichier keytab. (C:\Temp\spn.keytab) |
Remarque: La commande ci-dessus crée un fichier keytab. Il doit être placé sur le serveur client où est hébergé votre site WordPress. L'utilisateur exécutant Apache doit avoir un accès complet à ce fichier. L'utilisateur doit avoir l'autorisation d'accéder au fichier keytab.
chmod 644 etc/apache2/spn.keytab
sudo apt-get install krb5-user
Remarque: Dans les versions les plus récentes d'Ubuntu/Debian, le mod_auth_kerb a été déprécié et remplacé par le 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
Remarque: Remplacez le CONTRÔLEUR DE DOMAINE AD IP/DNS avec votre adresse IP/DNS. Assurer EXEMPLE.COM doit être en majuscule.
Remplacez le EXEMPLE.COM avec le nom de domaine Active Directory.
Et assurez-vous que le port 88 du contrôleur de domaine AD est accessible depuis ce serveur.
Remarque: Ajoutez la section suivante dans le répertoire en fonction du module Apache utilisé. Par exemple: "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>
Remarque: Ensure
EXEMPLE.COM doit être en majuscule.
Voici les composants de la configuration ci-dessus :
EXEMPLE.COM : | Il s'agit du domaine Active Directory tel que configuré dans krb5.conf. |
CHEMIN VERS KEYTAB : | Chemin accessible vers le keytab sur ce serveur. (etc/spn.keytab) |
Une fois que vous avez terminé de configurer les paramètres, cliquez ici pour configurer les navigateurs pour Kerberos SSO.
Pour tester votre configuration Kerberos/NTLM SSO, cliquer ici.
Pour résoudre toute erreur, veuillez cliquer ici.
Si vous n'avez pas de compte de service, créez un nouveau compte d'utilisateur (compte de service) dans Utilisateurs et ordinateurs Active Directory. Assurez-vous que cet objet ne dispose d’aucune entrée SPN (l’attribut servicePrincipalName doit être vide) allouée.
ktpass -princ HTTP/<Server Host Name>@EXAMPLE.COM -mapuser <username@EXAMPLE.COM>
-pass password -ptype KRB5_NT_PRINCIPAL -out <PATH>\spn.keytab
REMARQUE: Ensure EXEMPLE.COM doit être en majuscule. Le principe Kerberos est sensible à la casse. Veuillez vérifier les différences d'écriture en majuscules/minuscules avant d'exécuter la commande keytab.
Nom d'hôte du serveur : | Il s'agit du nom d'hôte du site hébergé sur le Serveur. |
EXEMPLE.COM : | Il s'agit du nom de domaine Active Directory. |
Pseudo | Il s'agit d'un compte de service dans Active Directory. |
Mot de passe: | Il s'agit du mot de passe du compte de service utilisé ci-dessus. |
Chemin: | Chemin vers un emplacement local qui stockera le fichier keytab. (C:\Temp\spn.keytab) |
Remarque: La commande ci-dessus crée un fichier keytab. Il doit être placé sur le serveur client où est hébergé votre site WordPress. L'utilisateur exécutant Apache doit avoir un accès complet à ce fichier. L'utilisateur doit avoir l'autorisation d'accéder au fichier keytab.
chmod 644 etc/httpd/spn.keytab
yum install -y krb5-workstation krb5-devel krb5-libs mod_auth_gssapi mod_session
Remarque: Dans les versions les plus récentes de CentOS, le mod_auth_kerb a été déprécié et remplacé par le 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
Remarque: Remplacez le CONTRÔLEUR DE DOMAINE AD IP/DNS avec votre adresse IP/DNS. Assurer EXEMPLE.COM doit être en majuscule.
Remplacez le EXEMPLE.COM avec le nom de domaine Active Directory.
Et assurez-vous que le port 88 du contrôleur de domaine AD est accessible depuis ce serveur.
<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>
Voici les composants de la configuration ci-dessus :
CHEMIN VERS KEYTAB | Chemin accessible vers le keytab sur ce serveur. (etc/apache2/spn.keytab) |
"/espace réservé" | Chemin d'accès à la racine du document |
Une fois que vous avez terminé de configurer les paramètres, cliquez ici pour configurer les navigateurs pour Kerberos SSO.
Pour tester votre configuration Kerberos/NTLM SSO, cliquer ici.
Pour résoudre toute erreur, veuillez cliquer ici.
Remarque: Supposons que le site Web doive répondre à http://machinename et http://machinename.domain.com. Nous devons spécifier ces adresses dans l'attribut SPN du compte de service.
Setspn -S http/<computer-name>.<domain-name> <domain-user-account>
Mise en situation : C:\Utilisateurs\Administrateur> setspn -S HTTP/nom_machine.domaine.com compte_service
Remarque: "machinename.domain.com" est ici le nom de l'ordinateur. Assurez-vous que le problème peut être résolu sur le serveur Windows exécutant le service AD.
setspn -l domain or service_account
Mise en situation : C:\Utilisateurs\Administrateur> setspn -l compte_service ou C:\Utilisateurs\Administrateur> setspn -l nom de domaine
Remarque: Par défaut, deux fournisseurs sont disponibles, Négocier et NTLM. Négocier est un conteneur qui utilise Kerberos comme première méthode d'authentification, et si l'authentification échoue, NTLM est utilisé. Il est donc nécessaire que Négocier vienne en premier dans la liste des fournisseurs.
Mise en situation :domaine.com\service_account
Remarque: Définir useAppPoolCredentials sur True signifie que nous autorisons IIS à utiliser le compte de domaine pour déchiffrer le ticket Kerberos des clients.
Lancez le violoniste et lancez le navigateur sur le site Web souhaité. Localisez la ligne d'accès au site Web dans le côté gauche de la fenêtre. Sélectionnez l'onglet Inspecter sur le côté droit de la fenêtre. Il est évident que Kerberos a été utilisé pour s'authentifier sur le site Web IIS à partir de la ligne « L'en-tête d'autorisation (négocier) semble contenir un ticket Kerberos ».
Une fois que vous avez terminé de configurer les paramètres, cliquez ici pour configurer les navigateurs pour Kerberos SSO.
Pour tester votre configuration Kerberos/NTLM SSO, cliquer ici.
Pour résoudre toute erreur, veuillez cliquer ici.
Setspn -s http/<computer-name>.<domain-name> <domain-user-account>
Mise en situation : C:\Utilisateurs\Administrateur> setspn -S HTTP/nom_machine.domaine.com compte_service
Remarque : "machinename.domain.com" est ici le nom de l'ordinateur. Assurez-vous que le problème peut être résolu sur le serveur Windows exécutant le service AD.
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>
Une fois que vous avez terminé de configurer les paramètres, cliquez ici pour configurer les navigateurs pour Kerberos SSO.
Pour tester votre configuration Kerberos/NTLM SSO, cliquer ici.
Pour résoudre toute erreur, veuillez cliquer ici.
La configuration côté client permet au navigateur concerné d'utiliser SPNEGO pour négocier l'authentification Kerberos pour le navigateur. Vous devez vous assurer que le navigateur du système d'un utilisateur final est configuré pour prendre en charge l'authentification Kerberos.
Par défaut, les paramètres de configuration généraux du navigateur seront applicables, aucun paramètre supplémentaire n'est requis pour Internet Explorer.
Par défaut, les paramètres de configuration généraux du navigateur seront applicables, aucun paramètre supplémentaire n'est requis pour Google Chrome.
Le protocole Kerberos nécessite que l'heure du client et celle du serveur correspondent : si l'horloge système du client ne correspond pas à celle du serveur, l'authentification échouera. Le moyen le plus simple de synchroniser les horloges système consiste à utiliser un serveur NTP (Network Time Protocol).
Pour vérifier votre configuration keytab et kerberos, vous pouvez exécuter les commandes suivantes :
La commande klist affiche le contenu d'un cache d'informations d'identification Kerberos ou d'une table de clés. Avec cette commande, vous pouvez vérifier si vous avez obtenu un ticket valide ou non.
Pour répertorier toutes les entrées de la table de clés etc/apache2/spn.keytab avec des horodatages.
Affiche le type de cryptage de la clé de session et du ticket et répertorie les entrées dans une table de clés.
Vérifiez l'authentification Kerberos avec le fichier keytab.
Vous pouvez utiliser la commande this sous Linux pour réinitialiser n'importe quel jeton Kerberos sur votre ordinateur local. La commande détruit votre précédent ticket Kerberos.
Vous pouvez utiliser cette commande sous Windows pour réinitialiser n'importe quel jeton Kerberos sur votre ordinateur local. La commande détruit votre précédent ticket Kerberos.
<?php
var_dump($_SERVER);
?>
Remarque: Veuillez supprimer le fichier test.php après avoir vérifié votre configuration. Car il contient des informations précieuses.
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