Active Directory : les informations cachées derrière le « User Account Control »

//Active Directory : les informations cachées derrière le « User Account Control »

Active Directory : les informations cachées derrière le « User Account Control »

Le terme ”User Account Control” peut renvoyer vers deux mécanismes bien connus des utilisateurs de Windows. Le premier a été introduit dans Windows Vista et permet d’exécuter les programmes avec des droits restreints par défaut. Le second est un attribut des comptes (utilisateurs ou ordinateurs) dans Active Directory. C’est ce deuxième mécanisme que nous allons aborder dans cet article.

L’attribut “User Account Control” est un nombre décimal, compris entre 2 et 134 167 290. En réalité, si ce nombre n’a aucune signification en base 10, celui-ci devient plus lisible en binaire. On se retrouve alors avec un nombre codé sur 4 octets (32 bits) non signé. Chaque bit de ce nombre est indépendant des autres et joue le rôle de « flag » :

  • si sa valeur est à 1 alors la propriété à laquelle il correspond est activée pour le compte à qui est attribué l’UAC,
  • si elle est désactivée, le bit est à 0.

bit 32 0000 0000 0000 0000 0000 0000 0000 0000 bit 1

Le tableau ci-dessous décrit l’ensemble des propriétés contenues dans l’UAC [1].

N° du bitValeur décimalePropriétéDescription
11SCRIPTUn script sera exécuté à la connexion du compte.
22ACCOUNTDISABLELe compte est désactivé.
34RéservéChamp obligatoirement à 0.
48HOMEDIR_REQUIREDUn dossier d’accueil doit obligatoirement être spécifié.
516LOCKOUTLe compte est verrouillé par le système.
632PASSWD_NOTREQDLe compte peut en pas avoir de mot de passe.
764PASSWD_CANT_CHANGEL’utilisateur ne peut pas modifier le mot de passe.
8128ENCRYPTED_TEXT_PWD_ALLOWEDL’utilisateur peut envoyer un mot de passe chiffré
9256TEMP_DUPLICATE_ACCOUNTIndique qu’il s’agit d’un compte temporaire pour les utilisateurs qui se trouvent dans un autre domaine.
10512NORMAL_ACCOUNTType de compte par défaut qui représente un utilisateur classique.
111 024RéservéChamp obligatoirement à 0.
122 048INTERDOMAIN_TRUST_ACCOUNTCe champ définit un compte de confiance pour un domaine qui à d’autres domaines de confiance.
134 096WORKSTATION_TRUST_ACCOUNTDéfinit un compte ordinateur du domaine qui exécute Windows NT 4.0 Workstation, Windows NT 4.0 Server, Windows 2000 Professionnel ou Windows 2000 Server.
148 192SERVER_TRUST_ACCOUNTDéfinit un compte d’ordinateur pour un contrôleur de domaine, membre de ce domaine.
1516 384RéservéChamp obligatoirement à 0.
1632 768RéservéChamp obligatoirement à 0.
1765 536DONT_EXPIRE_PASSWORDLe mot de passe du compte n’expire jamais.
18131 072MNS_LOGON_ACCOUNTCe champ définit un compte MNS (Majority Node Set).
19262 144SMARTCARD_REQUIREDCe champ oblige l’utilisateur à se connecter avec une carte à puce.
20524 288TRUSTED_FOR_DELEGATIONPermet à un compte de service d’être approuvé par la délégation Kerberos.
211 048 576NOT_DELEGATEDEmpêche le compte utilisateur d’utiliser la délégation Kerberos, même si le compte de service est approuvé.
222 097 152USE_DES_KEY_ONLYLimite à l’utilisation de DES (Data Encryption Standard) pour la génération de clef.
234 194 304DONT_REQ_PREAUTHCe compte n’a pas besoin de la pré-authentification Kerberos pour se connecter.
248 388 608PASSWORD_EXPIREDIndique que le mot de passe du compte a expiré.
2516 777 216TRUSTED_TO_AUTH_FOR_DELEGATIONCe compte est autorisé à la délégation.
2633 554 432RéservéChamp obligatoirement à 0.
2767 108 864PARTIAL_SECRETS_ACCOUNTLe compte fait partie des contrôleurs de domaine en lecture seule (Read Only Domain Controler – RODC)
28134 217 728RéservéChamp obligatoirement à 0.
29268 435 456RéservéChamp obligatoirement à 0.
30536 870 912RéservéChamp obligatoirement à 0.
311 073 741 824RéservéChamp obligatoirement à 0.
322 147 483 648RéservéChamp obligatoirement à 0.

Exemple :

Prenons un UAC de valeur : 514

L’UAC nous indique ainsi qu’il s’agit d’un compte normal, à l’état désactivé.

 

Quelques valeurs par défaut :

  • Compte utilisateur : 512 (NORMAL_ACCOUNT)
  • Contrôleur de domaine : 532 480 (TRUSTED_FOR_DELEGATION + SERVER_TRUST_ACCOUNT)
  • Serveur : 4 096 (WORKSTATION_TRUST_ACCOUNT)

Maintenant que la mécanique du User Account Control est moins floue, nous allons parler des bonnes pratiques associées [2].

  • Un contrôleur de domaine doit contenir SERVER_TRUST_ACCOUNT et TRUSTED_FOR_DELEGATION.
  • Un contrôleur de domaine en lecture seule doit contenir PARTIAL_SECRETS_ACCOUNT, TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION et WORKSTATION_TRUST_ACCOUNT.
  • Les comptes doivent imposer la pré-authentification Kerberos et donc ne pas contenir DONT_REQUIRE_PREAUTH.
  • Les comptes ne doivent pas avoir de mot de passe sans date d’expiration donc la propriété DONT_EXPIRE ne doit pas être appliquée.
  • Aucun compte hors contrôleur de domaine ne doit contenir TRUSTED_FOR_DELEGATION si la délégation d’authentification n’est pas contrainte.
  • L’attribut USE_DES_KEY_ONLY ne doit pas être utilisé car il est obsolète.

 

Pour conclure, l’important n’est pas de connaître la valeur de l’attribut UAC d’un compte mais ce qu’il veut dire. C’est pourquoi les solutions d’IAG préfèrent le traduire en plusieurs champs “activé/désactivé” comme “Mot de passe n’expire jamais : Activé”. L’UAC est une source d’information brute semblable à celles d’autres systèmes (exemple : flag “REVOKED” pour les systèmes RACF) mais trouve toute sa force une fois décomposé et traduit pour rendre la gouvernance des identités et des accès simple et lisible pour les utilisateurs finaux.

 

Sources :

[1] Documentation Microsoft attribut UAC — https://docs.microsoft.com/fr-fr/troubleshoot/windows-server/identity/useraccountcontrol-manipulate-account-properties (26/03/2021)

[2] Points de contrôle Active Directory ANSSI — https://www.cert.ssi.gouv.fr/uploads/guide-ad.html (26/03/2021)

 

Vous aimerez aussi :