La fin de NTLM va-t-elle bloquer vos applications métier ? — Comment collecter les journaux d'audit et dans quel ordre éliminer les dépendances

· · NTLM, Kerberos, Windows, Active Directory, Sécurité, Systèmes d'information, PowerShell

« On dit que NTLM va être supprimé, est-ce que chez nous ça va aller ? » — depuis que Microsoft a annoncé en juin 2024 la dépréciation de toutes les versions de NTLM, nous recevons cette question de plus en plus souvent. La réponse est : on peut savoir si ça va aller en vérifiant, et il est encore temps de vérifier maintenant.

La fin de NTLM n’est pas le genre de changement où « un correctif tombe un jour et toute l’entreprise s’arrête ». C’est un resserrement progressif à chaque nouvelle version de l’OS, et surtout, c’est seulement maintenant, pendant que NTLM fonctionne encore, que vous pouvez dresser en toute sécurité la liste des endroits où votre entreprise dépend de NTLM. Tout arrêter puis chercher ce qui casse est le pire ordre possible.

Cet article se concentre sur la procédure pratique pour construire cette liste et l’éliminer. Le fonctionnement du protocole lui-même (pourquoi NTLM est dangereux, pourquoi l’authentification « retombe » sur NTLM) fait l’objet de l’article jumeau « NTLM et Kerberos expliqués en images — Pourquoi l’authentification « retombe »-t-elle sur NTLM ? ».

1. Conclusion, d’abord

  • NTLM a été déprécié en juin 2024. Cela concerne toutes les versions, y compris LANMAN, NTLMv1 et NTLMv2 : c’est une déclaration signifiant « plus de développement actif de fonctionnalités ». Il est précisé dans le même temps que « l’utilisation de NTLM continuera de fonctionner dans la prochaine version de Windows Server et dans la prochaine version annuelle de Windows ».1
  • Une partie a déjà été supprimée. NTLMv1 a été supprimé dans Windows 11 version 24H2 et Windows Server 2025.1
  • La fin de NTLM se déroule en 3 phases. La phase 1 concerne la visibilité et l’audit de l’utilisation, la phase 2 (seconde moitié de 2026) apporte des fonctionnalités (IAKerb, KDC local) pour éliminer les cas où l’on est obligé de dépendre de NTLM, et la phase 3 désactive par défaut l’authentification NTLM réseau dans la prochaine version majeure.2
  • Il n’y a qu’une seule chose à faire maintenant. Faire tourner le mode audit pour dresser la liste de « quel poste, quelle application, vers quel serveur » utilise NTLM (chapitre 4).
  • L’enquête sur les comptes de domaine commence par le contrôleur de domaine. En suivant l’ordre événement 8004 → 8003 du serveur membre → 8001 du client, on arrive finalement jusqu’au nom de l’application (section 4.2). Mais l’authentification par compte local ne passe pas par le contrôleur de domaine, donc l’événement 8004 n’apparaît pas. Il faut alors la repérer via le 8003 côté serveur et le 8001 côté client.3
  • La cause principale, dans la grande majorité des cas, est un « nom ». Une adresse IP en dur et un SPN non enregistré sont les deux facteurs majeurs, et les deux se corrigent sans avoir à reconstruire l’application (chapitre 5).32
  • Il existe un moyen sûr de tester sur un seul poste. Sous Windows 11 24H2 / Windows Server 2025, NET USE \\serveur\partage /BLOCKNTLM permet de vérifier « est-ce que ça se connecte sans NTLM ? » sans modifier aucune stratégie (chapitre 7).4
  • Pour vos applications maison, remplacez les endroits qui nomment NTLM par Negotiate. Microsoft lui-même écrit qu’il ne faut pas accéder directement au package de sécurité NTLM (chapitre 8).5

2. Que signifie « déprécié » ?

Commençons par clarifier les termes. Si l’on explique cela en interne en laissant ce point flou, « il paraît qu’on ne peut déjà plus l’utiliser » et « il paraît que ça ira encore pendant des années » circuleront en même temps et sèmeront la confusion.

Pour résumer, la fiche NTLM de la liste des fonctionnalités dépréciées de Microsoft dit trois choses.1

  1. Toutes les versions de NTLM, y compris LANMAN, NTLMv1 et NTLMv2, sont exclues du développement actif de fonctionnalités et dépréciées.
  2. L’utilisation de NTLM continuera de fonctionner dans la prochaine version de Windows Server et dans la prochaine version annuelle de Windows.
  3. Les appels à NTLM devraient être remplacés par des appels à Negotiate. Negotiate tente une authentification par Kerberos et ne se replie sur NTLM que lorsque c’est nécessaire.

Et une mise à jour ajoute que NTLMv1 a été supprimé dans Windows 11 version 24H2 et Windows Server 2025.1

Autrement dit, l’état actuel est « déprécié (deprecated) », pas « supprimé (removed) ». Sauf pour NTLMv1, qui est déjà allé au-delà de la dépréciation et est entré dans la phase de suppression. Si un ancien copieur multifonction ou un NAS ne sait s’authentifier qu’en NTLMv1, une mise à jour vers Windows 11 24H2 devient directement une panne. Ce n’est pas une question d’avenir, c’est quelque chose qui se produit déjà.

Un autre point à retenir : NTLM conserve des usages pour lesquels il n’existe pas d’alternative. Microsoft indique clairement que NTLM continue d’être utilisé, et doit l’être, pour l’authentification Windows sur des systèmes en groupe de travail et pour l’authentification de connexion locale en dehors des contrôleurs de domaine.6 Le KDC local prévu en phase 2 est justement la fonctionnalité destinée à combler cette lacune où « NTLM est nécessaire pour les comptes locaux ».2

2.1. État actuel des 3 phases

La feuille de route de la fin de NTLM comporte 3 phases. Comme il s’agit d’informations liées à une date, elles sont présentées ici avec une date de référence (le tableau ci-dessous reflète la situation à juillet 2026).

Phase Contenu Statut au moment de juillet 2026 Ce qu’il faut faire en interne
Phase 1 Visibilité et audit de l’utilisation Peut être mis en œuvre dès maintenant. Les stratégies d’audit nécessaires et le journal Microsoft-Windows-NTLM/Operational sont déjà présents dans les versions actuelles de Windows27 Faire tourner l’audit du chapitre 4 pour dresser la liste
Phase 2 Fonctionnalités (IAKerb, KDC local) éliminant les cas où l’on est obligé de dépendre de NTLM Prévu pour la seconde moitié de 2026, selon les annonces actuelles2 Vérifier dans les notes de version si la fonctionnalité est disponible en version définitive ou encore en préversion pour la version cible avant de l’intégrer au plan. Ne pas mettre un cas de côté en se disant « ce sera résolu en phase 2 » sans avoir vérifié
Phase 3 Désactivation par défaut de l’authentification NTLM réseau dans la prochaine version majeure Le calendrier précis n’est pas publié. Même une fois désactivé par défaut, il sera possible de le réactiver via une stratégie21 Terminer d’abord les phases 1 et 2. L’objectif est de ne pas commencer à enquêter seulement une fois cette phase arrivée

Ce que ce tableau doit faire ressortir, c’est que seule la phase 1 est actionnable de vos propres mains, dès maintenant. Le tableau de décision du chapitre 6 mentionne à plusieurs endroits que les fonctionnalités de la phase 2 « peuvent constituer une solution », mais cela suppose toujours de vérifier au préalable leur état de disponibilité. Les délais de livraison peuvent changer, donc revérifiez impérativement le contenu de ce tableau au moment où vous prenez votre décision en interne.

3. Pourquoi NTLM disparaît — en 3 minutes

Voici le strict minimum pour éclairer votre décision de migration. Pour une explication détaillée en images, voir l’article jumeau.

Dans la documentation de paramétrage des stratégies, Microsoft écrit clairement que l’authentification NTLM et NTLMv2 est vulnérable à divers types d’attaques malveillantes, notamment le relais SMB, l’attaque de l’intercepteur (man-in-the-middle) et les attaques par force brute.7 À la racine de cela se trouvent les propriétés suivantes, généralement énoncées en comparaison avec Kerberos.8

  • Pas d’authentification mutuelle. Avec NTLM, ni le client ne peut vérifier l’identité du serveur, ni un serveur celle d’un autre serveur. NTLM a été conçu pour des environnements réseau où l’on peut supposer que « le serveur est authentique ». Kerberos ne fait pas cette hypothèse. Cette différence est ce qui rend possible une attaque de relais consistant à faire envoyer des informations d’identification à un faux serveur.
  • Le serveur interroge le contrôleur de domaine à chaque fois (pour un compte de domaine). Avec NTLM, un serveur d’application doit se connecter au contrôleur de domaine chaque fois qu’il authentifie un client avec un compte de domaine (pour un compte local au serveur, le serveur consulte sa propre base de comptes pour juger).6 Avec Kerberos, un ticket de session renouvelable remplace cette authentification en relais (pass-through), et le serveur n’a pas besoin de contacter le contrôleur de domaine, sauf si une vérification du PAC (certificat d’attributs de privilège) est nécessaire.
  • Le matériau d’authentification est le hachage du mot de passe lui-même. Les informations d’identification NTLM se composent d’un hachage à sens unique du nom de domaine, du nom d’utilisateur et du mot de passe ; le client chiffre le défi avec ce hachage pour renvoyer la réponse.5 C’est de là que découle le fait que voler le hachage suffit à usurper l’identité, sans même connaître le mot de passe en clair.

En pratique, « pas d’authentification mutuelle » signifie que le simple fait d’essayer de se connecter à un partage SMB peut suffire à livrer des informations d’identification à un faux serveur. La raison pour laquelle Microsoft a mis en place le blocage NTLM côté client SMB est expliquée de la même façon : « empêcher qu’un serveur malveillant fasse envoyer une requête NTLM ».4

4. Audit — dresser la liste des endroits où NTLM est utilisé

C’est le cœur du sujet. Le guide de Microsoft précise lui aussi qu’avant de mettre en œuvre des stratégies de restriction, il est nécessaire de découvrir et d’auditer l’état actuel du trafic d’authentification NTLM.9

