Articles Tagués ‘Active Directory Tips & Tricks’

 

Comme vous le savez, Microsoft propose un module PS qui vous  permet de créer, gérer et administrer l’annuaire Active Directory (rôle ADDS) via Windows PowerShell : Il s’agit du module « ActiveDirectory « .

Pour obtenir la liste complète des Cmd-lets fournies avec ce module, exécutez la commande suivante :

Get-Command -Module ActiveDirectory

Pour connaître le nombre exact de Cmd-lets fournies avec le module ActiveDirectory, exécutez la commande suivante :

(Get-Command -Module ActiveDirectory).Count

Comme montré ci-dessus, 147 Cmd-lets au total (au moment de l’écriture de cet article) sont disponibles avec le module ActiveDirectory.

Aujourd’hui, nous allons uniquement nous intéresser à la Cmd-Let « Get-ADUser« .

Celle-ci sera utilisée pour :

Connaître la date de changement de mot de passe des utilisateurs de notre annuaire AD

Lister tous les comptes utilisateurs ayant un mot de passe qui n’expire jamais !

 

Introduction à la Cmd-let « Get-ADUser »

La Cmd-let « Get-ADUser » vous permet de lister un ou plusieurs (Objets) utilisateurs Active Directory.

A l’aide de certains paramètres Get-ADUser, vous pouvez réaliser des requêtes/opérations avancées sur des objets « Utilisateurs » ainsi que leurs propriétés.

Quelques exemples d’utilisation :

  • Lister tous les utilisateurs qui ne sont pas connectés depuis 180 jours
  • Lister tous les utilisateurs qui font parti du département « Marketing »
  • Lister tous les utilisateurs qui ont un mot de passe qui n’expire « Jamais »
  • Lister tous les comptes utilisateurs dont le mot de passe expire dans une semaine
  • ..

Vous pouvez consulter cet article pour en savoir plus sur la Cmd-let Get-ADUser.

Paramètres associés avec la Cmd-Let « Get-ADUser »

Pour lister tous les paramètres et options disponibles avec la Cmd-Let Get-ADUser, je vous invite à exécuter la commande suivante :

help Get-ADUser

 

HowTo : connaitre la date de modification/changement du mot de passe de vos utilisateurs AD

Pour connaitre la date à laquelle un mot de passe a été changé/modifié, nous allons d’abord récupérer le nom de la propriété qui stocke cette information.

Pour ce faire, je vais dans l’exemple suivant exécuter la commande Get-ADUser -identity hicham.kadiri -properties * pour afficher toutes les propriétés de la Cmd-Let Get-ADUser (ou hicham.kadiri est le nom d’utilisateur de mon compte AD).

Comme illustré dans la capture d’écran précédente, la propriété qui stocke la date de changement du mot de passe est « PasswordLastSet« .

Dans l’exemple suivant, nous allons afficher la date à laquelle le mot de passe du compte utilisateur « hicham.kadiri » a été changé, seules les propriétés « Name » et « PasswordLastSet » sont sélectionnées :

Get-ADUser -identity hicham.kadiri  -Properties Name, PasswordLastSet | Select Name, PasswordLastSet

Pour obtenir la même information mais au niveau de votre domaine AD (tous les comptes utilisateurs du domaine), la commande suivante est exécutée :

Get-ADUser -Filter * -Properties Name, PasswordLastSet | Select Name, PasswordLastSet

Comme vous pouvez le conster, les informations (dates & heures) retournées au niveau de la colonne « PasswordLastSet » ne sont pas triées.

Si vous souhaitez trier ces données (du plus récent au plus ancien dans l’exemple suivant), la commande suivante est utilisée :

Get-ADUser -Filter * -Properties Name, PasswordLastSet | Select Name, PasswordLastSet | Sort PasswordLastSet -Descending

