{"id":68,"date":"2018-06-24T09:09:01","date_gmt":"2018-06-24T07:09:01","guid":{"rendered":"http:\/\/remivernier.com\/?p=68"},"modified":"2018-10-01T17:13:28","modified_gmt":"2018-10-01T15:13:28","slug":"iis-kerberos","status":"publish","type":"post","link":"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/","title":{"rendered":"Configuration pas \u00e0 pas de IIS8 pour l&rsquo;utilisation du protocole KERBEROS &#8211; SSO Windows"},"content":{"rendered":"<p>Nous allons voir dans cet article comment configurer IIS 8 pour qu&rsquo;un site h\u00e9berg\u00e9 utilise l&rsquo;authentification int\u00e9gr\u00e9e Windows. L&rsquo;authentification anonyme sera donc d\u00e9sactiv\u00e9e au profil de <strong>Negociate<\/strong> (Kerberos) et\u00a0<strong>NTLM<\/strong> en secours si Kerberos \u00e9choue pour une raison quelconque.<\/p>\n<p>Dans ce sc\u00e9nario nous allons fournir une identit\u00e9 au pool d&rsquo;application IIS gr\u00e2ce \u00e0 un compte de service Active Directory. Ce point est tr\u00e8s important. Il va complexifier un peu le sc\u00e9nario mais nous permettre d&rsquo;assurer un contr\u00f4le plus pouss\u00e9 en terme de s\u00e9curit\u00e9 et une segmentation r\u00e9elle de nos sites h\u00e9berg\u00e9s.<\/p>\n<p>Dans les fermes compos\u00e9es de plusieurs serveurs IIS load balanc\u00e9s, l&rsquo;utilisation d&rsquo;un compte de service Active Directory est obligatoire. Ce sc\u00e9nario n&rsquo;int\u00e8gre qu&rsquo;un seul serveur IIS mais la configuration de l&rsquo;authentification reste applicable.<\/p>\n<h2>Pr\u00e9sentation de la maquette<\/h2>\n<p><strong>Nom du domaine:<\/strong> test.local (TESTLOCAL)<br \/>\n<strong>Nom du site:<\/strong> monsite.test.local<br \/>\n<strong>Nom du compte de service:<\/strong> svc.monsite@test.local (UPN)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-115 size-full\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-sch1.jpg\" alt=\"\" width=\"750\" height=\"419\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-sch1.jpg 750w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-sch1-300x168.jpg 300w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/p>\n<h2>Petit rappel sur Kerberos<\/h2>\n<p><strong>Kerberos<\/strong> met en \u0153uvre une authentification \u00e0 minima entre 3 acteurs (que nous retrouvons dans notre maquette):<br \/>\n\u2013 Un utilisateur identifi\u00e9 par un UPN (User Principal Name):\u00a0svc.monsite@test.local<br \/>\n\u2013 Un service identifi\u00e9 par un SPN (Service Principal Name): HTTP\/monsite.test.local<br \/>\n\u2013 Un tiers de confiance, le KDC (Key Distribution Center): DC2016, notre contr\u00f4leur de domaine<br \/>\nChaque acteur dispose d\u2019un secret (on parle de cl\u00e9 Kerberos) connu de lui et du KDC : <strong>K<\/strong>c et\u00a0<strong>K<\/strong>s.\u00a0Le KDC dispose de sa propre cl\u00e9 : <strong>K<\/strong>kdc<br \/>\nLa cl\u00e9s <strong>K<\/strong>c est calcul\u00e9 depuis le mot de passe du compte utilisateur. La cl\u00e9 <strong>K<\/strong>s est calcul\u00e9 depuis le mot de passe du compte de service (notre cas) ou du\u00a0compte machine. La cl\u00e9 <strong>K<\/strong>kdc est g\u00e9n\u00e9r\u00e9 \u00e0 la cr\u00e9ation du domaine et conserv\u00e9 dans les attributs de l\u2019utilisateur krbtgt.<\/p>\n<h2>Configuration cot\u00e9 contr\u00f4leur de domaine: DC2016<\/h2>\n<h4>Cr\u00e9ation d&rsquo;une entr\u00e9e DNS<\/h4>\n<p>Les services DNS sont intimement li\u00e9s \u00e0 l&rsquo;authentification Kerberos. Sans un service DNS 100% fonctionnel aucune authentification Kerberos ne fonctionnera.<br \/>\nNous allons cr\u00e9er une entr\u00e9e de type A dans notre DNS qui va \u00ab\u00a0pointer\u00a0\u00bb vers l&rsquo;adresse IP de notre serveur IIS:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-132\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img3.jpg\" alt=\"\" width=\"527\" height=\"21\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img3.jpg 527w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img3-300x12.jpg 300w\" sizes=\"auto, (max-width: 527px) 100vw, 527px\" \/><\/p>\n<h4>Cr\u00e9ation du compte de service<\/h4>\n<p>Le compte de service est un compte standard pour lequel nous d\u00e9sactivons l&rsquo;expiration du mot de passe. Ce param\u00e8tre n&rsquo;est pas recommand\u00e9 et l&rsquo;utilisation d&rsquo;un compte sMSA est plus appropri\u00e9 (nous reviendrons sur ce point plus tard).<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-120\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img1.jpg\" alt=\"\" width=\"238\" height=\"324\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img1.jpg 238w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img1-220x300.jpg 220w\" sizes=\"auto, (max-width: 238px) 100vw, 238px\" \/><\/p>\n<blockquote><p><em>Tous les services Kerberos doivent \u00eatre associ\u00e9s \u00e0 un compte (machine ou utilisateur) de l\u2019Active Directory<\/em><br \/>\n<em>Par d\u00e9faut, dans l\u2019Active Directory, les SPN sont associ\u00e9s aux comptes machines. Par exemple, pour srv-01$, les SPN sont : host\/srv-01, cifs\/srv-01, \u2026 <\/em><br \/>\n<em>Il est cependant possible de d\u00e9finir un SPN pour un compte utilisateur en modifiant son attribut servicePrincipalName.<\/em><br \/>\n<em>Rappel : pour un SPN donn\u00e9, la partie chiffr\u00e9e d\u2019un ticket de service l\u2019est avec la cl\u00e9 Kerberos du compte associ\u00e9.<\/em><br \/>\n<em>Ce n\u2019est pas g\u00eanant pour les comptes machine car leur mot de passe, \u00e0 partir duquel les cl\u00e9s Kerberos sont calcul\u00e9es, est garanti \u00eatre totalement al\u00e9atoire, en revanche, les mots de passe des comptes utilisateur n\u2019\u00e9tant pas al\u00e9atoire, la robustesse des cl\u00e9s Kerberos n\u2019est pas assur\u00e9e. L&rsquo;utilisation d&rsquo;un mot de passe complexe ou d&rsquo;un compte gMSA est donc recommand\u00e9e.<\/em><\/p><\/blockquote>\n<p>Nous avons ici fait le choix d&rsquo;utiliser un compte utilisateur pour l\u2019ex\u00e9cution du pool d&rsquo;application. Il va donc falloir positionner les SPN sur ce dernier:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-121\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img2.jpg\" alt=\"\" width=\"420\" height=\"328\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img2.jpg 420w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img2-300x234.jpg 300w\" sizes=\"auto, (max-width: 420px) 100vw, 420px\" \/><\/p>\n<blockquote><p><em>\u00a0<\/em><\/p><\/blockquote>\n<p>Ce point est important et n\u00e9cessite une configuration particuli\u00e8re dans IIS que nous allons voir par la suite.<\/p>\n<h2>Configuration cot\u00e9 serveur IIS: SRV2012<\/h2>\n<h4>Param\u00e9trage du pool d&rsquo;application<\/h4>\n<p>Le pool d&rsquo;application doit donc s&rsquo;ex\u00e9cuter avec le compte de service pr\u00e9c\u00e9demment cr\u00e9\u00e9.\u00a0 Sans besoin particulier, c&rsquo;est le seul \u00e9l\u00e9ment \u00e0 configurer \u00e0 ce niveau.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-134\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img4.jpg\" alt=\"\" width=\"622\" height=\"226\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img4.jpg 622w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img4-300x109.jpg 300w\" sizes=\"auto, (max-width: 622px) 100vw, 622px\" \/><\/p>\n<h4>Param\u00e9trage de la m\u00e9thode d&rsquo;authentification du site<\/h4>\n<p>Dans les param\u00e8tres d&rsquo;authentification du site, l&rsquo;authentification anonyme doit \u00eatre d\u00e9sactiv\u00e9e et l&rsquo;authentification Windows activ\u00e9e. L&rsquo;ensemble des param\u00e8tres sont \u00e0 laisser par d\u00e9faut.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-135\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img5.jpg\" alt=\"\" width=\"657\" height=\"334\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img5.jpg 657w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img5-300x153.jpg 300w\" sizes=\"auto, (max-width: 657px) 100vw, 657px\" \/><\/p>\n<p>L&rsquo;activation de l&rsquo;authentification Windows ne signifie pas que le protocole Kerberos sera obligatoirement utilis\u00e9. Dans certains cas NTLM peut \u00e9galement \u00eatre appel\u00e9.<\/p>\n<p>Par exemple si le SPN n&rsquo;arrive pas a \u00eatre r\u00e9solu dans le cas ou un utilisateur saisi l&rsquo;adresse IP du site au lieu du nom long.<\/p>\n<p>Il faut s&rsquo;assurer que \u00ab\u00a0N\u00e9gocier\u00a0\u00bb se trouve en haut de la liste dans la section fournisseurs que vous pouvez voir lorsque vous s\u00e9lectionnez l&rsquo;authentification Windows. Negotiate est un provider qui prend en charge le protocole Kerberos et qui contient \u00e9galement NTLM comme failback lorsque Kerberos \u00e9choue.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-136\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img6.jpg\" alt=\"\" width=\"350\" height=\"288\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img6.jpg 350w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img6-300x247.jpg 300w\" sizes=\"auto, (max-width: 350px) 100vw, 350px\" \/><\/p>\n<h4>Param\u00e9trage du ApplicationHost.config<\/h4>\n<p>\u00ab\u00a0useAppPoolCredentials\u00a0\u00bb doit \u00eatre d\u00e9fini sur true:\u00a0 Lorsque \u00ab\u00a0useAppPoolCredentials\u00a0\u00bb est d\u00e9fini sur true, vous indiquez \u00e0 IIS qu&rsquo;il doit utiliser son identit\u00e9 de pool d&rsquo;applications pour d\u00e9chiffrer le jeton \/ ticket Kerberos obtenu \u00e0 partir d&rsquo;AD et transmis par le client au serveur pour authentifier l&rsquo;utilisateur.<\/p>\n<p><strong>Remarque:<\/strong> Si nous avons \u00e0 la fois les m\u00e9thodes useAppPoolCredentials et useKernelMode d\u00e9finies sur true, useAppPoolCredentials est prioritaire et le compte du pool d&rsquo;applications est utilis\u00e9 pour le d\u00e9chiffrement du ticket. Le param\u00e8tre Usekernelmode a \u00e9t\u00e9 introduit \u00e0 partir d&rsquo;IIS 7 et des versions ult\u00e9rieures. Dans IIS 6 et versions ant\u00e9rieures, l&rsquo;identit\u00e9 du pool d&rsquo;applications \u00e9tait toujours utilis\u00e9e pour le d\u00e9chiffrement du jeton \/ ticket<\/p>\n<p>Via l&rsquo;interface graphique:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-137\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img7.jpg\" alt=\"\" width=\"657\" height=\"176\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img7.jpg 657w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img7-300x80.jpg 300w\" sizes=\"auto, (max-width: 657px) 100vw, 657px\" \/><\/p>\n<p>ou directement dans le\u00a0C:\\Windows\\System32\\inetsrv\\config\\applicationHost.config:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-143 size-large\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img8-1024x232.jpg\" alt=\"\" width=\"678\" height=\"154\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img8-1024x232.jpg 1024w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img8-300x68.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img8-768x174.jpg 768w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img8.jpg 1064w\" sizes=\"auto, (max-width: 678px) 100vw, 678px\" \/><\/p>\n<h4>Strat\u00e9gies de s\u00e9curit\u00e9 locale<\/h4>\n<p>Par d\u00e9faut et apr\u00e8s avoir configur\u00e9 le pool d&rsquo;application, IIS affecte les droits sur le serveur au compte qu&rsquo;il utilise pour son ex\u00e9cution. Il est possible de voir ces droits via la console secpol.msc puis Local Policies \/ User Right Assignment.<\/p>\n<p>Droits affect\u00e9s par d\u00e9faut:<\/p>\n<ul>\n<li>Adjust memory quotas for a process: Ajout de IIS APPPOOL\\monsite<\/li>\n<li>Generate security audits:\u00a0Ajout de IIS APPPOOL\\monsite<\/li>\n<li>Log on as a service:\u00a0Ajout de IIS APPPOOL\\monsite<\/li>\n<li>Replace a process level token:\u00a0Ajout de IIS APPPOOL\\monsite<\/li>\n<\/ul>\n<p>Droits \u00e0 ajouter:<\/p>\n<ul>\n<li>Log on as a batch job: Ajout de IIS APPPOOL\\monsite<\/li>\n<li>Log on locally:\u00a0Ajout de TESTLOCAL\\svc.monsite<\/li>\n<li>Impersonate a client after authentication:\u00a0Ajout de IIS APPPOOL\\monsite<\/li>\n<\/ul>\n<p>Une fois ces 3 droits positionn\u00e9s, il faudra lancer dans un cmd gpupdate \/force ainsi qu&rsquo;un iisreset.<\/p>\n<h4>Droits d&rsquo;acc\u00e8s au site<\/h4>\n<p>L&rsquo;affectation des droits au site se fait de mani\u00e8re classique en utilisant les ACL Windows. Ainsi pour donner les droits de se connecter au site au compte localadminuser@test.local il faudra le positionner en lecture sur le r\u00e9pertoire C:\\inetpub\\wwwroot\\monsite<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-145\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img9.jpg\" alt=\"\" width=\"237\" height=\"309\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img9.jpg 237w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img9-230x300.jpg 230w\" sizes=\"auto, (max-width: 237px) 100vw, 237px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>Configuration cot\u00e9 client: WIN8<\/h2>\n<p>Ce test de connexion a \u00e9t\u00e9 effectu\u00e9 avec Internet explorer mais d&rsquo;autres navigateurs supportent l&rsquo;authentification Windows int\u00e9gr\u00e9e (WIA) moyennant une configuration particuli\u00e8re sur ces derniers.<\/p>\n<p>En l&rsquo;\u00e9tat l&rsquo;authentification Kerberos doit fonctionner \u00e0 partir du client. Celui ci doit malgr\u00e9 tout avoir \u00e0 s&rsquo;authentifier en saisissant son UPN et son mot de passe de domaine \u00e0 la connexion au site. Ce comportement est normal car le site ou la zone ne sont pas d\u00e9tect\u00e9es en intranet local. La connexion automatique (SSO) ne s&rsquo;effectue que dans ce cas.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-146 \" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img10.jpg\" alt=\"\" width=\"534\" height=\"295\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img10.jpg 780w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img10-300x166.jpg 300w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img10-768x424.jpg 768w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/p>\n<p>Pour y rem\u00e9dier et donc permettre au navigateur de \u00ab\u00a0jouer\u00a0\u00bb la connexion automatique, il suffira d&rsquo;ins\u00e9rer le site https:\/\/monsite.test.local ou plus commun\u00e9ment https:\/\/*.test.local dans la zone intranet local.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-147\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img11.jpg\" alt=\"\" width=\"536\" height=\"346\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img11.jpg 621w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img11-300x194.jpg 300w\" sizes=\"auto, (max-width: 536px) 100vw, 536px\" \/><\/p>\n<p>La connexion doit \u00eatre alors automatique, et l&rsquo;utilisateur doit se connecter au site de mani\u00e8re transparente.<\/p>\n<p>&nbsp;<\/p>\n<h2>Kerberos, vraiment?<\/h2>\n<p>Pour \u00eatre certain que l&rsquo;authentification fonctionne en Kerberos, plusieurs m\u00e9thodes s\u2019offrent \u00e0 nous:<\/p>\n<p>Analyse de trame via Wireshark par exemple. La s\u00e9quense classique d&rsquo;authentification doit s&rsquo;afficher en filtrant sur \u00ab\u00a0kerberos\u00a0\u00bb.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-149\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img12.jpg\" alt=\"\" width=\"640\" height=\"465\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img12.jpg 640w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img12-300x218.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<blockquote><p><em>Chaque \u00e9tape est compos\u00e9e d\u2019une requ\u00eate REQ et d\u2019une r\u00e9ponse REP, ce qui fait 6 \u00e9changes pour r\u00e9aliser une authenti\ufb01cation compl\u00e8te (les 2 premiers \u00e9changes indiqu\u00e9 en erreur et li\u00e9s \u00e0 la pr\u00e9-aauthentification ne sont pas \u00e0 prendre en compte)<\/em><\/p>\n<ul>\n<li><em>KRB_AS_REQ et KRB_AS_REP<\/em><\/li>\n<li><em>KRB_TGS_REQ et KRB_TGS_REP<\/em><\/li>\n<li><em>KRB_AP_REQ et KRB_AP_REP (nous ne voyons pas ces 2 derni\u00e8res dans la capture car elles sont encapsul\u00e9es dans le protocole TLSv1.2)<br \/>\n<\/em><\/li>\n<\/ul>\n<\/blockquote>\n<p>&nbsp;<\/p>\n<p>V\u00e9rification des tickets pr\u00e9sents sur le client en utilisant dans un cmd la commande klist<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-150\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img13.jpg\" alt=\"\" width=\"640\" height=\"355\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img13.jpg 640w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img13-300x166.jpg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Le premier ticket\u00a0#0 est le TGT et le\u00a0#1 correspond au TGS obtenu pour notre SPN: HTTP\/monsite.test.local<\/p>\n<h2>Bonus (s\u00e9curit\u00e9)!<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-151\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img14.jpg\" alt=\"\" width=\"641\" height=\"146\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img14.jpg 641w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img14-300x68.jpg 300w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/p>\n<p>En regardant bien, la cl\u00e9 qui a permis de chiffrer les informations dans notre TGS est issue d&rsquo;une m\u00e9thode tr\u00e8s ancienne: RSADSI RC4-HMAC. D&rsquo;autres types d&#8217;empreintes, li\u00e9es \u00e0 Kerberos sont \u00e9galement calcul\u00e9es et ne demandent qu&rsquo;\u00e0 \u00eatre utilis\u00e9es. Par exemple depuis Windows 7\/2008R2, il est possible d&rsquo;utiliser\u00a0AES Session-Key (Calcul des cl\u00e9s avec HMAC-SHA256 &#8211; Chiffrement avec AES-128 &#8211; Signature avec HMAC-SHA256):\u00a0AES256-CTS-HMAC-SHA1-96 (RFC3962).<br \/>\nLes empreintes AES, calcul\u00e9es via PBKDF2, apportent : &#8211; des it\u00e9rations (4096 par d\u00e9faut) &#8211; une graine (bas\u00e9e sur le nom de l\u2019utilisateur et du domaine).<\/p>\n<p>Il suffira d&rsquo;indiquer au compte de service que nous supportons le chiffrement bas\u00e9 sur AES-256 via la console ADUC:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-152\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img15.jpg\" alt=\"\" width=\"246\" height=\"301\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img15.jpg 246w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img15-245x300.jpg 245w\" sizes=\"auto, (max-width: 246px) 100vw, 246px\" \/><\/p>\n<p>Ex\u00e9cuter ensuite un \u00ab\u00a0klist purge\u00a0\u00bb dans un cmd pour vider les tickets pr\u00e9c\u00e9demment \u00e9mis.<\/p>\n<p>Il suffit de relancer\u00a0 une nouvelle connexion au site dans internet explorer et v\u00e9rifier \u00e0 nouveau la liste des tickets via \u00ab\u00a0klist\u00a0\u00bb pour constater l&rsquo;\u00e9volution:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-153\" src=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img16.jpg\" alt=\"\" width=\"644\" height=\"142\" srcset=\"https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img16.jpg 644w, https:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-img16-300x66.jpg 300w\" sizes=\"auto, (max-width: 644px) 100vw, 644px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nous allons voir dans cet article comment configurer IIS 8 pour qu&rsquo;un site h\u00e9berg\u00e9 utilise l&rsquo;authentification int\u00e9gr\u00e9e Windows. L&rsquo;authentification anonyme sera donc d\u00e9sactiv\u00e9e au profil de Negociate (Kerberos) et\u00a0NTLM en secours si Kerberos \u00e9choue pour une raison quelconque. Dans ce sc\u00e9nario nous allons fournir une identit\u00e9 au pool d&rsquo;application IIS gr\u00e2ce \u00e0 un compte de<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,3],"tags":[10,6,5,7,9,8],"class_list":["post-68","post","type-post","status-publish","format-standard","hentry","category-kerberos","category-protocoles","tag-authentification-integree","tag-iis","tag-kerberos","tag-spn","tag-sso","tag-wia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.8.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Configuration pas \u00e0 pas de IIS8 pour l&#039;utilisation du protocole KERBEROS - SSO Windows - R\u00e9mi VERNIER<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Configuration pas \u00e0 pas de IIS8 pour l&#039;utilisation du protocole KERBEROS - SSO Windows - R\u00e9mi VERNIER\" \/>\n<meta property=\"og:description\" content=\"Nous allons voir dans cet article comment configurer IIS 8 pour qu&rsquo;un site h\u00e9berg\u00e9 utilise l&rsquo;authentification int\u00e9gr\u00e9e Windows. L&rsquo;authentification anonyme sera donc d\u00e9sactiv\u00e9e au profil de Negociate (Kerberos) et\u00a0NTLM en secours si Kerberos \u00e9choue pour une raison quelconque. Dans ce sc\u00e9nario nous allons fournir une identit\u00e9 au pool d&rsquo;application IIS gr\u00e2ce \u00e0 un compte de\" \/>\n<meta property=\"og:url\" content=\"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/\" \/>\n<meta property=\"og:site_name\" content=\"R\u00e9mi VERNIER\" \/>\n<meta property=\"article:published_time\" content=\"2018-06-24T07:09:01+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-10-01T15:13:28+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-sch1.jpg\" \/>\n<meta name=\"author\" content=\"R\u00e9mi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"R\u00e9mi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/\",\"url\":\"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/\",\"name\":\"Configuration pas \u00e0 pas de IIS8 pour l'utilisation du protocole KERBEROS - SSO Windows - R\u00e9mi VERNIER\",\"isPartOf\":{\"@id\":\"https:\/\/remivernier.com\/#website\"},\"datePublished\":\"2018-06-24T07:09:01+00:00\",\"dateModified\":\"2018-10-01T15:13:28+00:00\",\"author\":{\"@id\":\"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906\"},\"breadcrumb\":{\"@id\":\"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/remivernier.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Configuration pas \u00e0 pas de IIS8 pour l&rsquo;utilisation du protocole KERBEROS &#8211; SSO Windows\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/remivernier.com\/#website\",\"url\":\"https:\/\/remivernier.com\/\",\"name\":\"R\u00e9mi VERNIER\",\"description\":\"Active Directory Services, Azure &amp; co...\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/remivernier.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906\",\"name\":\"R\u00e9mi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/remivernier.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g\",\"caption\":\"R\u00e9mi\"},\"sameAs\":[\"http:\/\/www.linkedin.com\/in\/remi-vernier\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Configuration pas \u00e0 pas de IIS8 pour l'utilisation du protocole KERBEROS - SSO Windows - R\u00e9mi VERNIER","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/","og_locale":"fr_FR","og_type":"article","og_title":"Configuration pas \u00e0 pas de IIS8 pour l'utilisation du protocole KERBEROS - SSO Windows - R\u00e9mi VERNIER","og_description":"Nous allons voir dans cet article comment configurer IIS 8 pour qu&rsquo;un site h\u00e9berg\u00e9 utilise l&rsquo;authentification int\u00e9gr\u00e9e Windows. L&rsquo;authentification anonyme sera donc d\u00e9sactiv\u00e9e au profil de Negociate (Kerberos) et\u00a0NTLM en secours si Kerberos \u00e9choue pour une raison quelconque. Dans ce sc\u00e9nario nous allons fournir une identit\u00e9 au pool d&rsquo;application IIS gr\u00e2ce \u00e0 un compte de","og_url":"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/","og_site_name":"R\u00e9mi VERNIER","article_published_time":"2018-06-24T07:09:01+00:00","article_modified_time":"2018-10-01T15:13:28+00:00","og_image":[{"url":"http:\/\/remivernier.com\/wp-content\/uploads\/2018\/08\/iis-kerberos-sch1.jpg"}],"author":"R\u00e9mi","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"R\u00e9mi","Dur\u00e9e de lecture estim\u00e9e":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/","url":"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/","name":"Configuration pas \u00e0 pas de IIS8 pour l'utilisation du protocole KERBEROS - SSO Windows - R\u00e9mi VERNIER","isPartOf":{"@id":"https:\/\/remivernier.com\/#website"},"datePublished":"2018-06-24T07:09:01+00:00","dateModified":"2018-10-01T15:13:28+00:00","author":{"@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906"},"breadcrumb":{"@id":"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/remivernier.com\/index.php\/2018\/06\/24\/iis-kerberos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/remivernier.com\/"},{"@type":"ListItem","position":2,"name":"Configuration pas \u00e0 pas de IIS8 pour l&rsquo;utilisation du protocole KERBEROS &#8211; SSO Windows"}]},{"@type":"WebSite","@id":"https:\/\/remivernier.com\/#website","url":"https:\/\/remivernier.com\/","name":"R\u00e9mi VERNIER","description":"Active Directory Services, Azure &amp; co...","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/remivernier.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/remivernier.com\/#\/schema\/person\/a4c76c63a5a3d94454484845e42fc906","name":"R\u00e9mi","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/remivernier.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f750448bc07f5d1d9c1189344283777ec0d33275c184599b199fb6b305bc6fba?s=96&d=mm&r=g","caption":"R\u00e9mi"},"sameAs":["http:\/\/www.linkedin.com\/in\/remi-vernier"]}]}},"_links":{"self":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/68","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/comments?post=68"}],"version-history":[{"count":54,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/68\/revisions"}],"predecessor-version":[{"id":460,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/posts\/68\/revisions\/460"}],"wp:attachment":[{"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/media?parent=68"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/categories?post=68"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/remivernier.com\/index.php\/wp-json\/wp\/v2\/tags?post=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}