4.1. Activer le mode audit

Il y a trois stratégies à configurer. Elles se trouvent toutes sous Configuration ordinateur\Paramètres Windows\Paramètres de sécurité\Stratégies locales\Options de sécurité, et aucun redémarrage n’est nécessaire. Que le paramètre soit enregistré localement ou déployé par stratégie de groupe, il devient effectif dès son application.7

Cela dit, « pas besoin de redémarrer » et « effectif immédiatement sur tous les postes » sont deux choses différentes. Si vous déployez via une GPO de domaine, enregistrer la GPO ne met à jour que la stratégie sur AD/SYSVOL ; chaque poste ne commence réellement l’audit qu’après la prochaine mise à jour en arrière-plan ou après un gpupdate /force. Comptez le début de la période d’audit non pas à partir de « la date d’enregistrement de la GPO », mais à partir de « la date où l’application s’est propagée aux postes cibles ». Se tromper sur ce point fausse les résultats du premier dépouillement, dont le nombre de postes couverts sera trop faible.

Stratégie S’applique à Valeur à définir
Sécurité réseau : Restreindre NTLM : Auditer l’authentification NTLM dans ce domaine Contrôleurs de domaine Activer tout
Sécurité réseau : Restreindre NTLM : Auditer le trafic NTLM entrant Tous les serveurs et clients Activer l’audit pour tous les comptes
Sécurité réseau : Restreindre NTLM : Trafic NTLM sortant vers des serveurs distants Tous les serveurs et clients Auditer tout

La troisième stratégie, « Trafic NTLM sortant vers des serveurs distants », a quatre valeurs possibles : Tout autoriser / Tout auditer / Tout refuser / Non défini, « Non défini » étant traité comme équivalent à « Tout autoriser ». La recommandation de Microsoft est claire : ne choisissez pas directement « Tout refuser » ; commencez par « Tout auditer », examinez le journal d’exploitation, identifiez quels serveurs reçoivent des demandes d’authentification, puis constituez une liste d’exceptions.7

Les enregistrements se trouvent dans Observateur d’événements > Journaux des applications et des services > Microsoft > Windows > NTLM (Microsoft-Windows-NTLM/Operational). Comme il n’existe pas de stratégie d’événements d’audit de sécurité correspondant à cet audit, il faut consulter ce canal plutôt que le journal de sécurité.7

Sur le terrain, la confusion la plus fréquente porte sur la correspondance entre « sur quelle machine appliquer quelle stratégie, et quel événement consulter ». En désignant les trois stratégies du tableau ci-dessus par ①②③, voici une liste de vérification.

Type de machine Stratégie à activer Événement à consulter Ce que cela révèle
Contrôleur de domaine (spécifique aux DC), plus ②③ également, car le DC lui-même communique aussi comme serveur et comme client 8004 Pour l’authentification par compte de domaine, quel utilisateur s’est authentifié en NTLM vers quel serveur (nom du canal sécurisé)
Serveur membre
(serveur de fichiers, serveur métier)
②③ 8003 (entrant)
8001 (sortant du serveur lui-même)
De quel client provient la demande. Si le PID est 4 (SYSTEM), c’est via SMB (section 4.5)
Poste client ②③ 8001 (sortant) Le serveur cible et le nom du processus client. C’est ici que la cause est identifiée avec certitude
Machine en groupe de travail, accès à un partage avec un compte local ②③ (des deux côtés si l’autre partie est aussi sous Windows) 8003 et 8001 uniquement Ne passe pas par le DC, donc l’événement 8004 n’apparaît pas. Ce chemin n’est visible que dans les journaux du serveur et du client3

Le journal est le même Microsoft-Windows-NTLM/Operational sur toutes les machines. ① n’a d’effet que sur les contrôleurs de domaine, et un poste sur lequel on a oublié d’activer ②③ ne devient pas « un poste qui n’utilise pas NTLM » mais « un poste qui n’enregistre rien ». Cette différence est la principale cause de biais dans le dépouillement.

Remarque : le mode audit se contente d’enregistrer, il ne bloque rien. En revanche, dans un environnement avec de nombreux postes, le volume de journaux augmente d’un coup. Si vous n’utilisez pas la collecte d’événements (WEF), revoyez d’abord la taille maximale et la durée de conservation des journaux avant d’activer l’audit. Le guide de Microsoft indique lui aussi que l’analyse peut prendre plusieurs mois selon la complexité de l’environnement.3

4.2. Le suivi se fait « du contrôleur de domaine vers l’aval »

Il existe un ordre déterminé pour interpréter les événements collectés. Le chemin de suivi indiqué par le guide de Microsoft est le suivant.3

Nom du canal sécurisé =serveur à examinerNom de la station de travail =client à examinerNom du processus clientSi le PID est 4 (SYSTEM),c'est via SMBContrôleur de domaineÉvénement 8004Serveur membreÉvénement 8003ClientÉvénement 8001Application responsable

Figure 1 : Ordre de suivi des événements d’audit NTLM

Voici les éléments à examiner pour chaque événement.3

Événement Enregistré sur Principaux champs Interprétation
8004 Contrôleur de domaine Date/heure / Nom du canal sécurisé / Nom d’utilisateur / Nom de domaine / Nom de la station de travail Le « nom du canal sécurisé » désigne le serveur membre auquel le client s’est connecté. L’étape suivante consiste à examiner le 8003 de ce serveur
8003 Serveur membre Date/heure / Nom d’utilisateur / Nom de domaine / Nom de la station de travail / PID Si le PID est 4 (SYSTEM), cela passe par le mode noyau (= SMB). Examinez le 8001 sur le client indiqué par le « nom de la station de travail »
8001 Client Date/heure / Serveur cible / Utilisateur spécifié / Domaine spécifié / Nom du processus client / ID utilisateur du processus client C’est ici que la cause est identifiée avec certitude. Si le « serveur cible » n’est ni au format NetBIOS ni au format FQDN (= une adresse IP), Kerberos n’est pas utilisé dans la configuration par défaut

Dans ce parcours, ce qui a le plus de valeur, ce sont le « serveur cible » et le « nom du processus client » de l’événement 8001. Le premier indique directement « pourquoi ce n’est pas devenu Kerberos », le second « qui est responsable ». Le guide de Microsoft explique également que ces informations permettent d’identifier qu’un utilisateur se connecte à l’adresse IP d’un serveur web sans utiliser le nom NetBIOS ou le FQDN qui aurait permis Kerberos.3

Notez aussi qu’il existe des cas où l’événement 8004 n’apparaît pas sur le contrôleur de domaine. C’est le cas lorsqu’une connexion à un serveur de fichiers se fait avec un compte utilisateur local, dont l’authentification ne passe pas par le contrôleur de domaine.3 Ne concluez jamais « les journaux du DC en montrent peu, donc tout va bien ».

4.3. Dépouiller avec PowerShell

Parcourir des milliers d’entrées dans l’interface graphique de l’Observateur d’événements n’est pas réaliste, on les regroupe donc avec Get-WinEvent. Commencez par vérifier combien d’événements de chaque type apparaissent sur cette machine.

# Regrouper les événements NTLM/Operational par ID (exécuter avec des privilèges administrateur)
Get-WinEvent -FilterHashtable @{
    LogName   = 'Microsoft-Windows-NTLM/Operational'
    StartTime = (Get-Date).AddDays(-7)
} -ErrorAction SilentlyContinue |
    Group-Object Id |
    Sort-Object Count -Descending |
    Select-Object Count, @{ N = 'EventId'; E = { $_.Name } }

Une fois vérifié que des événements apparaissent, regroupez le 8001 côté client par « serveur de destination × processus appelant ». La structure des champs varie selon l’ID d’événement, il est donc plus sûr de commencer par ouvrir une seule entrée avec Format-List pour en vérifier la structure avant de fixer les index.

# Vérifier d'abord le contenu d'une seule entrée
$sample = Get-WinEvent -FilterHashtable @{
    LogName = 'Microsoft-Windows-NTLM/Operational'
    Id      = 8001
} -MaxEvents 1

$sample | Format-List TimeCreated, Id, Message
# Pour consulter les champs structurés
([xml]$sample.ToXml()).Event.EventData.Data |
    Select-Object Name, '#text'

Une fois la structure connue, extrayez les valeurs via l’attribut Name du XML pour les dépouiller. Les noms d’attributs varient selon la version de l’OS, donc rechercher par nom est plus robuste qu’indexer par position.

# Dépouiller le 8001 des 7 derniers jours par « destination × processus appelant »
$events = Get-WinEvent -FilterHashtable @{
    LogName   = 'Microsoft-Windows-NTLM/Operational'
    Id        = 8001
    StartTime = (Get-Date).AddDays(-7)
} -ErrorAction SilentlyContinue

$rows = foreach ($e in $events) {
    $data = @{}
    foreach ($d in ([xml]$e.ToXml()).Event.EventData.Data) {
        $data[$d.Name] = $d.'#text'
    }
    [pscustomobject]@{
        Time    = $e.TimeCreated
        # Ne retenir que les noms de champs réellement présents, par ordre de priorité
        Target  = @('TargetName', 'TargetServer', 'ServerName') |
                  Where-Object { $data.ContainsKey($_) } |
                  ForEach-Object { $data[$_] } | Select-Object -First 1
        Process = @('ClientProcessName', 'ProcessName', 'ApplicationName') |
                  Where-Object { $data.ContainsKey($_) } |
                  ForEach-Object { $data[$_] } | Select-Object -First 1
    }
}

$rows | Group-Object Target, Process |
    Sort-Object Count -Descending |
    Select-Object Count, Name

Le dernier dépouillement renvoie deux colonnes : Count (nombre d’occurrences) et Name (concaténation par une virgule de « destination, processus appelant »). Autrement dit, la sortie a cette forme (les valeurs sont des exemples à titre d’illustration).

Count Name
----- ----
  412 192.168.1.10, System
  118 fileserver.corp.example.com, System
   57 192.168.1.24, MyBizApp.exe
    9 legacy-nas, System

