22/12/2024

Active DirectoryCybersécurité

Comment désactiver le protocole NTLM dans un domaine Active Directory ?

I. Présentation

Dans ce tutoriel, nous allons apprendre à désactiver le protocole NTLM sur un domaine Active Directory car il est obsolète et représente un risque en termes de sécurité. Mais avant cela, il me semble important de vous parler du protocole d'authentification NTLM en lui-même afin d'évoquer quels sont les risques d'utiliser le protocole NTLM en production...

Nous verrons également que c'est périlleux et déconseillé de désactiver le protocole NTLM du jour au lendemain, car en fonction des systèmes, des applications et du matériel que vous utilisez, il pourrait y avoir un impact sur le bon fonctionnement de votre système d'information. C'est pour cela qu'il faut y aller par étape.

II. Le protocole NTLM

A. Qu'est-ce que le protocole NTLM ?

NTLM pour (Windows) NT LAN Manager est un protocole d'authentification utilisé par les systèmes d'exploitation Windows, que l'on rencontre sur les environnements Active Directory bien qu'il agisse aussi en mode "Groupe de travail" pour l'authentification entre deux machines.

NTLM est principalement utilisé en entreprise pour permettre aux utilisateurs d'accéder à des ressources partagées sur un réseau, telles que des fichiers ou des imprimantes, en réalisant l'authentification auprès du contrôleur de domaine Active Directory. En complément, il est utilisé par certains périphériques et applications, toujours pour la partie authentification.

Bien que NTLM soit encore largement utilisé dans les environnements Windows, il a été remplacé par des protocoles de sécurité plus modernes, tels que Kerberos, dans les dernières versions de Windows. Puisque Kerberos est là, on peut, en théorie, désactiver NTLM.

B. Les faiblesses du protocole NTLM

Le protocole NTLM contient de nombreuses faiblesses qui le rendent vulnérable à des attaques. Certains outils comme Mimikatz représentent le cauchemar d'une infrastructure où le protocole NTLM est actif...

L'algorithme de chiffrement utilisé par NTLMv1 est faible, ce qui le rend vulnérable, et en plus, le hash d'un mot de passe peut être extrait de la mémoire du service LSA sur une machine Windows. Ensuite, ce hash peut être réutilisé au sein d'attaques afin de s'authentifier.

On peut citer les attaques de type "NTLM Pass-the-Hash" et "NTLM Relay" lorsque l'on évoque l'authentification NTLM. Même si NTLMv2 améliore la sécurité du protocole NTLM en lui-même et qu'il permet de se protéger contre certaines attaques, ce n'est pas suffisant !

Pour en savoir plus sur les attaques de type "NTLM Relay", je vous recommande la lecture de cet article.

C. Pourquoi est-il encore utilisé ?

Si l'on sait que le protocole NTLM n'est pas suffisamment sécurité et qu'il n'est pas recommandé, pourquoi continue-t-on de l'utiliser dans certaines entreprises ? On peut dire que c'est comme avec le protocole SMBv1 : c'est à cause des applications et du matériel vieillissants.

Si une application ou un périphérique que vous utilisez ne prend pas en charge une méthode d'authentification plus moderne et sécurisée (Kerberos), mais qu'elle repose sur le NTLM, vous pouvez être contraint d'autoriser NTLM (ou de remplacer l'élément bloquant, mais c'est facile à dire). Autrement dit, NTLM reste utilisé pour des raisons de compatibilité entre des clients et des serveurs.

III. Désactiver - progressivement - le protocole NTLM

Nous n'allons pas désactiver brutalement le protocole NTLM sur l'ensemble du domaine Active Directory : c'est trop risqué en production et vous risquez d'avoir de mauvaises surprises... Abandonner NTLM, ça se planifie et ça implique de procéder progressivement. Nous allons plutôt adopter la méthodologie suivante :

  • Activer l'audit pour collecter les demandes d'authentification basée sur le protocole NTLM
  • Désactiver le protocole NTLMv1
  • Configurer des exceptions pour autoriser certaines machines à utiliser NTLM
  • Désactiver le protocole NTLMv2

Prêt ? Alors, c'est parti !

A. Audit NTLM

Tout d'abord, nous allons créer la GPO "Sécurité - NTLM - Audit" afin de configurer le paramètre "Sécurité réseau : Restreindre NTLM : Authentification NTLM dans ce domaine" situé à cet emplacement dans la liste des paramètres :

Configuration ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies locales > Options de sécurité

GPO Audit NTLM

Nous allons cocher la case "Définir ce paramètre de stratégie" et choisir "Activer tout" dans la liste.