Tip : lister tous les comptes utilisateurs qui ont un mot de passe qui n’expire jamais peut également être utile car si vous avez défini une nouvelle stratégie de mot de passe (au niveau du domaine ou OU via une PSO/FGPP), celle-ci ne s’appliquera jamais sur les comptes utilisateurs ayant l’option « Le mot de passe n’expire jamais » cochée.

Nous allons dans l’exemple suivant lister tous les comptes utilisateurs dont le mot de passe n’expire jamais, et afficher uniquement les trois propriétés suivantes : Nom, PasswordLastSet et PasswordNeverExpires :

Get-ADUser -Filter * -Properties Name, PasswordLastSet, PasswordNeverExpires | Select Name, PasswordLastSet, PasswordNeverExpires | Sort PasswordLastSet -Descending

Enfin, si vous souhaitez exporter ces informations vers un fichier CSV pour les traiter/présenter plus tard, exécutez la commande suivante :

Get-ADUser -Filter * -Properties Name, PasswordLastSet, PasswordNeverExpires | Select Name, PasswordLastSet, PasswordNeverExpires | Sort PasswordLastSet -Descending | Export-csv C:\AuditAD.csv

Publicités

Hello tout le monde,

La liste complète des DCs de votre domaine AD peut être obtenu via :

Windows PowerShell (Cmd-lets Get-ADDomainController ou Get-ADGroupMember)

Outil CLI : NLTest.exe

 

Comment ça marche ?

Via la Cmd-let « Get-ADDomainController »

  • Lancez Windows PowerShell (en tant qu’Admin) depuis un DC ou un serveur d’administration ayant les outils RSAT AD DS installés
  • Saisissez la commande suivante : Get-ADDomainController -Filter * | Select Name

Via la Cmd-Let « Get-ADGroupMember »

  • Lancez Windows PowerShell (en tant qu’Admin) depuis un DC ou un serveur d’administration ayant les outils RSAT AD DS installés
  • Saisissez la commande suivante : Get-ADGroupMember « Contrôleurs de Domaine » | Select Name
    • Note importante : Cette commande retourne uniquement les WDC (Writable Domain Controllers), si vous souhaitez aussi lister les RODC (Read-Only Domain Controllers), vous devez exécuter la commande : Get-ADGroupMember « Read-Only Domain Controllers » | Select Name

Via l’outil CLI « NLTest.exe »

  • Lancez l’Invite de commande (CMD.exe) depuis un DC ou une machine d’administration et saisissez la commande suivante : NLTest /DCList:Nom_de_domaine

 

S’applique à : Active Directory 2008 – 2008 R2 – 2008 R2 SP1 – 2012 – 2012 R – 2016

Tout d’abord, il faut savoir qu’il existe deux types de défragmentation de la base AD : En-ligne & Hors-ligne

Par défaut, les défragmentations En-ligne se produisent (automatiquement) toutes les 12 heures. Cette défragmentation fait partie du processus Garbage Collection d’Active Directory, décrit dans la KB Microsoft suivante :

The Active Directory Database Garbage Collection Process

Bien que la nature automatique des défragmentations en ligne les rendent commodes, elles ne réduisent en rien la taille du fichier base de données AD (NTDS.Dit) sur un Contrôleur de domaine. Les défragmentations en ligne ne font que récupérer l’espace libre de l’intérieur du fichier. Pour réduire la taille du fichier vous devez effectuer une défragmentation manuelle. Pour ce faire, suivez les instructions suivantes.

Dans l’exemple suivant, la taille de ma base AD (taille du fichier NTDS.dit) est ~2.65 GB :

Nous allons donc procéder à la défragmentation de la base afin de réduire la taille du fichier NTDS.dit, pour ce faire, suivez les instructions suivantes :

Lancez l’Invite de commande (CMD.exe) en tant qu’Administrateur et saisissez la commande suivante pour arrêter le service NTDS (service Windows correspondant à l’instance AD DS : Active Directory Domain Services)

Net Stop NTDS