Ce qu’il faut regarder, c’est la première moitié de Name, c’est-à-dire la destination. Voici comment interpréter chaque ligne.

Forme de Name Signification Action suivante
La première moitié est une adresse IP (ex. 192.168.1.10, ...) Le motif le plus risqué. Par défaut, Kerberos n’est pas tenté lorsque le nom d’hôte est une adresse IP, donc cette ligne ne peut structurellement pas devenir Kerberos10 Remplacer la destination par un FQDN (chapitre 6). Traiter d’abord les lignes à fort volume fait chuter le total d’un coup
La première moitié est un nom NetBIOS ou un FQDN Normal en tant que nom. Si c’est quand même NTLM, c’est un problème de SPN non enregistré, d’alias, ou de chemin réseau Trier la cause à l’aide du tableau du chapitre 5
La seconde moitié est un processus système comme System Probablement via SMB (PID 4). On ne peut pas identifier l’application appelante au-delà de ce point Vérifier via le 8003 côté serveur si le PID est bien 4, puis déployer ProcMon sur ce seul poste (section 4.5)
La seconde moitié est un nom d’exécutable (ex. MyBizApp.exe) L’application responsable est identifiée avec certitude. La plus facile à corriger Examiner les paramètres de connexion de cette application (section 8.2)
La seconde moitié de Name est vide, ou toutes les lignes sont vides Les noms de champs utilisés pour le dépouillement ne correspondent pas au schéma réel Ajouter les noms vérifiés à l’étape précédente au tableau des candidats

La valeur absolue du nombre d’occurrences n’a pas beaucoup de sens en soi. Regardez ces deux points : « les lignes visant une adresse IP arrivent-elles en tête ? » et « combien de lignes vont jusqu’à identifier le nom de l’exécutable ? » Le premier est une dépendance qui diminuera sûrement une fois corrigée, le second une dépendance à laquelle on peut affecter un responsable.

Comme les noms de champs varient selon la version de l’OS, le script range les candidats dans un tableau ordonné par priorité et ne retient que ceux qui existent réellement. Si vous utilisez ici une correspondance partielle comme -match 'Process', cela peut aussi capter un champ de PID comme ClientProcessId, et vous risquez de dépouiller par un PID qui change à chaque fois plutôt que par le nom de l’exécutable (l’ordre des clés d’une table de hachage n’étant pas garanti, on ne sait même pas de façon stable lequel des deux sera retenu). Si la colonne Process est entièrement vide, c’est le signe que les noms candidats ne correspondent pas au schéma réel, il faut alors ajouter au tableau les noms vérifiés à l’étape précédente.

Pour collecter depuis plusieurs postes, il est plus rapide de paralléliser avec PowerShell Remoting (voir « Introduction à PowerShell Remoting (WinRM) »). Le filtrage de Get-WinEvent prend un temps radicalement différent selon que l’on utilise -FilterHashtable ou non ; les points clés sont détaillés dans « Explorer les journaux d’événements avec Get-WinEvent en pratique ».

4.4. Regard depuis le journal de sécurité — NTLMv1 est-il encore utilisé ?

Indépendamment du journal NTLM/Operational, il existe aussi une méthode pour vérifier la version de NTLM à partir des événements de connexion du journal de sécurité. La procédure consiste à rechercher « Package d’authentification » dans le journal de sécurité et à examiner les « Informations d’authentification détaillées » de chaque événement.3

Informations d'authentification détaillées :
    Processus de connexion :          NtLmSsp
    Package d'authentification :      NTLM
    Service migré :                   -
    Nom du package (NTLM uniquement) : NTLM V1
    Longueur de clé :                 128

Ce « Nom du package (NTLM uniquement) » indique quel sous-protocole du groupe de protocoles NTLM a été utilisé.3 Un hôte affichant NTLM V1 est un candidat qui, une fois mis à niveau tel quel vers Windows 11 24H2 / Windows Server 2025, verra son authentification échouer, car NTLMv1 est supprimé dans ces versions.1 Lorsque vous menez l’audit, accordez une priorité plus élevée à ce seul critère.

4.5. Quand le PID est toujours 4 (SYSTEM) et qu’on ne progresse plus

Dès qu’on commence l’audit, on se heurte presque toujours à cet obstacle. Pour les applications qui communiquent via un redirecteur, comme SMB (dossier partagé), c’est le redirecteur en mode noyau qui demande l’authentification, si bien que le PID conservé dans l’événement est toujours 4 (SYSTEM).3

Voici la démarche indiquée par le guide de Microsoft.3

  1. Installer un outil de surveillance des processus sur le client qui envoie les informations d’identification NTLM (l’« ordinateur » de l’événement 8001).
  2. Filtrer les chemins par le nom d’ordinateur et l’adresse IP du serveur en face, à la fois. Si une capture longue est nécessaire, la faire tourner en mode arrière-plan.
  3. Recouper le résultat de la capture avec l’horodatage de l’événement 8003 côté serveur. L’utilisateur, le chemin et l’identifiant d’authentification correspondent entre eux, ce qui permet d’identifier l’application appelante.

L’outil en question est Process Monitor (ProcMon). La façon de poser les filtres et de lire les résultats est détaillée dans « Guide pratique de Process Monitor (ProcMon) ».

Une astuce pratique supplémentaire : il est nettement plus rapide de restreindre entièrement « quel poste » via les seuls journaux d’événements jusqu’à ce stade, puis de ne déployer ProcMon que sur ce seul poste. Déployer ProcMon sur tous les postes n’est pas réaliste.

5. Schémas typiques de repli sur NTLM

Une fois les emplacements identifiés par l’audit, l’étape suivante est de classer les causes. Le guide de Microsoft cite les quatre catégories suivantes d’applications qui, en théorie compatibles avec Kerberos, finissent par utiliser NTLM.3

  • Applications qui permettent de choisir parmi diverses configurations de sécurité ou divers fournisseurs
  • Applications dont le SPN (nom de principal de service) n’est pas correctement configuré
  • Applications qui utilisent une adresse IP plutôt qu’un nom DNS à cause d’une erreur de configuration ou de la documentation d’un fournisseur
  • Applications dont la base de code héritée conserve une partie spécifique à NTLM

Le blog de support Microsoft Japan cite comme causes typiques de recours à NTLM : l’accès au serveur par adresse IP, la restriction par pare-feu des ports nécessaires à Kerberos, le SPN non enregistré, l’authentification vers une relation d’approbation, et l’authentification en environnement de groupe de travail.2

En les organisant sous la forme rencontrée sur le terrain, on obtient le tableau suivant. Les deux colonnes de droite sont des critères pour établir les priorités. « Portée de l’impact » représente l’ampleur de la gêne en cas d’arrêt, « Facilité de correction » indique si cela peut être corrigé par la seule décision de l’entreprise. Une fois ces deux éléments connus, ils donnent directement l’ordre de traitement du plan.

Symptôme / configuration Pourquoi ça devient NTLM Méthode de vérification Catégorie Portée de l’impact Facilité de correction
Connexion à un dossier partagé par adresse IP, comme \\192.168.1.10\partage Par défaut, Kerberos n’est pas tenté quand le nom d’hôte est une adresse IP10 Le « serveur cible » de l’événement 8001 est une adresse IP Corrigeable immédiatement Grande (volume élevé) Élevée (gérable en interne)
Le paramètre de destination d’une application métier est une adresse IP Idem. La documentation du fournisseur spécifie souvent une IP Identifier l’application via le « nom du processus client » de l’événement 8001 Corrigeable immédiatement Moyenne à grande Élevée (simple changement de paramètre)
Accès via un alias DNS (CNAME) ou un nom personnalisé dans le fichier hosts Le SPN correspondant à ce nom n’est pas enregistré Vérifier la liste des SPN du compte de service concerné Se corrige par l’enregistrement d’un SPN Moyenne Moyenne (travail et coordination côté AD)
Service maison ou site IIS exécuté sous un compte dédié SPN non enregistré pour le compte de service Idem Se corrige par l’enregistrement d’un SPN Moyenne Moyenne (vérifier l’absence de doublon)
Contrôleur de domaine injoignable depuis un site distant ou via VPN Le trafic requis par Kerberos ne passe pas, d’où le repli Règles de pare-feu et joignabilité du DC Problème de chemin réseau Grande (tout le site) Faible (changement de configuration réseau)
NAS, copieur multifonction, scanner envoyant en SMB vers un partage Windows L’appareil ne prend pas en charge Kerberos, ou s’authentifie avec un compte local Paramètres d’authentification de l’appareil et 8003 côté serveur Dépend de l’appareil Moyenne (activité métier identifiable) Faible (dépend de la réponse du fournisseur / du remplacement de l’appareil)
Machine en groupe de travail, accès à un partage avec un compte local (les deux extrémités sont des Windows récents) N’étant pas un compte de domaine, ce n’est de toute façon pas le terrain de Kerberos L’événement 8004 n’apparaît pas sur le contrôleur de domaine Peut être résolu en phase 2 Moyenne Faible (en attente de la fonctionnalité, section 2.1)
Idem, mais avec un Windows ancien ou un appareil d’un autre fabricant en face Idem. Mais le KDC local n’agit qu’entre Windows compatibles entre eux Vérifier la version d’OS/le modèle de l’autre partie Agir soi-même (jonction au domaine, remplacement, autre protocole, exception) Moyenne Faible (dépend du budget et du calendrier de remplacement)
Authentification vers un domaine tiers, sans relation d’approbation Impossible d’émettre un ticket Kerberos « Domaine spécifié » de l’événement 8001 Décision de conception nécessaire Petite à moyenne Faible (coordination avec l’autre partie)
Ancien logiciel packagé permettant de choisir la méthode d’authentification Fixé sur NTLM dans les paramètres Écran de paramètres d’authentification du produit Changement de paramètre ou vérification auprès du fournisseur Moyenne Moyenne (élevée si un simple paramètre suffit)

