Audit Active Directory : Part 3 - les comptes utilisateurs

Envoyer Imprimer PDF

Sommaire

 

 

Introduction

Autant d’un point de vue sécurité qu’à titre informatif, il peut être intéressant d’auditer vos comptes utilisateurs Active Directory.

Pour cela, j’ai réalisé un script PowerShell qui va vous permettre de générer un rapport Excel tel que présenté ci-dessous.

 

 

 

 

 

Le script disponible depuis le lien suivant : http://gallery.technet.microsoft.com/scriptcenter/Generate-Excel-report-48c3f3b4

L’objectif de cet article est donc de vous expliquer la méthodologie appliquée pour la réalisation de ce script. Cela vous permettra de comprendre son fonctionnement et d’analyser les données présentées.

 

 

Collecter les informations nécessaires

La première étape est bien entendu de collecter tous les comptes utilisateurs depuis votre annuaire Active Directory. L’information collectée devra nous permettre de quantifier les objets utilisateurs, d’en définir l’état et d’énumérer les différentes configurations existantes.

Le but n’est pas de collecter toutes les propriétés de chaque utilisateur sachant que cela peut s’avérer très consommateur et par forcément très pertinent.

Nous allons simplement nous focaliser sur les propriétés standards nécessaires à l’identification de chaque compte utilisateur (distinguishedName, sAMAccountName…). Je m’appuie également sur certains attributs spécifiques me permettant donc de qualifier la configuration et l’état de chaque compte utilisateur :

  • pwdLastSet : indique la date du dernier changement du mot de passe. Cet attribut va permettre d’identifier les comptes ayant un mot de passe de plus de XX jours.
  • lastLogonTimestamp : une fois le niveau fonctionnel de domaine Windows Server 2003 activé au sein de votre infrastructure Active Directory, les contrôleurs de domaine utilisent cet attribut pour identifier la date de dernière ouverture de session. L’attribut n’est pas 100% fiable sachant que certains comptes utilisateurs sont exclusivement utilisés via des portails Web qui ne vont pas permettre de mettre à jour cet attribut. Toutefois, il reste le meilleur moyen pour identifier si un  compte utilisateur est inactif ou non.
  • accountexpires : cet attribut contient la date d’expiration d’un compte utilisateur. Il permettra donc d’identifier les comptes ayant expirés.
  • userAccountControl : cet attribut est particulièrement riche en information car il contient de nombreux indicateurs sur la configuration de chaque utilisateur (http://support.microsoft.com/kb/305144/fr).

 

Depuis Windows Server 2003, certains indicateurs de l’attribut userAccountControl ont été remplacé par l’attribut construit « msds-user-account-control-computed ». Nous trouverons entre autres les informations de verrouillage du compte te de l’expiration du mot de passe. Nous devrons donc également l’exploiter.

Le script génère donc un fichier CSV avec les informations suivantes :

  • displayName, distinguishedname, samaccountname, userPrincipalName : la valeur de chacun de ces attributs pour identifier le compte utilisateur. La liste n’est pas exhaustive. Il est possible que vous ayez besoin d’autres attributs…
  • useraccountcontrol: la valeur cet attribut est fournie uniquement à titre indicatif sachant que durant la collecte, l’attribut est déjà traité.
  • isPreAuthNotRequired: si l’option est activée, cela induit que le compte peut s’affranchir de la pré-authentification Kerberos et donc de mécanismes de sécurité supplémentaires.
  • isActive: indique que le compte est actif depuis une période spécifique (par défaut depuis 180 jours). La valeur de la période peut être changée grâce à paramètre « InactiveDays » du script.
  • isDESKeyOnly: permet d’utiliser la norme DES pour l’option de chiffrement qui est considéré comme obsolète.
  • isDisabled: spécifie si le compte est désactivé.
  • isExpired: informe que le compte est expiré.
  • isLocked: signale que le compte est verrouillé. Bien entendu, si vous avez une politique de déverrouillage de compte, l’information ne sera pertinente qu’au moment de la collecte.
  • isPwdNotRequired: indique si le compte peut utiliser un mot de passe vide. Cette option peut représenter un risque en termes de sécurité.
  • isPwdEncryptedTextAllowed: autorise le stockage de mots de passe par le biais d’un chiffrement réversible et donc n’assure nullement la protection du mot de passe.
  • isPwdOld: indique si le mot de passe est considéré comme étant obsolète (par défaut 120 jours). La durée d’obsolescence peut être modifiée via le paramètre « PasswordAge » du script.
  • isPwdNeverExpires: informe que le mot de passe n’a pas d’expiration. Un mot de passe qui n’expire jamais peut représenter une faille de sécurité.
  • isPwdExpired: permet de savoir si le mot de passe du compte utilisateur est expire.

Le rapport Excel s’appuie donc exclusivement sur la collecte de ces données. Afin de vous faciliter la vie, le script stocke ces données dans un fichier CSV afin de permettre soit de le traiter selon vos besoins ou tout simplement de pouvoir collecter les données et de générer les informations de manière séparée.

Le paramètre « CollectOnly » du script va permettre de collecter uniquement les données sans générer le fichier Excel. Le paramètre « ExistingData », quant à lui, va permettre de générer le  rapport Excel à partir d’un fichier de collecte existant.

 

 

Informations utiles sur le rapport Excel

Comme vous avez pu le voir en introduction, le rapport Excel contient trois graphiques différents :

Volumetry of user accounts : ce graphique permet d’avoir le nombre total d’objets utilisateur de votre domaine. Il permet également de voir le pourcentage de comptes actifs/inactifs. Plus le pourcentage de comptes inactifs est élevé plus cela indique qu’il faudra intégrer une stratégie de cycle de vie sur les comptes utilisateurs.

Status of user accounts : le deuxième tableau liste les différents états possibles de vos comptes utilisateurs actifs et inactifs. J’ai décidé de scinder l’information entre les utilisateurs actifs et inactifs sachant qu’elle n’est pas forcément très pertinente pour des comptes inactifs… Le graphique se focalise sur l’état des comptes actifs. Notez également qu’un compte peut être dans plusieurs états simultanément… hormis pour l’état dit « standard » qui est exclusif.

Configuration of user accounts : à la manière du deuxième tableau, il liste les différentes configurations de vos comptes utilisateurs actifs et inactifs et fourni un graphique uniquement sur les utilisateurs actifs. Un compte utilisateur peut avoir plusieurs paramètres associés.

 

 

Conclusion

Avec cette troisième partie sur l’audit d’Active Directory, je vous ai proposé une solution rapide et simple pour collecter et traiter les informations de l’ensemble de vos comptes utilisateurs. Le prochain article se focalisera plus spécifiquement sur les comptes disposant de privilèges.

Mise à jour le Vendredi, 25 Octobre 2013 15:34