Plusieurs services Windows dépendent du services NTDS, notamment les service DNS et DFS Replication

Confirmez l’arrêt du service NTDS mais aussi des 4 autres services Windows qui en dépendent, en saisissant Y (comme Yes)

Maintenant que la base AD est arrêtée, nous pouvons effectuer toutes les opérations de maintenance dessus, et notamment l’opération de défragmentation.

Pour ce faire, nous utilisons l’outil NTDSUtil, fourni par défaut sur tout Contrôleur de domaine.

Depuis la même Invite de commande, saisissez les commandes suivantes :

NTDSUtil

Activate Instance NTDS

File

Info

Les informations suivantes sont retournées. Notez la taille du fichier NTDS.dit

Pour défragmenter la base AD, saisissez la commande suivante

Comptact to C:\NTDS.dit

Dans l’exemple suivant, le fichier NTDS.dit (placé par défaut dans C:\Windows\NTDS) sera défragmenté et placé directement dans C:\NTDS.dit

Une fois la défragmentation terminée, vous devrez copiez ce nouveau fichier (défragmenté) dans C:\Windows\NTDS (et écraser l’ancien).

Enfin, saisissez la commande suivante pour copier le nouveau NTDS.dit vers C:\Windows\NTDS et écraser l’ancien base AD

Copy « C:\NTDS.dit\ntds.dit » « C:\Windows\NTDS\ntds.dit »  

Confirmez en saisissant Y (comme Yes)

Notez que vous devez également supprimer les anciens fichiers logs (placés par défaut dans C:\Windows\NTDS\*.log), pour ce faire, saisissez la commande suivante:

Del C:\Windows\NTDS\*.log

Enfin, démarrez la base AD et ses services Windows associés en saisissant :

Net Start NTDS

Ouvrez l’explorateur Windows et notez la nouvelle taille de la base AD. Dans l’exemple suivant, la taille du fichier NTDS.dit a été réduite de 2GB.

Lors des derniers audits AD réalisés chez mes clients, la taille de certaines bases AD est passée de 20 GB à 2,5 GB :).

Pour finir, je vous recommande la réalisation de cette opération d’une manière trimestrielle ou semestrielle, cela permettra d’optimiser l’espace disque utilisé sur les partitions systèmes (C:) de vos DCs, mais surtout améliorer les performances en matière d’authentification sur votre annuaire AD.

A bientôt

HK.

¯_(ツ)_/¯

Lors de la création d’une nouvelle Unité d’Organisation (OU : Organizational Unit), celle-ci est par défaut « Protégée contre la suppression accidentelle »; il arrive que des IT Admins désactivent cette option. Il s’agit ici d’un risque majeur car une OU peut avoir des sous-OU contenant des objets de sécurité « critiques » tels que des comptes utilisateurs (VIP : PDG /DG), des compteurs ordinateurs (Laptop de directeurs : Administratif /Financier…) voire aussi des partages, imprimantes, groupes de sécurité …Etc

Il est recommandé d’effectuer régulièrement un audit « Light » des OU non protégées contre la suppression accidentelle.

Comment ça marche ?
Lister toutes les OUs non protégées contre la suppression accidentelle

Ouvrez une Session Windows sur un DC ou une machine d’Administration ayant les outils RSAT installés

Lancez Windows PowerShell en tant qu’Administrateur et saisissez la commande suivante :

Get-ADOrganizationalUnit -filter * -Properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $false} | FT -AutoSize

Activer la « Protection contre la suppression accidentelle » sur les OUs non protégées 

Ouvrez une Session Windows sur un DC ou une machine d’Administration ayant les outils RSAT installés

Lancez Windows PowerShell en tant qu’Administrateur et saisissez la commande suivante :

Get-ADOrganizationalUnit -filter * -Properties ProtectedFromAccidentalDeletion | where {$_.ProtectedFromAccidentalDeletion -eq $false} | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true