L’ordre de traitement découle mécaniquement de ces deux colonnes.

  1. Priorité absolue, indépendamment de la portée de l’impact : les appareils qui ne savent parler qu’en NTLMv1, et les hôtes où NTLM V1 est enregistré (section 4.4). C’est le seul cas où « l’échéance est déjà arrivée », il se place donc en dehors du calcul de priorité.1
  2. Vient ensuite Portée de l’impact = grande et Facilité de correction = élevée, c’est-à-dire les adresses IP en dur. Le volume est élevé et cela se corrige par la seule décision de l’entreprise. Concentrez-vous là-dessus le premier mois.
  3. Puis les problèmes de SPN, à Facilité de correction = moyenne. À traiter en même temps que l’uniformisation des noms.
  4. Pour les éléments à Facilité de correction = faible (dépendant d’un appareil, du chemin réseau, en attente de la phase 2), ce n’est pas que leur traitement est retardé, c’est simplement que leur délai est long : commencez dès maintenant, en parallèle des points 1 à 3, au moins la prise de contact avec le fournisseur et la budgétisation.

Les éléments classés « corrigeable immédiatement » et « se corrige par l’enregistrement d’un SPN » devraient représenter la majorité des résultats d’audit. Le simple fait de les éliminer réduit considérablement le nombre d’exceptions restantes.

6. Tableau de décision pour les corrections

Catégorie Action Points de vigilance
Adresse IP en dur Remplacer la destination par un FQDN. Vérifier jusqu’aux raccourcis de dossiers partagés, mappages de lecteurs, fichiers de configuration d’applications, scripts batch, arguments du Planificateur de tâches Vérifier d’abord que la résolution de noms fonctionne de manière fiable. Les pièges liés aux lecteurs réseau et aux chemins UNC sont détaillés dans un autre article
Adresse IP en dur, mais impossible de passer à un nom Configurer TryIPSPN côté client et enregistrer manuellement le SPN de l’adresse IP avec Setspn -s <classe de service>/<adresse IP> <compte> Dernier recours. Ce qu’il faut enregistrer, c’est la classe de service réellement demandée par le client. Pour un service mappé sur HOST comme un dossier partagé, host/192.168.1.1 suffit, mais pour le Web il faut HTTP/192.168.1.1, et pour SQL Server un SPN distinct incluant le port, comme MSSQLSvc/192.168.1.1:1433 : enregistrer seulement host/ ne correspondra pas et le repli sur NTLM persistera. Microsoft lui-même indique qu’une adresse IP étant temporaire, elle n’est normalement pas utilisée pour un SPN, et que cette opération manuelle ne doit être employée que lorsqu’il est impossible de passer à un nom DNS. Avec DHCP, cela suppose une réservation statique. Le paramétrage est nécessaire sur chaque client accédant à la ressource10
SPN non enregistré Enregistrer un SPN, pour le compte qui exécute le service, correspondant au nom utilisé pour y accéder Un double enregistrement de SPN casse l’authentification Kerberos elle-même. Toujours vérifier les doublons existants avant d’enregistrer
Accès via un alias (CNAME) Enregistrer aussi un SPN pour l’alias, ou uniformiser l’accès sur le FQDN La cause est un décalage entre « le nom d’origine » et « le nom réellement utilisé » : décidez d’abord vers lequel des deux vous alignez
Site sans accès au DC Ouvrir le trafic nécessaire à Kerberos. Si l’inaccessibilité est structurelle et permanente, IAKerb (phase 2) peut être une solution La disponibilité d’IAKerb et du KDC local est prévue pour la seconde moitié de 2026. Vérifier dans les notes de version si c’est réellement utilisable pour la version cible de votre entreprise2
Exploitation avec des comptes locaux D’abord trier selon la nature de l’autre partie. Entre Windows compatibles entre eux, le KDC local de la phase 2 peut être une solution, mais un Windows ancien ou un appareil d’un autre fabricant (NAS, copieur multifonction, etc.) n’en fait pas partie. Pour ce dernier cas, choisir entre jonction au domaine, remplacement de l’appareil, changement de protocole, ou liste d’exceptions Ne pas mettre tout en attente en se disant « c’est un compte local, donc ça attend la phase 2 ». Ce qu’IAKerb résout, c’est la joignabilité du DC, pas la compatibilité des comptes locaux ou des appareils d’autres fabricants. Pour l’authentification de connexion locale et les configurations en groupe de travail, NTLM continuera d’être nécessaire62
NAS, copieur multifonction Vérifier auprès du fabricant l’état de compatibilité du micrologiciel. Si le support de Kerberos est impossible, basculer vers un autre canal d’envoi que SMB (SMTP, FTPS, dossier dédié), ou remplacer l’appareil Priorité absolue pour les appareils qui ne parlent qu’en NTLMv1. Déjà supprimé sous Windows 11 24H2 / Server 20251
Produit permettant de choisir la méthode d’authentification Sélectionner Negotiate/Kerberos dans les paramètres. Si ce n’est pas possible, demander la feuille de route au fournisseur Une réponse « pas prévu » devient un élément pour le plan de mise à jour
Application maison Remplacer les mentions explicites de NTLM par Negotiate (chapitre 8) Corriger non seulement le code, mais aussi la façon dont la destination est écrite
Ce qui subsiste malgré tout L’inscrire dans la liste d’exceptions serveur et compter ce nombre chaque année Une exception est « un sursis jusqu’à sa suppression », pas une solution. Utiliser la diminution du nombre comme indicateur7

7. Blocage NTLM sur SMB — le chemin le plus rapide pour une vérification sur le terrain

Les journaux d’audit indiquent que NTLM « est utilisé », mais pas ce qui se passerait « si on l’arrêtait ». C’est là qu’intervient utilement le blocage NTLM côté client SMB, ajouté dans Windows Server 2025 et Windows 11 version 24H2.4

Cette fonctionnalité empêche un client SMB d’utiliser l’authentification NTLM pour ses connexions sortantes vers un serveur distant. Microsoft indique que cela empêche la technique consistant à faire envoyer une requête NTLM à un serveur malveillant, et permet de contrer les attaques par force brute, par cassage de mot de passe et Pass-the-Hash, et positionne en outre le blocage NTLM comme nécessaire pour faire basculer le protocole d’authentification de l’organisation vers Kerberos. Il est également précisé qu’il est possible d’activer cette seule couche de protection sans désactiver complètement NTLM.4

Il y a deux prérequis.4

  • Le client SMB doit être Windows Server 2025 ou ultérieur, ou Windows 11 version 24H2 ou ultérieure
  • Le serveur SMB de destination doit pouvoir utiliser Kerberos (l’OS côté serveur SMB peut être n’importe lequel du moment qu’il prend en charge PKU2U ou Kerberos)

7.1. D’abord tester avec un seul poste et une seule connexion

Plutôt que de déployer directement une stratégie, on utilise le fait qu’il est possible de spécifier le blocage au niveau d’une connexion individuelle. C’est le chemin le plus rapide pour une vérification sur le terrain.

# Essayer de se connecter en interdisant NTLM uniquement pour cette connexion (si ça se connecte, ce partage n'a pas besoin de NTLM)
NET USE \\fileserver.corp.example.com\share /BLOCKNTLM

# On peut faire la même chose avec un mappage PowerShell
New-SmbMapping -RemotePath \\fileserver.corp.example.com\share -BlockNTLM $true

Si la connexion réussit, ce chemin fonctionne sans NTLM. Si elle échoue, c’est un point de dépendance à NTLM. Comme on peut vérifier connexion par connexion « est-ce que ça casserait en production », sans modifier aucune stratégie, c’est bien adapté pour recouper les résultats de l’audit.

Il y a trois endroits où vérifier le résultat. (1) Le succès ou l’échec de la connexion se lit dans le résultat de la commande elle-même : en cas de succès, un mappage est créé et apparaît dans la liste net use et dans Get-SmbConnection -ServerName <nom du serveur> ; en cas d’échec, cela se termine par une erreur et aucun mappage ne subsiste. (2) Pour savoir si c’est vraiment dû à NTLM, on juge en association avec l’étape 3 ci-dessous (connexion sans le drapeau) : si ça échoue même sans le drapeau, c’est un autre problème. (3) Pour confirmer avec quoi l’authentification s’est faite, utilisez la méthode décrite à la fin de cette section (klist et le journal de sécurité côté serveur). Ne concluez jamais à une dépendance à NTLM sur la seule base du texte du message d’erreur.

Cependant, cette vérification exige une procédure. L’exécuter sans y réfléchir conduit à des jugements erronés dans les deux sens.

$server = 'fileserver.corp.example.com'

# 1. Supprimer « absolument tous » les mappages vers ce serveur
#    S'il reste ne serait-ce qu'un seul autre partage, la session au niveau du serveur continue de vivre
net use | Select-String $server              # D'abord regarder ce qui est actuellement connecté
net use \\$server\share  /delete
net use \\$server\other  /delete             # Ainsi que tous les autres partages du même serveur

# 2. Vérifier que la session a vraiment disparu (ne pas passer à la suite tant que ce n'est pas vide)
Get-SmbConnection -ServerName $server

# 3. D'abord vérifier que la connexion réussit sans le drapeau (un échec ici indique un autre problème que NTLM)
net use \\$server\share
net use \\$server\share /delete
Get-SmbConnection -ServerName $server        # Remettre à vide ici aussi

# 4. Puis essayer avec le drapeau /BLOCKNTLM
net use \\$server\share /BLOCKNTLM
  • Pourquoi les étapes 1 et 2 sont nécessaires : une session SMB est au niveau du serveur, pas au niveau du partage. S’il reste une session déjà authentifiée vers ce serveur, le redirecteur la réutilise sans refaire l’authentification. /BLOCKNTLM n’agit que sur l’authentification effectuée pour ce mappage précis ; il ne vérifie pas rétroactivement une session déjà établie (qui pourrait avoir été montée via NTLM). Autrement dit, il ne suffit pas de /delete uniquement le partage testé. Si un autre partage du même serveur reste connecté, la connexion réussira alors même qu’une dépendance à NTLM existe. Descendez jusqu’à ce que Get-SmbConnection ne renvoie plus rien. Au-delà de vos propres mappages, une application résidente ou une tâche de sauvegarde peut aussi détenir une session. Pour être sûr, le plus rapide est de tester depuis un poste qui ne s’est jamais connecté à ce serveur.
  • Pourquoi l’étape 3 est nécessaire : une résolution de nom en échec, des informations d’identification incorrectes, ou un droit d’accès insuffisant au partage lui-même font aussi échouer une exécution avec /BLOCKNTLM. Si ça échoue même sans le drapeau, ce n’est pas une dépendance à NTLM mais un autre problème.

