
Migration NTLM vers Kerberos
31 août 2025Thank you for reading this post, don't forget to subscribe!
Introduction
NTLM est un protocole historique d’authentification Windows, vulnérable aux attaques par relay, brute force et pass-the-hash.
Microsoft a annoncé sa désactivation progressive dans Windows 11 et Windows Server 2025.
Pour éviter la panne, il est indispensable de :
Auditer l’usage réel de NTLM dans ton environnement,
Identifier les applications, serveurs et comptes qui y sont encore liés,
Mettre en place un plan de migration progressive vers Kerberos,
Valider la bascule sans casse en production.
Pré-requis
Active Directory fonctionnel (Windows Server 2016+).
SIEM ou au minimum Event Viewer centralisé.
Droits administrateur domaine pour activer l’audit.
Vérification que tous les DC supportent Kerberos (c’est le cas dès 2008+).
Astuce terrain : fais ce projet en phases contrôlées. On n’appuie jamais sur “disable NTLM” d’un coup.
Pourquoi migrer de NTLM vers Kerberos ?
NTLM est vulnérable à : NTLM Relay, Pass-the-Hash, Rainbow tables.
Kerberos apporte : tickets chiffrés, délégation, authentification mutuelle, compatibilité avec ADFS, Azure AD et MFA.
Microsoft annonce : NTLM retiré d’ici 2026 → migration obligatoire.
Audit de l’usage NTLM
Activer l’audit NTLM via GPO
GUI
Ouvre la GPMC (Group Policy Management).
Crée un GPO “Audit NTLM”.
Chemin : Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options.
Paramètre : Network security: Restrict NTLM: Audit NTLM authentication in this domain → Enabled.
PowerShell
1 2 3 | Set-GPRegistryValue -Name "Audit NTLM" ` -Key "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0" ` -ValueName "AuditReceivingNTLMTraffic" -Type DWord -Value 2 |
Vérifier les Event Logs
Sur les DC → Event Viewer →Applications and Services Logs → Microsoft → Windows → NTLM → Operational
Event ID 4002 : NTLM authentication used.
Event ID 4003 : NTLM blocked.
PowerShell
1 2 3 | Get-WinEvent -LogName "Microsoft-Windows-NTLM/Operational" | Where-Object { $_.Id -eq 4002 } | Select-Object TimeCreated, @{n="Source";e={$_.Properties[1].Value}}, @{n="Target";e={$_.Properties[2].Value}} |
Analyse et identification des dépendances
Applications legacy (IIS, SQL, imprimantes, appliances).
Partages SMB utilisant NTLM fallback.
Machines hors domaine → souvent NTLM.
Comptes de service mal configurés.
Construis une cartographie précise : qui utilise NTLM, pourquoi, et avec quel serveur.
Plan de migration progressive
Étape 1 – Phase Audit (lecture seule)
Laisser GPO en mode Audit only.
Consolider les logs NTLM → identifier TOP 20 sources.
Documenter applications sensibles.
Étape 2 – Bloquer NTLM par scope
GUI (GPO)
Network security: Restrict NTLM: NTLM authentication in this domain → Deny for domain accounts.
PowerShell
1 2 3 | Set-GPRegistryValue -Name "Audit NTLM" ` -Key "HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0" ` -ValueName "RestrictReceivingNTLMTraffic" -Type DWord -Value 2 |
Active d’abord sur un OU pilote (ex: utilisateurs IT internes).
Étape 3 – Migration vers Kerberos
Activer Kerberos uniquement dans les policies.
Vérifier que les SPN (Service Principal Names) sont correctement configurés.
Exemple :
1 | setspn -S HTTP/serveur.contoso.com CONTOSO\svc_app |
Étape 4 – Validation post-bascule
Contrôler que plus aucun Event ID 4002 n’apparaît.
Vérifier authentifications en Kerberos :
1 | klist |
Regarder le cache TGT/TGS → tickets Kerberos et non NTLM.
Bonnes pratiques pour réussir la migration
Toujours tester sur une OU pilote avant généralisation.
Communiquer aux équipes applicatives (SQL, IIS, SharePoint).
Documenter chaque SPN ajouté.
Surveiller les logs DC pendant minimum 1 mois après bascule.
Prévoir un rollback : réactiver NTLM si incident critique (rare, mais rassurant).
Supervision & suivi long terme
Intégrer le log NTLM/Operational dans ton SIEM.
Déclencher une alerte si NTLM est encore vu après bascule.
Vérifier régulièrement avec
repadmin /showrepl
etdcdiag /v
que Kerberos fonctionne correctement.
Annexes — commandes utiles
1 2 3 4 5 6 7 8 9 10 11 | # Lister SPN d’un compte setspn -L CONTOSO\svc_app # Supprimer un SPN en doublon setspn -D HTTP/serveur.contoso.com CONTOSO\svc_app # Vérifier cache Kerberos klist # Rechercher dans logs NTLM Get-WinEvent -LogName "Microsoft-Windows-NTLM/Operational" | ? Id -eq 4002 |
Téléchargement des scripts
Vous pouvez télécharger gratuitement le pack complet NTLM → Kerberos Toolkit
Il contient tous les scripts PowerShell et modèles GPO décrits dans ce tutoriel, prêts à être utilisés dans votre environnement Active Directory.
Contenu du pack
Audit-NTLM.ps1
Analyse-NTLM.ps1
Create-GPO-Audit-NTLM.ps1
Create-GPO-Restrict-NTLM.ps1
Link-GPO.ps1
README.md
Views: 29