Active Directory - Auditer NTLM

Ensuite, lorsque cette GPO sera activée sur les contrôleurs de domaine, nous pourrons constater la présence de différents événements. De manière générale, dans le journal "Sécurité" de Windows, chaque ouverture de session génère un événement avec l'ID 4624. Le problème, c'est que l'ID est le même pour Kerberos, NTLM, etc... Donc ce n'est pas facile de s'y retrouver. Voici un exemple où l'on voit clairement un événement lié à NTLM :

Active Directory - Event 4624 NTLM

Toutefois, Windows intègre un journal spécifique à NTLM que l'on peut retrouver dans :

Journaux des applications et des services > Microsoft > Windows > NTLM

Ici, on retrouve les événements propres à NTLM comme cette ouverture de session sur un serveur IIS sur lequel l'authentification NTLM est configurée.

Windows - Journal NTLM

Ce journal d'événements peut contenir des événements avec d'autres ID comme le montrent les deux commandes ci-dessous.

(Get-WinEvent -ListProvider Microsoft-Windows-NTLM).Events | Select Id, Description
(Get-WinEvent -ListProvider Microsoft-Windows-NTLM).Events | Select Id,Description | ft -Wrap

Get-WinEvent NTLM

En analysant ces journaux, vous pourrez identifier les machines qui émettent des requêtes d'authentification NTLM et auxquelles il faut s'intéresser avant de désactiver NTLM...

B. Désactiver le protocole NTLMv1

Maintenant, nous allons désactiver le protocole NTLMv1 qui représente un vrai risque en matière de sécurité. Même si NTLMv2 ce n'est pas l'idéal, c'est toujours un peu mieux... Et toujours dans l'idée de procéder étape par étape, on va forcer les contrôleurs de domaine à répondre en NTLMv2 s'ils sont sollicités via ce protocole d'authentification.

Nous allons éditer la GPO "Sécurité - NTLM - Forcer NTLMv2" et parcourir les paramètres de cette façon :

Configuration ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies locales > Options de sécurité

Ici, il faut modifier le paramètre "Sécurité réseau : niveau d'authentification LAN Manager".

Sécurité - NTLM - Forcer NTLMv2 GPO

Ce paramètre doit être défini donc on coche la case "Définir ce paramètre de stratégie" avant de choisir la valeur "Envoyer uniquement les réponses NTLM v.2". Validez.

Active Directory - Forcer NTLMv2

Un message d'avertissement va apparaître, cliquez sur "Oui" pour valider.

Active Directory - Désactiver NTLMv1 - GPO - 3

La GPO est prête, il ne reste plus qu'à l'appliquer la GPO aux contrôleurs de domaine grâce à une liaison sur l'OU "Domain Controllers" de l'annuaire Active Directory.

C. Ajouter des exceptions

Si vous savez que vos serveurs applicatifs s'appuient sur NTLM et qu'il n'est pas possible de faire autrement pour le moment, vous avez la possibilité d'ajouter des exceptions pour les autoriser à travailler avec NTLM. Suite à l'audit mis en place précédemment, il sera plus facile d'identifier "les machines à problèmes".

Nous allons créer une GPO nommée "Sécurité - NTLM - Désactiver NTLM" dans laquelle on va déclarer nos exceptions et désactiver NTLM pour les autres machines. Le paramètre se situe au même endroit que précédemment, à savoir :

Configuration ordinateur > Stratégies > Paramètres Windows > Paramètres de sécurité > Stratégies locales > Options de sécurité

Active Directory - NTLM - Ajouter une exception par GPO - 1

Pour configurer ce paramètre, nous allons cocher l'option "Définir ce paramètre de stratégie dans le modèle" et indiquer le(s) hôte(s) à autoriser. Il est possible d'utiliser l'astérisque, comme sur l'écran ci-dessous. Microsoft précise : "Le format de nom des serveurs indiqués dans cette liste d’exceptions correspond au nom de domaine complet (FQDN) ou au nom de serveur NetBIOS utilisé par l’application appelante, chacun étant répertorié sur une ligne. Un seul astérisque (*) peut être utilisé au début ou à la fin de la chaîne en tant que caractère générique."

Active Directory - NTLM - Ajouter une exception par GPO - 2

Validez, c'est bon pour ce paramètre de GPO.

D. Désactiver NTLMv1 et NTLMv2

Toujours dans la GPO "Sécurité - NTLM - Désactiver NTLM", nous allons configurer un second paramètre situé au même endroit. Ce paramètre s'appelle "Sécurité réseau : Restreindre NTLM : Authentification NTLM dans ce domaine".