Notez que ce qu’on peut affirmer ici se limite à « NTLM n’était pas nécessaire », pas jusqu’à « l’authentification s’est faite par Kerberos ». Le prérequis de cette fonctionnalité est « un serveur SMB pouvant utiliser Kerberos », mais la destination peut aussi être un OS prenant en charge PKU2U.4 Il reste donc possible que la raison du succès soit PKU2U plutôt que Kerberos. Face à un serveur de fichiers déjà joint au domaine, cela ne pose généralement pas de problème, mais si vous voulez confirmer précisément avec quoi l’authentification s’est faite, exécutez klist sur le client après la connexion pour voir si un ticket cifs/ pour ce serveur a bien été obtenu, ou vérifiez le package d’authentification de l’événement de connexion dans le journal de sécurité côté serveur (section 4.4).

7.2. Activer par poste

Une fois la vérification faite, passez au blocage complet sur des postes pilotes.4

# Bloquer NTLM pour tout le client SMB (privilèges administrateur)
Set-SmbClientConfiguration -BlockNTLM $true

Avec une stratégie de groupe, activez « Bloquer NTLM (LM, NTLM, NTLMv2) » sous Configuration ordinateur > Modèles d'administration > Réseau > Station de travail Lanman.4

7.3. Pour les correspondants qui doivent absolument rester : la liste d’exceptions

Pour les correspondants qui ont absolument besoin de NTLM, comme un serveur SMB non joint au domaine, une exception est possible. Activez Station de travail Lanman > Bloquer la liste d'exceptions de serveurs NTLM dans la stratégie de groupe, et énumérez l’adresse IP, le nom NetBIOS ou le FQDN des correspondants autorisés.4

Comme il n’existe pas de cmdlet PowerShell pour créer la liste d’exceptions elle-même, il faut la configurer une première fois via l’éditeur de stratégie de groupe, mais une fois qu’elle existe, on peut y ajouter des entrées individuellement par une opération sur le registre.4

# Ajouter une entrée à la liste d'exceptions existante
$params = @{
  Path = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation"
  Name = "BlockNTLMServerExceptionList"
}
$Entries = "192.168.10.10", "corp.contoso.com", "CORP"

$CurrentValue = (Get-ItemProperty @params -ErrorAction SilentlyContinue).BlockNTLMServerExceptionList
$params["Value"] = if ($null -eq $CurrentValue) { $Entries }
                   else { $CurrentValue + $Entries }
Set-ItemProperty @params

Remarque : dans l’exemple fourni par la documentation Microsoft, la branche prévue pour le cas où la valeur n’existe pas encore se contente de définir @(""), ce qui jette purement et simplement les entrées qu’on voulait ajouter.4 Le comportement qui en résulte est qu’aucune exception n’entre lors de la première exécution, et qu’elles n’entrent finalement qu’à la deuxième exécution ; le code ci-dessus écrit donc directement les entrées à ajouter même dans le cas où la valeur n’existe pas encore. Cela dit, cette valeur de registre relève de toute façon d’une zone gérée par la stratégie de groupe. Gérez les exceptions permanentes du côté de la stratégie de groupe, et limitez cette opération à une réponse temporaire en cas d’urgence : la prochaine application de la stratégie l’écrasera.

Remarque : cette fonctionnalité est une fonctionnalité côté client SMB.4 Elle n’arrête pas NTLM sur des chemins autres que SMB (communication HTTP d’une application maison, connexion à SQL Server, WinRM, etc.). Ces cas-là doivent être éliminés individuellement selon la classification du chapitre 5.

8. NTLM du point de vue du développeur — utiliser Negotiate

Si votre entreprise développe des applications Windows, l’endroit à corriger est clair. Microsoft l’indique explicitement :5

Les applications ne devraient pas accéder directement au package de sécurité NTLM. Elles devraient utiliser à la place le package de sécurité Negotiate. Negotiate permet de tirer parti d’un protocole de sécurité plus avancé si les systèmes impliqués dans l’authentification le prennent en charge. Actuellement, le package de sécurité Negotiate choisit entre Kerberos et NTLM. Negotiate sélectionne Kerberos, sauf si l’un des systèmes impliqués dans l’authentification ne peut pas l’utiliser.

Autrement dit, le principe est de remplacer les endroits où « NTLM » est écrit par « Negotiate ». La liste des fonctionnalités dépréciées dit la même chose : les appels à NTLM devraient être remplacés par des appels à Negotiate.1

8.1. Le cas fréquent en .NET : « nommer explicitement NTLM »

// Mauvais exemple : le type d'authentification nomme explicitement NTLM
var credential = new NetworkCredential(user, password, domain);
var cache = new CredentialCache();
cache.Add(new Uri("http://intra.example.local/"), "NTLM", credential);

var handler = new HttpClientHandler { Credentials = cache };
// Bon exemple : on ne change que le type d'authentification. Les informations d'identification sont transmises telles quelles
var credential = new NetworkCredential(user, password, domain);
var cache = new CredentialCache();
cache.Add(new Uri("http://intra.example.local/"), "Negotiate", credential);

var handler = new HttpClientHandler { Credentials = cache };

Ce qui change ici, c’est uniquement la chaîne du type d’authentification. Si vous remplacez credential par CredentialCache.DefaultNetworkCredentials, ce n’est pas seulement le protocole d’authentification qui change, c’est aussi l’identité qui s’authentifie. L’authentification se fera alors avec le compte exécutant le processus (compte de service ou utilisateur connecté) plutôt qu’avec le compte spécifié, ce qui peut cesser de fonctionner selon les droits configurés côté destination. Traitez le remplacement du protocole et la révision des informations d’identification comme deux changements distincts, à mener séparément.

À l’inverse, si vous voulez délibérément vous authentifier avec les informations d’identification de l’utilisateur connecté (authentification Windows intégrée), l’écriture peut être plus simple. C’est la façon d’écrire à utiliser quand on change intentionnellement « en tant que qui » on s’authentifie.

// Authentification Windows intégrée (s'authentifie avec l'utilisateur actuellement connecté)
var handler = new HttpClientHandler
{
    UseDefaultCredentials = true,
};

La gestion de HttpClient lui-même (ne pas l’envelopper dans un using, patrons de création, conception des délais d’expiration) est détaillée dans « N’enveloppez pas HttpClient dans un using ».

Si vous devez manipuler SSPI directement, System.Net.Security.NegotiateAuthentication, ajouté à partir de .NET 7, permet de gérer l’authentification via Negotiate depuis du code managé. Là aussi, le point clé est de ne pas spécifier NTLM comme nom de package.

8.2. Avant même le code : « comment la destination est écrite »

Même en corrigeant le code, si la destination reste une adresse IP, cela finira quand même par retomber sur NTLM. Par défaut, lorsque le nom d’hôte est une adresse IP, Windows ne tente pas d’authentification Kerberos pour cet hôte et se replie sur un autre protocole valide comme NTLM.10 Concrètement, vérifiez les points suivants.

  • Le nom de serveur écrit dans les fichiers de configuration (appsettings.json, App.config, fichiers ini)
  • La spécification du serveur dans la chaîne de connexion SQL Server (Data Source)
  • Les endroits où un chemin UNC est construit — présence d’adresses IP codées en dur
  • Les valeurs par défaut de l’installeur ou des procédures de préparation de poste
  • Les endroits où, lors d’une résolution d’incident passée, le nom a été remplacé par une IP « parce que la résolution de nom était instable », sans jamais être revenu en arrière

Le dernier point se rencontre vraiment très souvent. L’adresse IP en dur était, à l’époque, un remède d’urgence correct, mais c’est aujourd’hui une dette technique.

8.3. Si vous développez le côté service

Si vous voulez que votre service Windows maison ou votre application IIS accepte Kerberos, il faut enregistrer un SPN, pour le compte qui déchiffre le ticket, correspondant au nom que le client utilise pour y accéder. Comme Microsoft lui-même le cite en exemple représentatif, une application dont le SPN n’est pas enregistré retombera sur NTLM, même en se disant compatible Kerberos.3

Si l’on considère naïvement que le compte cible est « le compte qui exécute le service », on trébuche avec IIS. L’authentification Windows d’IIS a par défaut l’authentification en mode noyau activée, auquel cas ce n’est pas l’identité du pool d’applications mais le compte machine utilisé par HTTP.sys qui déchiffre le ticket Kerberos. Même si le pool d’applications s’exécute sous un compte de domaine dédié, enregistrer le SPN HTTP du site sur ce compte crée un décalage entre le titulaire du SPN et le compte qui déchiffre réellement, si bien que l’authentification échoue purement et simplement avec KRB_AP_ERR_MODIFIED, bien pire qu’un simple repli sur NTLM.

Le point clé est de « faire correspondre le titulaire du SPN à l’identité qui déchiffre le ticket ». Deux options sont possibles.

  • Déchiffrer avec le compte machine (par défaut) : si le site est publié sous un nom d’hôte, enregistrer le SPN HTTP de ce nom d’hôte sur le compte machine.
  • Déchiffrer avec l’identité du pool d’applications : activer useAppPoolCredentials, puis enregistrer le SPN HTTP sur le compte du pool d’applications.

Le choix dépend de si le même compte de service est partagé entre plusieurs serveurs (si c’est le cas, opter pour l’identité du pool est plus simple à gérer). Notez que le SPN ne peut être enregistré que sur un seul compte, donc en cas de bascule, n’oubliez pas de supprimer l’ancien enregistrement. Un double enregistrement casse l’authentification Kerberos elle-même.

