C'est quelque chose auquel je n'ai jamais vraiment pu répondre aussi bien que j'aime: Quel est le réel avantage d'utiliser l'authentification Kerberos dans IIS au lieu de NTLM?
J'ai vu beaucoup de gens avoir vraiment du mal à le configurer (moi y compris) et je n'ai pas été en mesure de trouver une bonne raison de l'utiliser. Il doit cependant y avoir des avantages assez importants, sinon cela ne vaudrait pas la peine de l'installer, non?
Du point de vue de Windows uniquement:
MaxConcurrentAPI
, AuthPersistSingleRequest
(false) , contrôleurs de domaine plus rapides.) ( Bonus auto-référentiel .)lmcompatibilitylevel
)pourrait être capable de traverser un proxy, mais voir DC point ci-dessus: vous devez toujours être sur le même réseau qu'un DC actif, tout comme le serveur.
le ticket a une longue durée de vie (10h) signifie moins DC communication pendant la durée de vie du ticket - et pour souligner: cela pourrait sauver des milliers de millions de demandes par client pendant cette durée de vie - - (AuthPersistNonNTLM
est toujours une chose; validation Kerberos PAC était une chose)
UserA
d'accéder à IIS et d'utiliser ce même compte d'utilisateur lorsque IIS accède à SQL Server, il s'agit de "délégation d'authentification".KRB_ERR_AP_MODIFIED
)Pendant que nous y sommes:
LogonType
pour être configuré à cet effet (pensez que la valeur par défaut a été modifiée en texte clair réseau entre 2000 et 2003, mais peut-être un mauvais souvenir)Pour résumer:
La configuration peut être difficile à configurer, mais il existe de nombreux guides ( mon seul ) qui tentent de simplifier le processus, et les outils se sont améliorés énormément de 2003 à 2008 (SetSPN
peut rechercher des doublons, ce qui est le problème de rupture le plus courant; tilisez SETSPN -S
chaque fois que vous voyez des conseils pour utiliser -A, et la vie sera plus heureuse).
La délégation restreinte vaut le coût de l'admission.
Une autre approche serait de définir l'authentification sur negotiate
et d'utiliser les deux plutôt que l'un au lieu de l'autre.
Depuis le Microsoft Application Verifier , qui détecte les erreurs courantes des développeurs. L'une de ces erreurs est l'utilisation de NTLM :
NTLM est un protocole d'authentification obsolète avec des failles qui compromettent potentiellement la sécurité des applications et du système d'exploitation. L'inconvénient le plus important est le manque d'authentification du serveur, ce qui pourrait permettre à un attaquant d'inciter les utilisateurs à se connecter à un serveur usurpé. En corollaire de l'authentification de serveur manquante, les applications utilisant NTLM peuvent également être vulnérables à un type d'attaque appelé attaque de "réflexion". Ce dernier permet à un attaquant de détourner la conversation d'authentification d'un utilisateur vers un serveur légitime et de l'utiliser pour authentifier l'attaquant auprès de l'ordinateur de l'utilisateur. Les vulnérabilités de NTLM et les moyens de les exploiter sont la cible de l'augmentation des activités de recherche dans la communauté de la sécurité.
Bien que Kerberos soit disponible depuis de nombreuses années, de nombreuses applications sont toujours écrites pour utiliser NTLM uniquement. Cela réduit inutilement la sécurité des applications. Kerberos ne peut cependant pas remplacer NTLM dans tous les scénarios - principalement ceux où un client doit s'authentifier auprès de systèmes qui ne sont pas joints à un domaine (un réseau domestique étant peut-être le plus courant). Le package de sécurité Negotiate permet un compromis rétrocompatible qui utilise Kerberos dans la mesure du possible et ne revient à NTLM qu'en l'absence d'autre option. Changer de code pour utiliser Negotiate au lieu de NTLM augmentera considérablement la sécurité de nos clients tout en introduisant peu ou pas de compatibilités d'application. Négocier en soi n'est pas une solution miracle - il existe des cas où un attaquant peut forcer la rétrogradation vers NTLM mais ceux-ci sont beaucoup plus difficiles à exploiter. Cependant, une amélioration immédiate est que les applications écrites pour utiliser Negotiate correctement sont automatiquement immunisées contre les attaques par réflexion NTLM.
En guise de dernière mise en garde contre l'utilisation de NTLM: dans les futures versions de Windows, il sera possible de désactiver l'utilisation de NTLM sur le système d'exploitation. Si les applications ont une forte dépendance à NTLM, elles échoueront simplement à s'authentifier lorsque NTLM est désactivé.
Vous devez ajouter un point très important:
Kerberos est un protocole standard et ouvert sous Unix depuis 20 ans, tandis que NTLM est une solution purement propriétaire de Microsoft et uniquement connue de Microsoft.
Kerberos est requis si vous devez emprunter l'identité de l'utilisateur pour accéder à des ressources qui ne sont pas sur le serveur iis.