Active Directory - Désactiver NTLM par GPO

Nous allons cocher la case "Définir ce paramètre de stratégie" et choisir l'état "Refuser tout" pour désactiver l'authentification NTLM dans le domaine Active Directory ! Il y a également d'autres modes, plus ou moins restrictifs. Attention, ne sélectionnez pas la valeur "Désactiver" sinon cela revient à autoriser NTLM.

Active Directory - Désactiver NTLMv1 et NTLMv2 - GPO

Il ne reste plus qu'à appliquer la GPO sur le domaine. Ensuite, le journal NTLM du serveur sera alimenté par un événement avec l'ID 4004 de la catégorie "Blocage NTLM" lorsqu'il y aura une tentative d'authentification via NTLM :

Active Directory - NTLM - Event ID 4004

IV. Conclusion

Suite à la lecture de cet article, vous disposez d'une bonne base d'information pour tenter de vous débarrasser de NTLM au sein de votre infrastructure Active Directory ! Il ne vous reste plus qu'à adapter ces paramètres à votre environnement et à faire vos tests.

Il est à noter que le groupe de sécurité "Protected Users", intégré à l'Active Directory depuis Windows Server 2012 R2, est recommandé pour protéger les comptes sensibles. Ce qui est intéressant par rapport au sujet évoqué dans cet article, c'est que tous les membres de ce groupe sont obligés d'utiliser l'authentification Kerberos. C'est un bon moyen de faire des tests avant de bloquer NTLM.

L'authentification Kerberos implique que pour se connecter à un serveur, en RDP par exemple, vous devez utiliser le nom DNS de la machine. Par extension, ce sera le cas dans vos applications. Si vous le faites déjà, c'est très bien, mais si vous utilisez l'adresse IP, il va falloir revoir vos habitudes. D'ailleurs, vous pourrez constater que ceci s'applique aux membres du groupe "Protected Users" : logique.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

10 commentaires sur “Comment désactiver le protocole NTLM dans un domaine Active Directory ?

  • Bonjour,

    comment faire un retour arrière au cas ou ?

    Répondre
    • En retirant la GPO, Windows va appliquer les paramètres par défaut et autoriser NTLM 🙂

      Répondre
      • Merci.
        Car plis de rds chez moi même en laissant le ntlmv2…

        Répondre
  • Bonjour Florian,

    je me permet de vous solliciter par rapport a votre video, je ne comprend pas comment je dois lire les logs. est ce qu’a partir du moment ou j’active l’adit NTLM tout les logs ID 8004 veulent dire que j’ai du NTLM activé? si oui comment comprendre la lecture ?
    exemple:
    Nom de canal sécurisé : SRV-Files01
    Nom d’utilisateur : toto
    Nom de domaine : ITTech
    Nom de la station de travail : ITTech-PC-001
    Type de canal sécurisé : 2

    Répondre
  • Bonjour Florian,

    J’ai la meme question de Florent Garcia j’ai l’ID 8004 mais je ne comprends pas cet ID.

    Répondre
  • Désactiver complétement NTLM est dangereux !
    Il est préférable de laisser NTLM v2…

    Si on désactive NTLM COMPLÉTEMENT, plus d’accès a une machine (imprimante, routeur etc) par l’adresse IP….

    https://youtu.be/ojO0iivpD4U?t=525

    Répondre
  • Bonjour, Après de mauvaise manips sur mes GPO par défaut, je me retrouve avec des utilisateurs AD qui ne peuvent pas changer leur mot de passe (erreur : ACCES REFUSE)
    Cela peut il etre lié à NTLM ou à la base SAM. J’avoue etre dans le flou le plus total.

    Répondre
  • Bonjour,

    Petit filtre XML pour n’avoir que les requêtes NTLM dans le journal de sécurité :

    *[EventData[Data[@Name=’LmPackageName’] and (Data=’NTLM V1′ or Data=’LM’)]]

    à custom NTLM v1 ou v2 en fonction.

    Répondre
  • Bonjour,

    J’ai noté qu’en utilisant un compte dans protected users l’accès au sysvol via l’unc \\domain.local ne fonctionne plus… et pour cause, pas de SPN HOST(ou CIFS)/domain.local (ni d’ailleurs pour LDAP).
    Je me demande quelles sont les implications de la désactivation de NTLM quant à la descente des GPO par exemple.
    Sur un poste du domaine je constate avec ipconfig /displaydns que domain.local a bien été résolu, faudrait que je scanne pour voir les connexions qui ont suivi mais si vous avez des remarques entre temps je veux bien 🙂

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.