FANDOM


Prof : Nader Chaabouni

Les stratégies de sécurité et automatisation des tâches Edit

Module 0. Présentation du cours Edit

Présentation des concepts AD Edit

Active Directory ― ...

Exemple d'un domaine : cmaisonnueuve.qc.ca

  • utilisateurs
  • groupes
  • ordinateurs

Base de données Active Directory : NTDS.DIT (sur le Contrôleur du Domaine, CD).

Deux façons de représenter un utilisateur d'Active Directory :

  • CMAISONNEUVE\utilisateur
  • utilisateur@cmaisonneuve.qc.ca

Créer et supprimer un domaine Edit

Les consoles d'AD Edit

Module 1. Les contrôleurs de domaine Edit

CD secondaires Edit

Forêts, arbres, domaines et sous-domaines Edit

Domaine ― ...

Sous-domaine ― ...

N.B. Des sous-domaines sont des domaines !

Arbre de domaines ― ...

Forêt de domaines ― ...

Délégation de domaine Edit

Maîtres d'opérations Edit

Screenshot 20180528 085355

Le maître d'opérations (Master operation) désigne certains types de contrôleurs de domaine dans AD : certains rôles sont uniques pour tous les domaines de la forêt...

  • Émulateur PDC (1 par domaine)
  • Maître RID (1 par domaine)
  • Maître d'infrastructure (1 par domaine)
  • Maître d'attribution de noms de domaine (1 par forêt)
  • Contrôleur de schéma (1 par forêt)
Émulateur PDC Edit

Assure que les mots de passe sont bien à jour.

  • Gère toutes les modifications aux GPO;
  • Son horloge sert de référence temporelle pour tous les hôtes du domaine.
Maître RID Edit

Attribue les SID aux objets (utilisateurs, groupes et ordinateurs) du domaine ; les SID sont uniques dans l'ensemble de la forêt. Un SID comprend deux parties : SID global du domaine + RID d'objet.

  • SID = Security ID
  • RID = Relative ID
dsquery * DN_DE_L_OBJET -attr objectsid

Exemple de DN_DE_L_OBJET : "CN= administrateur, CN=users,DC=test,DC=local"

Maître d'infrastructure Edit

Garde à jour dans le domaine les références à des objets provenant d'autres domaines (groupes globaux contenus dans des groupes de domaine local...) ; il sera prévenu des changements apportés à ces objets dans le domaine distant.

Maître d'attribution de noms de domaine Edit
Screenshot 20180528 091754

Contrôle l'ajout ou la suppression de domaines dans une forêt.

Contrôleur de schéma Edit
Screenshot 20180528 092051

Apporte des changement au schéma de la forêt.

regsvr32 schmmgmt.dll

...puis ajouter le composant logiciel enfichable (snap-in) Schéma Active Directory à une console MMC.

Schéma AD:

  • Classes
  • Attributs

Le catalogue global Edit

Screenshot 20180528 100407

Dans une forêt, chaque CD contient des informations sur l'ensemble de la forêt : le schéma, les domaines, les sites, etc. Mais les informations propres aux domaine (groupes, utilisateurs et ordinateurs, etc) sont seulement sur les contrôleurs de domaine concernés. Si un CD d'un domaine veut obtenir des informations sur un objet propre à un autre domaine, il utilise le catalogue global qui contient des informations sur tous les objets du domaine, mais seulement un sous-ensemble des informations de chaque objet...

La commande pour synchroniser tous les contrôleurs du domaine (peut prendre une éternité) :

repadmin /syncall /ApeD

Recommandations sur le placement des FSMO Edit

  1. Placer sur un même serveur l'émulateur PDC et le maîre RID
  2. Placer le maître d'infrastructure et le catalogue global sur deux CD différents. Pourtant, deux exceptions :
    • Si on a un seul domaine dans la forêt, ou
    • Si tous les CD ont le catalogue global.
  3. Garder les deux maîtres d’opérations de la forêt (noms, schéma) dans le domaine primaire (racine).

Module 2. Les objets Active Directory Edit

Utilisateurs Edit