Si votre conception fait usurper l’identité du client pour accéder à d’autres serveurs (délégation), le traitement diffère entre NTLM et Kerberos. Kerberos prend en charge un mécanisme de délégation permettant à un service de se connecter à un autre service pour le compte du client, alors que NTLM ne fournit que les informations d’autorisation nécessaires à une usurpation locale.8 L’implémentation autour de l’usurpation d’identité est traitée dans « Usurpation d’identité (impersonation) et jetons sous Windows ».

9. Feuille de route pour un resserrement progressif

Pour résumer tout cela, voici l’ordre de progression. La condition à chaque étape est de pouvoir « revenir en arrière ».

Étape Action Critère d’achèvement
0. Préparation Revoir la taille et la durée de conservation des journaux d’événements. Si un mécanisme de collecte existe (WEF, etc.), vérifier le chemin Les journaux ne disparaissent pas par écrasement même une fois l’audit activé
1. Visibilité Activer les trois stratégies d’audit et collecter jusqu’à ce qu’un cycle complet d’activité soit passé (au minimum, couvrir une clôture mensuelle) La liste « poste × destination × processus » est constituée et les traitements peu fréquents ont aussi eu l’occasion de s’exécuter
2. Classification Trier les causes à l’aide du tableau du chapitre 5. Les hôtes affichant NTLMv1 sont traités à part, en priorité absolue Chaque ligne a un responsable et une catégorie assignés
3. Corriger les noms Passer des adresses IP en dur à des FQDN. Enregistrer les SPN L’événement 8001 correspondant n’apparaît plus
4. Vérification (SMB) Vérifier connexion par connexion avec NET USE /BLOCKNTLM (selon la procédure de la section 7.1) Les partages principaux se connectent sans NTLM
5. Pilote (SMB) Set-SmbClientConfiguration -BlockNTLM $true sur quelques postes, par exemple ceux du service informatique Couvrir un cycle de clôture sans impact sur l’activité
6. Déploiement (SMB) Diffuser le blocage NTLM sur SMB via stratégie de groupe. Constituer une liste d’exceptions minimale Le nombre d’entrées dans la liste d’exceptions reste à une échelle gérable
6b. Au-delà de SMB Fermer ce qui reste (HTTP, SQL Server, WinRM, applications maison) en suivant l’ordre audit → enregistrement d’exceptions → refus sur « Trafic NTLM sortant vers des serveurs distants ». Pour l’ensemble du domaine, procéder dans le même ordre avec « Authentification NTLM dans ce domaine » Les événements 8001 en dehors de SMB n’apparaissent plus non plus
7. Continuité Compter régulièrement le nombre d’entrées à la fois dans la liste d’exceptions SMB et dans la liste d’exceptions serveur de Restrict NTLM. Suivre la disponibilité des fonctionnalités de la phase 2 Le nombre d’exceptions diminue chaque année

9.1. Arrêter SMB ne représente que la moitié du traitement de NTLM

Les étapes 4 à 6 ne traitent que SMB. Comme mentionné au chapitre 7, le blocage NTLM du client SMB est une fonctionnalité côté client SMB4 et n’a aucun effet sur les autres chemins. Ce qui a été classé à l’étape 2 comme « s’authentifie en HTTP », « SQL Server est en NTLM », « WinRM utilise NTLM » reste intact même une fois parvenu à l’étape 6. Et comme cela n’apparaît pas non plus dans la liste d’exceptions SMB, compter les entrées ne le révèle pas.

C’est l’étape 6b qui referme ce point. On utilise les trois mêmes stratégies que celles passées en mode audit au chapitre 4. La procédure suit la même forme.11

  1. En laissant « Trafic NTLM sortant vers des serveurs distants » sur « Tout auditer », recenser les destinations encore présentes
  2. Enregistrer dans « Ajouter une exception de serveur distant » les correspondants absolument nécessaires
  3. Basculer sur « Tout refuser » sur des postes pilotes et attendre qu’un cycle complet d’activité passe
  4. Déployer si aucun problème n’apparaît

Pour l’ensemble du domaine, procédez de même avec « Authentification NTLM dans ce domaine », dans l’ordre audit → exception (« Ajouter une exception de serveur pour ce domaine ») → refus.12 Microsoft indique lui aussi qu’avant de choisir l’option de refus, il faut configurer la stratégie d’audit correspondante sur la même option afin d’évaluer l’impact.12

Ce n’est pas parce que SMB est bloqué que le traitement de NTLM est terminé. Si vous voulez un indicateur d’achèvement, comptez à la fois la liste d’exceptions SMB et la liste d’exceptions serveur de Restrict NTLM.

9.2. Fixer la période d’audit non pas en « jours » mais en « cycle complet d’activité »

À l’étape 1, l’erreur la plus fréquente porte sur la façon de fixer la période. Si l’on conclut « c’est terminé, on a collecté pendant deux semaines », les traitements qui ne se sont pas exécutés pendant ces deux semaines n’apparaîtront pas dans la liste. Et ce qui n’y figure pas ne cassera qu’une fois le blocage déployé à l’étape 6.

Voici concrètement ce qui échappe facilement au filet.

  • Les traitements de clôture mensuelle ou trimestrielle. Un exemple typique est un traitement par lot de fin de mois qui se connecte à un dossier partagé ou une base de données par adresse IP en dur.
  • Les traitements annuels. Inventaire, changement d’exercice, opérations liées à la clôture comptable.
  • Les chemins qui ne s’exécutent qu’en cas d’incident. Procédures de restauration depuis une sauvegarde, bascule vers un serveur de secours, exercices de reprise après sinistre (DR).
  • Les postes hors ligne pendant longtemps. PC emportés à l’extérieur, poste d’un employé en congé prolongé, machine de secours habituellement éteinte.
  • Les applications métier utilisées seulement quelques fois par an.

Le guide de Microsoft lui-même indique que l’analyse peut s’étendre sur plusieurs mois selon la complexité du déploiement.3 Une limite réaliste se situe dans l’une des deux options suivantes.

  1. Continuer l’audit jusqu’à ce qu’un cycle complet d’activité soit passé. Au minimum une clôture mensuelle, si possible en couvrant un trimestre entier.
  2. Recenser les traitements peu fréquents et les exécuter délibérément. Si l’on ne peut pas attendre aussi longtemps, faire tourner les traitements de clôture et les procédures DR en environnement de test et ajouter leurs résultats à la liste. Le point clé est de dresser au préalable, en interrogeant les responsables, la liste des traitements qui « n’apparaissent pas simplement parce qu’ils ne se sont pas exécutés ».

Dans les deux cas, avancez à l’étape suivante seulement une fois en mesure de distinguer « l’événement n’est pas apparu » de « ce n’est pas encore exécuté ».

9.3. Ne pas basculer d’un coup vers le refus

Ici, le point clé est de ne pas basculer d’un coup « Trafic NTLM sortant = Tout refuser ». Microsoft indique lui aussi que définir cette stratégie sur refus peut faire échouer de nombreuses demandes d’authentification NTLM et nuire à la productivité, et qu’avant de la mettre en œuvre, il faut examiner le journal avec « Tout auditer », analyser les serveurs, et constituer une liste d’exceptions à exclure.7 Un avertissement similaire figure pour la stratégie « Authentification NTLM dans ce domaine », qui s’applique à l’ensemble du domaine.12

10. Conclusion

  • Toutes les versions de NTLM ont été dépréciées en juin 2024. Ce n’est pas un changement qui arrête tout immédiatement : NTLM continuera de fonctionner dans la prochaine version de Windows Server et la prochaine version annuelle de Windows.1
  • En revanche, NTLMv1 est déjà supprimé (Windows 11 24H2 / Windows Server 2025). Les appareils qui ne parlent qu’en NTLMv1 et les hôtes où NTLM V1 est enregistré représentent l’échéance la plus proche.1
  • La fin de NTLM se déroule en 3 phases : la phase 1 est l’audit, la phase 2 (seconde moitié de 2026) apporte IAKerb et le KDC local, la phase 3 est la désactivation par défaut.2
  • L’audit consiste à passer trois stratégies en mode audit et à collecter Microsoft-Windows-NTLM/Operational. Pour un compte de domaine, en suivant l’ordre 8004 du DC → 8003 du serveur membre → 8001 du client, on arrive finalement jusqu’au nom de l’application. L’authentification par compte local ne fait pas apparaître le 8004, il faut donc la repérer via les événements du serveur et du client.37
  • Via SMB, le PID est toujours 4 (SYSTEM). Restreignez d’abord jusqu’au poste via les journaux d’événements, puis suivez ce seul poste avec ProcMon.3
  • La cause principale, dans la majorité des cas, est un « nom ». Éliminer les adresses IP en dur et les SPN non enregistrés réduit considérablement le nombre d’exceptions restantes.32
  • NET USE \\server\share /BLOCKNTLM est le moyen de vérification le plus sûr : il permet de recouper sur une seule connexion, sans modifier aucune stratégie.4
  • Pour les applications maison, remplacez les mentions explicites de NTLM par Negotiate, et uniformisez l’écriture des destinations sur le FQDN.5
  • Une liste d’exceptions n’est pas une solution, c’est un sursis. Utilisez comme indicateur le fait que le nombre d’entrées diminue chaque année.

Articles connexes

Domaines de conseil associés

合同会社小村ソフト (Komura Software LLC) prend en charge le recensement des dépendances à NTLM, la modification des applications métier liée à la migration vers un environnement fondé sur Kerberos, ainsi que l’investigation des dysfonctionnements liés à l’authentification.

