Migration NTLM vers Kerberos

Migration NTLM vers Kerberos

31 août 2025 0 Par Rached Chader

Thank 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

  1. Ouvre la GPMC (Group Policy Management).

  2. Crée un GPO “Audit NTLM”.

  3. Chemin : Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options.

  4. Paramètre : Network security: Restrict NTLM: Audit NTLM authentication in this domain → Enabled.

PowerShell

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

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

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 :

Étape 4 – Validation post-bascule

  • Contrôler que plus aucun Event ID 4002 n’apparaît.

  • Vérifier authentifications en Kerberos :

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 et dcdiag /v que Kerberos fonctionne correctement.

Annexes — commandes utiles

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