Comment ajouter des utilisateurs à l'AD ?

  • dans Users
  • Directement dans OU (unité d'organisation)

Groupes Edit

Emplacements :

  • Builtin (local avant de création du domaine)
  • Users
  • Unités d'organisation

Les groupes spéciales :

  • Builtin\Administrateurs (peuvent se connecter au contrôleurs du domaine) ;
  • Users\Admins du domaine (peuvent gérer le domaine) ;
  • Users\Administrateurs de l'entreprise (peuvent gérer toute la forêt)

Groupes d'administrateurs AD :

  • Administrateurs de l'entreprise (toute la forêt)
  • Administrateurs du schéma (le schéma de la forêt seulement)
  • Admins du domaine (domaine ou sous-domaine seulement)
Screenshot 20180529 090026

Comment ajouter un groupe à l'AD ?

  • (déconseillé) dans le domaine
  • dans Users
  • dans l'OU (unité d'organisation)

Types de groupes

  • Sécurité (attribution des droits d'accès, pas de groupes dynamiques)
  • Distribution (envois des messages, pas de SID)

Étendue du groupe

  • Local
    • appartient à l'ordinateur ;
    • visibilité : l'ordinateur.
  • Domaine local
    • appartient au domaine ;
    • visibilité : le domaine ;
    • peut contenir : tout objet de la forêt.
  • Global
    • appartient au domaine ;
    • visibilité : toute la forêt ;
    • peut contenir : seulement les objet du domaine.
  • Universelle
    • appartient à toute la forêt ;
    • visibilité : toute la forêt ;
    • peut contenir : tout objet de la forêt.

Stratégie AGDLP Edit

Autorisation utilisateurs (Account) > Groupe > Domaine local > Permissions.

À lire plus tard : AGDLP [Wikipédia]

Il existe une autre stratégie : AGUDLP (ici U pour Universel).

Local (L) Domaine local (LD) Global (G) Universel (U)
Appartient à ... Ordinateur Domaine Domaine Toute la forêt
Visibilité Ordinateur Domaine Toute la forêt Toute la forêt
Parents (domaine) LD G, LD, U LD, U
Parents (forêt) LD, U LD, U
Membres (domaine) Tous Tous Tous sauf LD, U Tous sauf LD
Membres (forêt) Tous sauf LD Tous sauf LD Tous sauf LD

Ordinateurs Edit

Screenshot 20180529 101224
Screenshot 20180529 103831

Comment ajouter un ordinateur au domaine ?

  • depuis l'ordinateur lui-même ;
  • autoriser tous les utilisateurs, pour qu'ils ajoutent leurs machine au domaine (probablement une mauvaise idée) (voir la capture 1);
  • pré-créer le compte pour la machine et autoriser un utilisateur (ou un groupe) à joindre cette machine au domaine (plus sécurisé) (voir la capture 2).

Pour forcer l'application du politique sur la machine locale :

gpupdate /force

Unités d'organisation Edit

Corbeille AD Edit

Module 3. CD Windows Core et manipulation AD en ligne de commandes Edit

Mise en place un CD Windows Core Edit

Utilisation de Powershell pour les opérations de base sur AD Edit

Comprendre les requêtes LDAP Edit

LDAP ― un protocole d'accès introduit en 1993 come un moyen simple pour accéder les bases de données X500 à travers les réseaux IP. Adopté par Microsoft comme moyen pou rinterroger et modifier son implémentation du service annuaires (Active directory) [Wikipéaia]

Identificateurs AD

  • SID (Security ID : utilisateur, ordinateur, groupe de sécurité)
  • GUID (128 bits, ne change jamais, Globally Unique ID)
  • SAMID (nom d'utilisateur ou login), ex.: TEST\User1
  • UPN (User Principal Name), ex.: administrateur@test.local
  • DN (Distinguished Name), ex.: "CN=user1, OU=unité2, OU=unité1, DC=test, DC=local"
    • CN (Container Name ou Canonical Name)
    • OU (Organizational Unit)
    • DC (Domain Component)

N.B. Un DN est insensible à la case (majuscule ou minuscule).

Important ! « Users », « Builtin » et « Compouters » ne sont pas des OU, mais des containers. Alors, un autre exemple : "CN=user2, CN=Users,DC=test,DC=local", ou "CN=pc1, CN=Computers, DC=test, DC=local".

Screenshot 20180613 124629

Utiliser la console « Modification ADSI » pour accéder à l'editeur bas niveau des Distinguidhed Names d'Active Directory.

Utilisation des commandes DS pour manipuler les objets AD Edit

L'ensemble d'applications ds permet :

  • création ;
  • modification ;
  • suppression ;
  • recherche des objets Active Directory.
dsquery Edit

La commande dsquery permet de lancer des requêtes à la base de données Active Directory ; elle retourne une liste d'objets désignés par l'identifiant spécifié :

dsquery type_objet [nœud] [critères]
  • type_objet: user, computer, ou, etc. ;
  • nœud : désigne le nœud dans la hiérarchie (par défaut : le domaine entier) ;
  • critères : -name, -inactive, etc.

Exemples :

dsquery user -name *

dsquery computer "CN=Computers,DC=test,DC=local" -name *
dsadd Edit
Screenshot 20180613 132645

Permet d'ajouter un objet à la base de données Active Directory.

dsadd type-objet DN [options]
  • type_objet : user, computer, ou, etc. ;
  • DN : nom distinct de l'objet à ajouter, conforme au standard LDAP ;
  • options : diverses propriétés associées à l'objet créé.

Exemples :

dsadd user "CN=Test user, CN=Users, DC=test, DC=local" samid "testuser" -pwd Pa$$word -mustchpws no -disabled no -memberof "CN=Administrateurs, CD=Builtin, DC=test, DC=local" -email testuser@test.local

dsadd group "CN=Cadres, ,CN=Users, DC=test, DC=local" -scope l -samid Cadres -members "CN=Test user, CN=Users, DC=test, DC=local"

Les valeurs du paramètre -scope :

  • l ― domaine local
  • g ― global
  • u ― universel
dsget Edit

Permet d'afficher les attributs d'un objet Active Directory.

dsget type_objet DN [options]
  • type_objet : user, computer, ou, etc. ;
  • DN : nom distinct de l'objet à ajouter, conforme au standard LDAP ;
  • options : diverses propriétés associées à l'objet créé.

Exemples :

dsget user "CN=Test user, CN=Users, DC=test, DC=local" -email

On peut utiliser le résultat d'une requête dsquery pour faire une requête dsget :

dsquery user "CN=Users, DC=test, DC=local" -name test* | dsget user -samid -tel
dsmod Edit

Permet de modifier un objet Active Directory en changeant ses propriétés.

dsmod type_objet DN [options]
  • type_objet : user, computer, ou, etc. ;
  • DN : nom distinct de l'objet à ajouter, conforme au standard LDAP ;
  • options : diverses propriétés associées à l'objet.

Exemples :

dsmod user "CN=Test user, CN=Users, DC=test, DC=local" -tel 5141234567

On peut utiliser ça aussi avec dsquery :

dsquery user "CN=Users, DC=test, DC=local" -name test* | dsmod user -disabled yes
dsrm Edit

Supprime l'objet de la base de données Active Directory

dsrm DN [options]
  • DN : nom distinct de l'objet à ajouter, conforme au standard LDAP ;
  • options : diverses options de suppression.

Exemples :

dsrm "CN=Test user, CN=Users, DC=test, DC=local" -noprompt
dsmove Edit

Permet de déplacer un objet vers un container ou un unité organisationnel.

dsmove "CN=Test user, CN=Users, DC=test, DC=local" -newparent "OU=Paris, DC=test, DC=local"
dsmove "CN=Test user, OU=Paris, DC=test, DC=local" -newname "Permanent user"
Exercices Edit

1. Créer les utilisateurs David Rigault, Anna Reynolds et Samuel Johnson

dsadd user "CN=David Rigault, CN=Users, DC=test, DC=local" -samid drigautl -upn drigault@test.local -disabled no -pwd Pa$$vv0rd

dsadd user "CN=Anna Reynolds, CN=Users, DC=test, DC=local" -samid areynolds -upn areynolds@test.local -disabled no -pwd Pa$$vv0rd

dsadd user "CN=Samuel Johnson, CN=Users, DC=test, DC=local" -samid sjohnson -upn sjohnson@test.local -disabled no -pwd Pa$$vv0rd

2. Créer le groupe de domaine Tech

3. Ajouter l'utilisateur Anna Reynolds au groupe Tech

dsadd group "CN=Tech, CN=Users, DC=test, DC=local" -scope l -members "CN=Anna Reynolds, CN=Users, DC=test, DC=local"

4. Ajouter David Rigault et Samuel Johnson au groupe Domain admins (fr. Admins du domaine)

dsmod group "CN=Admins du domaine, CN=Users, DC=test, DC=local" -addmbr "CN=David Rigault, CN=Users, DC=test, DC=local" -addmbr "CN=Samuel Johnson, CN=Users, DC=test, DC=local"

5. Créer une unité d'organisation MTL

dsadd ou "OU=MTL, DC=test, DC=local"

6. Déplacer les utilisateurs David Rigault et Samuel Johnson vers MTL

dsmove "CN=David Rigault, CN=Users, DC=test, DC=local" -newparent "OU=MTL, DC=test, DC=local"

dsmove "CN=Samuel Johnson, CN=Users, DC=test, DC=local" -newparent "OU=MTL, DC=test, DC=local"

7. Créer une autre unité d'organisation support dans MTL

dsadd ou "OU=support, OU=MTL, DC=test, DC=local"

8. Ajouter Anna Reynolds à cette unité d'organisation

dsmove "CN=Anna Reynolds, CN=Users, DC=test, DC=local" -newparent "OU=support, OU=MTL, DC=test, DC=local"

Utilisation des commandes PowerShell pour manipuler les objets AD Edit

Examen 1 Edit

Planification et gestion de l'annuaire Edit

Module 4. Utilisation des GPO Edit

Définition Edit

Les stratégies de groupe (Group Policy Objects) définissent des ensembles de paramètres reliés à la sécurité et aux fonctionnalités des ordinateurs du domaine. On crée une GPO pour définir un ensemble de paramètres, puis on applique cette GPO sur un ou plusieurs éléments du domaine.

GPO s’appliquent au niveau du domaine (GPO par défaut), des unités d'organisation et des sites.

Screenshot 20180709 101009

Un GPO de AD contient deux parties :

  • configuration utilisateur
  • configuration ordinateur

En cas de conflits entre les deux partie ― c'est la configuration ordinateur qui remporte !

Chaque partie (utilisateur et ordinateur) contient trois éléments :

  • paramètres logiciels (Software settings) ;
  • paramètres Windows (Windows settings) ;
  • modèles d'administration ― données dans la base de registres (HKLM et HKLU), téléchargés au démarrage ou à la connexion.
MCITP 70-640- Group Policy Processing Order

MCITP 70-640- Group Policy Processing Order

Ordre de priorité des GPO Edit

  1. UO
  2. Domaine
  3. Site
  4. Local

L'ordre d'exécution est l'inverse : Local > Site > Domaine > UO (aka LSDOU).

N.B. Dans le même conteneur (ex. UO), les GPO s'appliquent selon la priorité définie dans le panneau de droite de la console de gestion des stratégies de groupe (Objets de stratégie de groupes liés).

D'habitude chaque machine requête pour les GPO (partie ordinateur) applicable chaque 90 minutes (par défaut). Mais il existe une façon de forcer les GPO sur les machines (une commande sur DC) :

gpupdate /force

Classification de GPO Edit

Par type de paramètres (stratégie) Edit
  • À stratégies multiples
  • À stratégie unique
  • Dédiée
Par organisation Edit
  • Organisation centralisée des GPO : structurées par l'héritage entre conteneurs (pour éviter de répéter des paramètres dans plusieurs GPO)
  • Organisation décentralisée : une GPO par conteneur, conteneurs isolés.

Unités d'organisation Edit

Activation et désactivation Edit

Liaison de GPO Edit

Ordre et règles d'application GPO Edit

L'ordre de priorité des GPO :

  1. UO
  2. Domaine
  3. Site
  4. Local

L'ordre d'execution des GPO : ―> LSDUO

Blocage d'héritage Edit
Screenshot 20180807 085305

Le blocage d'héritage au niveau d'une unité organisationnelle bloque l'application des règles GPO de tous les niveaux précédents (moins prioritaires) :

Local (ne s'applique plus sur OU2, OU3)
|
+―> Site (ne s'applique plus sur OU2, OU3)
    |
    +―> Domaine (ne s'applique plus sur OU2, OU3)
        |
        +―> OU1 (ne s'applique plus)
        |   |
        |   +―> OU2 (blocage ! GPO s'applique)
        |       |
        |       +―> OU3 (GPO s'applique)
        |           ...
        +―> OU11 (tout s'applique)
Forcement d'application Edit

Si on force .'application d'une règle GPO, pas seulement le blocage (s'il y a lieu) est annulé pour cette règle, mais elle devient plus prioritaires (est appliquée après) toutes les autres règles des UO !

Attention ! Si plusieurs règles GPO (domaine D* et UO*) sont forcées, l'ordre d'application est reversé par rapport à LSDUO : il sera LSDUO ―> UO* ―> D* !

Exceptions GPO Edit

GPO par boucle d'appel Edit

MCITP 70-640- Group Policy Loopback Processing

MCITP 70-640- Group Policy Loopback Processing

Permet d'appliquer les paramètres de configuration utilisateur d'une GPO sur la base de l'appartenance de l'ordinateur au conteneur !

Comment ça marche ? Les règles GPO de l'utilisateur seront ignorées, et remplacées (mode Replace) ou supercedées (mode Merge) par la partie utilisateur des règles GPO de l'ordinateur, ou le bouclage (loopback) est défini (pour la durée de la connexion seulement).

Screenshot 20180807 102808

Pour activer le mode de bouclage (loopback), il faut activer le paramètre suivant dans la GPO concernée :

Configuration ordinateur → Stratégies → Modèles d’administration → Système → Stratégies de groupe → Configurer le mode de traitement par bouclage de rappel de la stratégie de groupe utilisateur

Un vidéo à regarder (anglais) : Group Policy Loopback Processing

Filtrage d'application GPO Edit

MCITP 70-640- Group Policy Filtering

MCITP 70-640- Group Policy Filtering

Filtrage par groupe de sécurité Edit

...

Filtrage par WMI Edit

WMI ― Windows Management Instrumentation [Wikipedia].

On peut sélectionner des ordinateurs en fonction de leur version SI, par exemple.

Exemples des filtres WMI Edit

Sélectionner les machines Windows 7 (version 6.1x) seulement :

SELECT * FROM Win32_OperatingSystem WHERE Version like "6.1%" AND ProductType = "1"

Sélectionner les machines clients Windows 10 (version 10.x) seulement :

SELECT * FROM Win32_OperatingSystem WHERE ProductType = "1" AND Version like "10.%"

Sélectionner les machines clients Windows 7 et plus :

SELECT * FROM Win32_OperatingSystem WHERE ProductType = "1" AND Version > "6"

Sélectionner tous les serveurs Windows :

SELECT * FROM Win32_OperatingSystem WHERE (ProductType = "2") OR (ProductType = "3")

Sélectionner les serveurs Windows 2012 R2 qui ne sont pas des contrôleurs de domaine :

SELECT * FROM Win32_OperatingSystem WHERE Version like "6.3%" AND ProductType="3"

Paramétrage des applications Windows par GPO Edit

...

Outil rsop.msc Edit

RSoP = Resulting Set of Parameters [Wikipédia].

...

Module 5. Gestion des scripts et déploiement d'applications par GPO Edit

Attribution des scripts par GPO Edit

Déploiement d'applications par GPO Edit

La publication et l'attribution Edit

Module 6. Powershell Edit

Politique d'exécution Edit

Get-ExecutionPolicy

Set-ExecutionPolicy restricted|AllSigned|RemoteSigned|Unrestricted|Bypass|Undefined

Utilisation générale Edit

  • Get-Command *part_of_name*
  • Update-Help [-Module ...]
  • Get-Help commad
  • Get-Help about rubrique
  • Show-Command command ― interface graphique pour la commande

Exemples

Mettre à jours la base d'aide (en anglais) :

Update-Help -Module ActiveDirectory -UICulture en-US

Obtenir de l'aide sur les modules de commandes :

Get-Help about Modules

Les variables Edit

Numérique Edit

Peut-être entier (type int ou long) ou réel (type single ou double). Exemples :

$var1=10.15
$var2=10
...
Chaîne de caractères Edit

Type string. Exemples :

$chaine="Bonjour tout le monde !"
...
Logique Edit

Type boolean (accepte les valeurs true et false seulement). Exemple : pour vérifier si la variable est du type int

$var3 = $var2 -is [int]
...
Tableau Edit

Réuni plusieurs variables, même de différents types.

$tableau = 19, 22.5, "Bonjour", $true
$tableau[4] = $tableau -is [array]
...

Opérations de base Edit

$x = 1
$y = 2
$z = 3.5

$addition       = $x + $y
$soustraction   = $y - $x
$multiplication = $x * $z
$division       = $z / $x

Clear-Host

Write-Host "Bonjour tout le monde ! "
Write-Host "En vert" -Foreground-color Green -NoNewLine

$nom = Read-Host "Donner votre nom d'utilisateur : "
$pass = Read-Host "Donner votre mot de passe" -AsSecureString
...

Structures de contrôle conditionnel IF Edit

if (condition 1) {
  <bloc d'instructions 1>
} elseif (condition 2) {
  <bloc d'instructions 2>
} else {
  <bloc d'instructions 3>
}

Exemple

$var = Read-Host "Donnez une valeur : "

if ( $var -lt 100) {
  Write-Host "C'est moin de 100"
} elsif ( $var -eq 100) {
  Write-Host "C'est 100 !"
} else {
  Write-Host "C'est plus que 100"
}

Structure de contrôle itératif foreach Edit

foreach ($élément in collection) {
  <bloc de commandes à répéter>
}

Exemple :

$liste = "bleu", "vert", "rouge", "jaune"

foreach ($couleur in $liste) {
  Write-Host $couleur
}
...

Structure de contrôle itératif for Edit

for (initialisation ; condition ; incrémentation) {
  <bloc de commandes à répéter>
}
...

Exercices Edit

Exercice 1 Edit

Donnez un script Powershell nommé ex2.ps1 qui

  • Déclare 2 tableaux ("Arrays") de 4 nombres
  • Affiche la somme des éléments à la même position
 # Exercice 1
 # Afficher la somme des éléments de deux tables à la même position
 # Table1[i] + Table2[i]
 $tables = 2
 $elements = 2

 # Declare an emply array
 $table = @()

 # Loop for number of arrays
 for ($i = 1; $i -le $tables; $i++) {
   # Add an element that is an empty array
   $table += , @()
   
   for ($j = 1; $j -le $elements; $j++) {
     # Add an element
     $element = Read-Host "Table $i, element $j"
     $table[$i-1] += , $element
   }
 }

 Write-Host
 Write-Host "Table length :" $table.count ", row length : " $table[0].count
 Write-Host

 for ($j = 1; $j -le $table[0].count; $j++) {
   $somme = 0
   for ($i = 1; $i -le $table.count; $i++) {
     $somme += $table[$i-1][$j-1]
   }
   Write-Host "Sum of elements in column $j : " $somme
 }


Utilisation de PowerShell pour la manipulation de GPO Edit

Formatage Edit

Get-ADUser -filter * | Format-Table
Get-ADUser -filter * | Format-Table name,objectGUId

Get-ADUser -filter * | Format-List name,objectGUId
...

Recherche des objets Edit

Conteneurs (mais aussi tous les objets) Edit
Get-ADObject -identity <identifiant>
Utilisateurs Edit
Get-ADUser -identity <identifiant>
Groupes Edit
Get-ADGroup -identity <identifiant>
Ordinateurss Edit
Get-ADComputer -identity <identifiant>
Unités d'organisation Edit
Get-ADOrganizationalUnit -identity <identifiant>
Screenshot 20180629 082906

Identifiant :

  • Nom unique (Distinguished Name)
  • SID
  • GUID (Globally Unique ID)
  • SAM Account Name (login)
  • User Principal Name (login@domain)

Exemples :

# Recherche simple
Get-ADObject -identity "CN=Users, DC=test, DC=local"
Get-ADUser -identity administrateur
Get-ADGroup -identity "Admins du domaine"
Get-ADComputer -identity CD1
Get-ADOrganizationalunit -identity "OU=Domain, DC=test, DC=local"

# Recherche avec filtrage
Get-ADGroup -filter "name -like 'admin*' "
Get-ADGroup -filter "GroupScope -eq 'Global' "
...
Recherche générique Edit
Get-ADObject -filter "ObjectClass -eq 'classe d'objet'"
Tous les propriétés Edit
Get-ADObject -filter "ObjectClass -eq 'classe d'objet'" -Properties *
Formatage Edit
Get-ADObject -filter "name -like 'admin*' " | Format-List name,ObjectGUID

Exemples :

# Recherche par classe
Get-ADObject -filter "ObjectClass -eq 'group'"

# Formatage des résultats
Get-ADObject -filter "name -like 'admin*' " | Format-List name,ObjectGUID

# Filtrage et formatage
Get-ADObject -filter "ObjectClass -eq 'group' name -like 'admin*'" -Properties * | Format-List name, created
...
Sélection d'une propriété Edit
# Chercher un utilisateur
$user = Get-ADUser administrateur | Select -Expand ObjectGUID
Write-Host $user


#
 $admins = Get-ADGroup "admins du domaine" -Properties * | Select -Expand Members
 
 foreach ($admin in $admins) {
   Get-ADUser $admin | Format-List name, samid
}
...

Création d'objets AD Edit

Générique Edit
New-ADObject -name <nom> -path <DN_LDAP>
Création d'un groupe Edit
New-ADGroup -Name "MonGroupe" -Path "CN=Users, DC=test, DC=local"
Création d'un utilisateur Edit
New-ADUser -Name monUtilisateur `
           -Path "CN=Users, DC=test, DC=local" `
           -UserPrincipalName monutilisateur@test.local `
           -samAccountName monUtilisateur

Par défaut, un utilisateur céé comme ça sera désactivé. Pour l'activer durant la création, on doit lui affecter un mot de passe et l'activer :

# Création du mot de passe
$MotDePasse = ConvertTo-SecureString "Pa$$vv0rd" -Force -AsPlainText

# Alternativement : demander un mot de passe
$MotDePasse = Read-Host "Donner un mot de passe" -AsSecureString

# Création d'un utilisateur activé
New-ADUser -Name monUtilisateur `
           -Path "CN=Users, DC=test, DC=local" `
           -UserPrincipalName monutilisateur@test.local `
           -samAccountName monUtilisateur `
           -AccountPassword $MotDePasse `
           -Enabled $True
...

Suppression d'objets AD Edit

Remove-ADObject -Identity <identifiant> [-Confirm:$False]

Exemples :

# Recherche de l'utilisateur
$User = Get-ADUser monUtilisateur | Select -Expand DistinguishedName

# Suppression de l'utilisateur
Remove-ADUser -Identity $User -Confirm:$False

# Alternativement
Get-ADUser monUtilisateur | Remove-ADUser -Confirm:$False
...

Modification d'objets AD Edit

Set-ADObject <identifiant> <attribut> <valeur>

Alternativement on peut traiter les objets AD comme... des objets !

#Chercher l'utilisateur
$User = Get-ADOrganizationalUtil -filter "name -eq 'Mon_UO3'" `
                                 -Properties streetAddress,PostalCode

# Changer les valeurs
$User.StreetAddress = "2030 Pie-IX suite 420"
$User.PostalCode = "H1V 2K1"

# Attribution des nouvelles valeurs
Set-ADOrganizationalUnit -instance $User

# Teste d'affichage
Get-ADOrganizationalUnit -filter "name -eq 'Mon_UO3'" `
                         -Properties * | Format-List StreetAddress,PostalCode
...

Exemples :

Set-ADUser monUtilisateur -Description "Just a test user" `
                          -UserPrincipalName monutilisateur123@test.local

Déplacement d'objets AD Edit

Move-ADObject -Identity <identifiant> -TargetPath <DN_LDAP>

Exemples :

Move-ADObject -Identity "CN=MonGroupe1, CN=Users, DC=test, DC=local `
              -TargetPath "CN=Administrateurs, CN=Users, DC=test, DC=local
...

Appartenance aux groupes Edit

# Par le groupe 
Add-ADGroupMember -Identity "Groupe_DN_LDAP" -Member "User_DN_LDAP"

# Par l'utilisateur
AddADPrincipalGroupMembership -Identity "User_DN_LDAP" -MemberOf "Groupe_DN_LDAP"
...

Création en mass d'objets AD Edit

Les fichiers csv Edit

Exemple

Name,SAMid,UPN
user01,u01,user01@test.local
user02,u02,user02@test.local
...
user10,u10,user10@test.local
...
Script BAT pour travailler les listes csv Edit
REM @echo off

FOR /F "skip=1 tokens=1,2,3 delims=," %%i IN (.\users.csv) DO (
  dsadd user "CN=%%i, CN=Users, DC=test, DC=local" -samid %%j -upn %%k -pwd Pa$$vv0rd -disabled no -mustchpwd yes )
...
Import-CSV de PoweShell Edit
Import-Module ActiveDirectory

$mdpass = "Pa$$vv0rd" | ConvertTo-SecureString -AsPlainText -Force
$users = Import-CSV .\users.csv

foreeach ($user in $users) {
  New-ADUser `
    -Name $user.Name ̀
    -Path "CN=Users, DC=test, DC=local" `
    -UserPrincipalName $user.UPN `
    -samAccountName $user.SAMid `
    -AccountPassword $mdpass `
    -Enabled $True
...
La commande csvde Edit
csvde [-i] [-d nom_unique_base] [-r filtre_LDAP] [-p étendue] [-l liste_attributs] [-f fichier.csv]

Exporter les objets AD vers un fichier :

csvde -d "OU=QC, DC=test, DC=local" -f objets_QC.csv

Pour limiter les champs à exporter :

csvde -d "OU=QC, DC=test, DC=local" -l "DN,objectClass,SAMAAccountName" -f objets_QC.csv

Importer les objets AD depuis un fichier csv :

csvde -i -f objets_QC.csv
La commande ldifde Edit

ldifde ― un utilitaire robuste permettant d'importer et exporter des informations à partit d'Active Directory dans un fichier format LDIF.

ldifde [-i] [-d "nom_unique_base] [-r filtre_LDAP] [-l liste_attributs] [-p étendue] [-f fichier.ldif]

Exemple :

ldifde -d "OU=montreal, OU=QC, DC=test, DC=local" -r objectClass=person -l "CN, ObjectClass, SAMAccountName" -f users.ldif

Examen 2 Edit

Réplication et gestion de la performance Edit

Module 7. Les sites et la structure physique d'Active Directory Edit

Planification de sites Edit

Organisation physique Edit

Définition des protocoles de réplication Edit

La réplication inter sites/intra sites Edit

Synchronisation entre les CD de l'annuaire Edit

Module 8. Les relations d'approbation Edit

Utilité et mise en œuvre Edit

Modification des relations par défaut Edit

Accès aux ressources multi-domaines Edit

Utilisation optimale des groupes globaux Edit

Module 9. CD et lecture seule (RODC) Edit

Différence entre DC et RODC Edit

Mise en place d'un RODC Edit

Module 10. Authentification Edit

Mots de passe et stratégies Edit

Les objets de sécurité de mots de passe (PSO) Edit

Audit Edit

Module 11. Migration de CD Edit

Niveau fonctionnel AD Edit

Migrer AD vers une version plus récente de Windows Server Edit

Module 12. Environnement hétérogènes Edit

Interopérabilité Linux (DNS, Samba) Edit

Migration Edit

Épreuves finales Edit

Pratique (15%) Edit

Théorique (15%) Edit