Références

  1. Microsoft Learn, Deprecated features in the Windows client. Sur le fait que toutes les versions de NTLM, y compris LANMAN, NTLMv1 et NTLMv2, sont exclues du développement actif de fonctionnalités et dépréciées ; que l’utilisation de NTLM continuera de fonctionner dans la prochaine version de Windows Server et dans la prochaine version annuelle de Windows ; que les appels à NTLM devraient être remplacés par des appels à Negotiate, qui tente une authentification par Kerberos et ne se replie sur NTLM que lorsque c’est nécessaire ; que l’annonce de dépréciation date de juin 2024 ; et que, dans une mise à jour de novembre 2024, NTLMv1 a été supprimé de Windows 11 version 24H2 et de Windows Server 2025. Ainsi que sur la distinction entre dépréciation (deprecated) et suppression (removed) comme deux étapes différentes, une fonctionnalité dépréciée n’étant plus développée activement et pouvant être supprimée dans une future mise à jour.  2 3 4 5 6 7 8 9 10 11

  2. Microsoft Japan Windows Technology Support Blog, NTLM の廃止に向けた対応について. Sur le déroulement de la fin de NTLM en trois phases (phase 1 = visibilité et audit de l’utilisation, phase 2 = fonctionnalités prévues pour la seconde moitié de 2026 répondant aux scénarios dépendant de NTLM, phase 3 = désactivation par défaut de l’authentification NTLM réseau dans la prochaine version majeure) ; sur les trois stratégies de groupe à configurer pour l’audit (auditer l’authentification NTLM dans ce domaine, auditer le trafic NTLM entrant, trafic NTLM sortant vers des serveurs distants = tout auditer) et la vérification via le journal NTLM/Operational ; sur le fait qu’il faut envisager l’utilisation d’IAKERB et du KDC local lors de la migration vers Kerberos, la disponibilité du KDC local étant prévue pour la seconde moitié de 2026 ; sur le fait que les applications doivent utiliser Negotiate ; et sur les causes typiques de recours à NTLM : accès au serveur par adresse IP, restriction par pare-feu des ports nécessaires à Kerberos, SPN non enregistré, authentification vers une relation d’approbation, et authentification en environnement de groupe de travail.  2 3 4 5 6 7 8 9 10 11

  3. Microsoft Learn, Viewing events for assessing NTLM usage. Sur le fait qu’on peut déterminer si un événement de connexion du journal de sécurité concerne NTLM V1 ou V2 en recherchant « Package d’authentification » puis en consultant le « Nom du package (NTLM uniquement) » des « Informations d’authentification détaillées » ; que l’analyse peut s’étendre sur plusieurs mois selon la complexité du déploiement ; sur les quatre types d’applications qui, en théorie compatibles avec Kerberos, utilisent NTLM (applications permettant de choisir la configuration de sécurité ou le fournisseur, applications dont le SPN n’est pas correctement configuré, applications utilisant une adresse IP plutôt qu’un nom DNS à cause d’une erreur de configuration ou de la documentation d’un fournisseur, applications à la base de code héritée conservant une partie spécifique à NTLM) ; sur les trois stratégies utilisées pour l’audit et les ID d’événements correspondants ; sur la procédure de suivi, de l’événement 8004 du contrôleur de domaine (date/heure, nom du canal sécurisé, nom d’utilisateur, nom de domaine, nom de la station de travail) à l’événement 8003 du serveur membre (date/heure, nom d’utilisateur, nom de domaine, nom de la station de travail, PID), puis à l’événement 8001 du client (date/heure, serveur cible, utilisateur spécifié, domaine spécifié, nom du processus client, ID utilisateur du processus client) ; sur le fait que si le serveur cible n’est ni au format NetBIOS ni au format FQDN, Kerberos n’est pas utilisé ; que l’authentification par un compte utilisateur local ne fait pas apparaître l’événement 8004 du contrôleur de domaine ; et que pour les applications communiquant via un redirecteur comme SMB, le PID est toujours 4 (SYSTEM), ce qui nécessite Process Monitor pour identifier le processus appelant côté client.  2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

  4. Microsoft Learn, Block NTLM connections on SMB in Windows Server 2025. Sur le fait qu’un client SMB peut bloquer l’utilisation de l’authentification NTLM pour ses connexions sortantes vers un serveur distant ; que cela empêche la technique consistant à faire envoyer une requête NTLM à un serveur malveillant et permet de contrer les attaques par force brute, par cassage de mot de passe et Pass-the-Hash ; que le blocage NTLM est nécessaire pour faire basculer le protocole d’authentification de l’organisation vers Kerberos, tout en pouvant être activé seul sans désactiver complètement NTLM ; sur les prérequis (client SMB sous Windows Server 2025 ou ultérieur, ou Windows 11 version 24H2 ou ultérieure, et serveur SMB de destination pouvant utiliser Kerberos) ; sur le fait qu’il s’agit d’une fonctionnalité côté client SMB, le serveur SMB de destination pouvant tourner sur n’importe quel OS prenant en charge PKU2U ou Kerberos ; sur la configuration via stratégie de groupe (« Bloquer NTLM (LM, NTLM, NTLMv2) » sous Configuration ordinateur > Modèles d'administration > Réseau > Station de travail Lanman) et via PowerShell (Set-SmbClientConfiguration -BlockNTLM $true) ; sur la liste d’exceptions « Bloquer la liste d’exceptions de serveurs NTLM », dans laquelle on énumère adresses IP, noms NetBIOS et FQDN, sans cmdlet PowerShell dédiée pour la créer — une configuration initiale via l’éditeur de stratégie de groupe étant nécessaire, les ajouts ultérieurs pouvant se faire individuellement via la valeur de registre BlockNTLMServerExceptionList ; et sur la possibilité de bloquer NTLM au niveau d’un mappage de lecteur avec NET USE \\serveur\partage /BLOCKNTLM et New-SmbMapping -RemotePath \\serveur\partage -BlockNTLM $true 2 3 4 5 6 7 8 9 10 11 12 13 14

  5. Microsoft Learn, Microsoft NTLM. Sur le fait que les informations d’identification NTLM se composent d’un hachage à sens unique du nom de domaine, du nom d’utilisateur et du mot de passe, obtenu lors de la connexion interactive ; que l’authentification se fait par un défi/réponse chiffré sans faire transiter le mot de passe sur le réseau ; sur la procédure de l’authentification non interactive (le client envoie le nom d’utilisateur en clair, le serveur génère un nombre aléatoire de 8 octets — le défi — et l’envoie, le client chiffre le défi avec le hachage du mot de passe et renvoie la réponse, le serveur transmet le nom d’utilisateur, le défi et la réponse au contrôleur de domaine, le contrôleur de domaine reprend le même calcul avec le hachage extrait de la base SAM et compare les résultats) ; et sur le fait que les applications ne devraient pas accéder directement au package de sécurité NTLM mais utiliser le package de sécurité Negotiate, lequel choisit entre Kerberos et NTLM en sélectionnant Kerberos sauf si l’un des systèmes impliqués dans l’authentification ne peut pas l’utiliser.  2 3 4

  6. Microsoft Learn, NTLM overview in Windows Server. Sur le fait que l’authentification NTLM regroupe les protocoles d’authentification contenus dans Msv1_0.dll (LAN Manager versions 1 et 2, NTLM versions 1 et 2) ; qu’elle authentifie les utilisateurs et les ordinateurs par un mécanisme de défi/réponse ; que chaque fois qu’un serveur de ressources a besoin d’un nouveau jeton d’accès, il interroge le service d’authentification du contrôleur de domaine pour un compte de domaine, ou consulte sa propre base de comptes locale pour un compte local ; que NTLM continue d’être utilisé, et doit l’être, pour l’authentification Windows sur les systèmes configurés comme membres d’un groupe de travail et pour l’authentification de connexion locale en dehors des contrôleurs de domaine ; que Kerberos version 5 est la méthode d’authentification recommandée dans un environnement Active Directory ; et que réduire l’usage de NTLM exige à la fois de comprendre les besoins des applications déployées et de configurer l’utilisation d’autres protocoles.  2 3

  7. Microsoft Learn, Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers. Sur les quatre valeurs possibles (Tout autoriser, Tout auditer, Tout refuser, Non défini), « Non défini » étant équivalent à « Tout autoriser » ; sur la procédure recommandée consistant à choisir d’abord « Tout auditer », à examiner le journal d’exploitation, puis à constituer une liste d’exceptions serveur ; sur l’emplacement du paramètre (Configuration ordinateur\Paramètres Windows\Paramètres de sécurité\Stratégies locales\Options de sécurité) ; sur le fait qu’aucun redémarrage n’est nécessaire et que le paramètre est effectif dès son enregistrement, que ce soit localement ou via une stratégie de groupe ; sur le fait que les événements d’audit et de blocage sont enregistrés dans le journal d’exploitation « Journaux des applications et des services\Microsoft\Windows\NTLM », pour lequel il n’existe pas de stratégie d’événements d’audit de sécurité correspondante ; sur le fait que l’authentification NTLM et NTLMv2 est vulnérable à diverses attaques malveillantes, notamment le relais SMB, l’attaque de l’intercepteur et les attaques par force brute ; et sur le fait que définir cette stratégie sur refus peut faire échouer de nombreuses demandes d’authentification NTLM et nuire à la productivité, d’où la nécessité d’évaluer l’impact par l’audit et de constituer une liste d’exceptions au préalable.  2 3 4 5 6 7 8

  8. Microsoft Learn, Kerberos authentication overview in Windows Server. Sur le fait que le KDC fonctionne sur le contrôleur de domaine et utilise la base de données Active Directory Domain Services comme base de comptes de sécurité ; que Kerberos prend en charge la délégation (un service se connectant à un autre service pour le compte du client), tandis que NTLM comme Kerberos ne fournissent, pour la représentation locale, que les informations d’autorisation nécessaires ; que dans l’authentification NTLM antérieure à Kerberos, un serveur d’application devait se connecter au contrôleur de domaine chaque fois qu’il authentifiait un client ou un service, alors qu’avec Kerberos un ticket de session renouvelable remplace cette authentification en relais et le serveur n’a pas besoin d’aller au contrôleur de domaine sauf si une vérification du PAC est nécessaire ; et que Kerberos permet aux deux extrémités d’une connexion de vérifier l’identité de l’autre, alors que NTLM ne permet ni au client de vérifier le serveur ni à un serveur de vérifier un autre serveur, étant conçu pour des environnements où l’on peut supposer que le serveur est authentique.  2

  9. Microsoft Learn, Assessing NTLM usage. Sur la nécessité de découvrir et d’auditer l’état actuel du trafic d’authentification NTLM avant de mettre en œuvre des stratégies ou des pratiques permettant d’utiliser un protocole d’authentification amélioré comme Kerberos ; sur les trois points où il faut capturer l’utilisation de NTLM (le trafic sortant depuis les contrôleurs de domaine du domaine, le trafic entrant vers un serveur distant, et le trafic entrant d’un client vers un serveur distant) ; et sur le fait que la compréhension de l’environnement est un travail itératif. 

  10. Microsoft Learn, Configuring Kerberos for IP Address. Sur le fait qu’à partir de Windows 10 version 1507 et Windows Server 2016, un client Kerberos peut prendre en charge un nom d’hôte IPv4/IPv6 dans un SPN ; que par défaut, lorsque le nom d’hôte est une adresse IP, Windows ne tente pas d’authentification Kerberos pour cet hôte et se replie sur un autre protocole d’authentification valide comme NTLM ; que des applications codant en dur des adresses IP se replient ainsi sur NTLM, ce qui peut poser des problèmes de compatibilité dans un environnement en cours de désactivation de NTLM ; que pour en réduire l’impact, une fonctionnalité permettant d’utiliser une adresse IP comme nom d’hôte dans un SPN a été introduite, activée en mettant à 1 la valeur de registre côté client TryIPSPN (REG_DWORD, absente par défaut) sous HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\Parameters, à configurer sur chaque client ayant besoin d’accéder par adresse IP à une ressource protégée par Kerberos ; et sur le fait qu’une adresse IP étant temporaire — pouvant entraîner des conflits ou des échecs d’authentification liés à l’expiration et au renouvellement d’un bail — elle n’est normalement pas utilisée à la place d’un nom d’hôte, l’enregistrement d’un SPN basé sur une IP étant une opération manuelle à réserver aux cas où il est impossible de passer à un nom d’hôte basé sur le DNS, l’enregistrement se faisant via Setspn -s <service>/<ip.address> <domain-user-account>, un SPN ne pouvant être enregistré que sur un seul compte à la fois dans Active Directory, ce qui recommande une réservation IP statique en cas d’utilisation de DHCP.  2 3 4

  11. Microsoft Learn, Restricting NTLM usage. Sur la nécessité de découvrir et d’auditer l’état actuel du trafic d’authentification NTLM avant de mettre en œuvre la stratégie de sécurité « Restreindre NTLM » ; sur les trois points où restreindre le trafic NTLM (trafic NTLM sortant des contrôleurs de domaine du domaine, trafic NTLM sortant d’un serveur distant, trafic NTLM d’un client vers un serveur distant de destination) ; et sur la configuration d’exceptions serveur permettant d’autoriser l’authentification NTLM pour les serveurs jugés acceptables. 

  12. Microsoft Learn, Network security: Restrict NTLM: NTLM authentication in this domain. Sur les valeurs possibles (Désactiver, Refuser pour les comptes de domaine vers les serveurs de domaine, Refuser pour les comptes de domaine, Refuser pour les serveurs de domaine, Tout refuser, Non défini) ; sur le fait que cette stratégie ne s’applique qu’aux contrôleurs de domaine et n’affecte pas les connexions interactives à un contrôleur de domaine ; sur le fait qu’une demande refusée renvoie une erreur de blocage NTLM et que les serveurs figurant dans la liste d’exceptions de la stratégie « Ajouter une exception de serveur pour ce domaine » en sont exclus ; et sur la nécessité de configurer la stratégie d’audit correspondante sur la même option avant de choisir l’option de refus, afin d’évaluer l’impact via le journal d’exploitation.  2 3

Articles récents partageant les mêmes étiquettes, pour approfondir des sujets proches.

Ces pages replacent le sujet dans un contexte plus large de services et de décisions.

Cet article est directement lié aux services suivants.

Questions fréquentes

Questions souvent posées lors d’une consultation sur le sujet de cet article.

Si NTLM est supprimé, à partir de quand mon activité va-t-elle s'arrêter ?
L'annonce de « dépréciation (deprecated) » à elle seule n'arrête rien. Microsoft a déprécié toutes les versions de NTLM en juin 2024, mais l'annonce précisait alors que « l'utilisation de NTLM continuera de fonctionner dans la prochaine version de Windows Server et dans la prochaine version annuelle de Windows ». Le changement concret qui a déjà cessé de fonctionner est la suppression de NTLMv1 dans Windows 11 version 24H2 et Windows Server 2025. Un projet de désactivation par défaut de NTLM réseau dans une future version a été annoncé, mais même à ce moment-là, il sera possible de le réactiver via une stratégie. Autrement dit, ce n'est pas le genre de changement où « toute l'entreprise s'arrête soudainement un jour », mais un resserrement progressif à chaque nouvelle version de l'OS. C'est précisément pour cela que la seule préparation réaliste consiste à recenser les dépendances via les journaux d'audit pendant que NTLM fonctionne encore, plutôt que d'enquêter après l'arrêt.
Comment puis-je dresser la liste des endroits où NTLM est utilisé ?
Passez les stratégies de groupe « Sécurité réseau : Restreindre NTLM » en mode audit et collectez le journal NTLM/Operational. En configurant « Auditer l'authentification NTLM dans ce domaine » sur les contrôleurs de domaine, et « Auditer le trafic NTLM entrant » ainsi que « Trafic NTLM sortant vers des serveurs distants = Auditer tout » sur les serveurs et les clients, les événements sont enregistrés dans l'Observateur d'événements sous « Journaux des applications et des services > Microsoft > Windows > NTLM ». Pour une authentification par compte de domaine, la méthode de suivi consiste à identifier l'utilisateur et le serveur de destination (nom du canal sécurisé) à partir de l'événement 8004 du contrôleur de domaine, puis à examiner l'ID de processus dans l'événement 8003 de ce serveur, et enfin à déterminer « quelle application, avec quel nom de serveur » a fait la demande grâce à l'événement 8001 du client. L'événement 8001 contient le nom du serveur cible et le nom du processus client, donc une fois arrivé là, l'application responsable est identifiée. Cependant, l'authentification par compte local ne passe pas par le contrôleur de domaine, donc l'événement 8004 n'apparaît pas. Pour les chemins où une machine en groupe de travail ou un compte local sur un serveur de fichiers se connecte à un partage, il faut les repérer via l'événement 8003 côté serveur et l'événement 8001 côté client. Ne concluez pas « chez nous, il y en a peu » en regardant uniquement les journaux du contrôleur de domaine.
Après avoir audité, le PID des événements est toujours 4 (SYSTEM) et je n'arrive pas à identifier l'application.
C'est parce que la communication passe par SMB (dossier partagé). L'authentification SMB est effectuée par le redirecteur en mode noyau, si bien que l'application appelante se cache derrière les paquets SMB, et le PID conservé dans l'événement est toujours 4 (SYSTEM). Le guide de Microsoft mentionne explicitement ce cas et indique comme solution d'exécuter Process Monitor (ProcMon) sur le client où l'événement apparaît, de filtrer le chemin par le nom d'ordinateur et l'adresse IP du serveur cible, puis de recouper avec l'horodatage de l'événement 8003 côté serveur pour identifier le processus appelant. En pratique, il est plus rapide de d'abord restreindre « quel poste » via les journaux d'événements, puis de ne suivre que ce poste avec ProcMon.
Pourquoi une application censée être compatible Kerberos retombe-t-elle sur NTLM ?
C'est presque toujours un problème de nom. Le guide de Microsoft cite quatre types d'applications qui, en théorie compatibles avec Kerberos, finissent par utiliser NTLM : les applications qui permettent de choisir la configuration de sécurité ou le fournisseur, les applications dont le SPN (nom de principal de service) n'est pas correctement enregistré, les applications qui se connectent par adresse IP plutôt que par nom DNS à cause d'une erreur de configuration ou de la documentation d'un fournisseur, et les applications dont la base de code héritée conserve une partie spécifique à NTLM. Si le « serveur cible » de l'événement 8001 n'est ni au format NetBIOS ni au format FQDN (c'est-à-dire une adresse IP), Kerberos n'est pas utilisé dans la configuration par défaut. Les deux premières actions à mener sont de remplacer une adresse IP en dur par un FQDN, et, si l'accès se fait sous un alias, d'enregistrer un SPN pour ce nom. Notez qu'il existe aussi une méthode pour les cas où il est vraiment impossible de passer à un nom — configurer TryIPSPN côté client et enregistrer manuellement un SPN pour l'adresse IP — mais Microsoft lui-même indique qu'elle ne doit être utilisée que lorsqu'il est impossible de basculer vers un nom DNS ; ce n'est donc qu'un dernier recours.
Que faut-il corriger dans une application Windows que nous développons nous-mêmes ?
Remplacez les endroits où le package d'authentification nomme explicitement NTLM par Negotiate. Microsoft indique clairement que « les applications ne devraient pas accéder directement au package de sécurité NTLM, mais utiliser le package Negotiate ». Negotiate choisit entre Kerberos et NTLM, et sélectionne Kerberos sauf si l'un des systèmes impliqués dans l'authentification ne peut pas l'utiliser. En .NET, la correction typique consiste à remplacer le type d'authentification passé à CredentialCache.Add de "NTLM" par "Negotiate" (c'est CredentialCache.Add qui précise le type d'authentification, pas le constructeur de NetworkCredential). Il faut aussi spécifier la destination par son FQDN plutôt que par une adresse IP ou un alias déclaré dans le fichier hosts, et, si vous voulez que votre propre service accepte Kerberos, enregistrer un SPN pour son compte de service.

Profil de l’auteur

Page de présentation de l’auteur de l’article.

Go Komura

Représentant de KomuraSoft LLC

Spécialisé dans le développement de logiciels Windows, le conseil technique et l’analyse de pannes, notamment pour les systèmes existants et les incidents difficiles à reproduire.

Retour au blog