Au cœur de l’annuaire Active Directory

I - Les protocoles LDAP, DNS et Kerberos

1 - Le protocole LDAP

a. Qu’est-ce que le protocole LDAP ?

Le protocole LDAP (Lightweight Directory Access Protocol) est un protocole qui permet de gérer des annuaires, notamment grâce à des requêtes d’interrogations et de modification de la base d’informations. En fait, l’Active Directory est un annuaire LDAP.

Les communications LDAP s’effectuent sur le port 389, en TCP, du contrôleur de domaine cible.

Il existe une déclinaison du protocole LDAP appelée LDAPS (LDAP over SSL) est qui apporte une couche de sécurité supplémentaire avec du chiffrement.

b. Que contient l’annuaire LDAP ?

L’annuaire LDAP correspond directement à l’Active Directory, il contient donc un ensemble d’unités d’organisation qui forment l’arborescence générale. Ensuite, on trouve tous les différents types d’objets classiques : utilisateurs, ordinateurs, groupes, contrôleurs de domaine, voir même serveurs et imprimantes.

Pour chaque classe d’objets, il stocke les attributs correspondants et les différentes valeurs de ces attributs pour chaque instance d’un objet. Par exemple, il va stocker toutes les informations relatives à un utilisateur (nom, prénom, description, mot de passe, adresse e-mail, etc.).

c. Comment est structuré l’annuaire LDAP ?

Un annuaire est un ensemble d’entrées, ces entrées étant elles-mêmes constituées de plusieurs attributs. De son côté, un attribut est bien spécifique et dispose d’un nom qui lui est propre, d’un type et d’une ou plusieurs valeurs.

Chaque entrée dispose d’un identifiant unique qui permet de l’identifier rapidement, de la même manière que l’on utilise les identifiants dans les bases de données pour identifier rapidement une ligne.

L’identifiant unique d’un objet est appelé GUID qui est « l’identificateur unique global ». Par ailleurs, un nom unique (DN – Distinguished Name) est attribué à chaque objet, et il se compose du nom de domaine auquel appartient l’objet ainsi que du chemin complet pour accéder à cet objet dans l’annuaire (le chemin à suivre dans l’arborescence d’unités d’organisation pour arriver jusqu’à cet objet).

Par exemple, le chemin d’accès suivant, correspondant à un objet « utilisateur » nommé « Michel », du domaine « jaynerro.local » et étant stocké dans une unité d’organisation (OU) nommée « informatique » contenant elle-même une OU nommée « system » :

jaynerro.local, informatique, system, Michel

Se traduira en chemin LDAP par :

cn=Michel,ou=system,ou=informatique,dc=jaynerro,dc=local

Ainsi, la chaîne ci-dessus correspondra au Distinguished Name (unique) de l’objet.

Dans un chemin LDAP vers un objet, on trouve toujours la présence du domaine sous la forme « dc=jaynerro,dc=local », correspondant à « jaynerro.local » dans cet exemple.

Exemple de DistinguishedName

2 - Le protocole DNS

L’importance du protocole DNS n’est plus à prouver, nous l’utilisons chaque jour des centaines de fois, notamment pour la navigation internet et à chaque fois que l’on communique avec un serveur, pour ne citer que ces deux cas de figure.

Il en est de même pour l’Active Directory qui adore s’appuyer sur le DNS… D’ailleurs, sans le DNS l’Active Directory ne fonctionnera pas. C’est d’ailleurs pour ça que lors de la mise en place d’un domaine, l’installation du serveur DNS est proposée.

Le protocole DNS est utilisé pour la résolution des noms, ce qui permet aux postes clients de localiser les contrôleurs de domaine au sein de votre système d’information. De la même manière, lorsque l’on souhaite joindre un client au domaine, on utilise un nom comme « it-connect.local », ce qui implique une requête DNS pour savoir quelle est l’adresse IP correspondante à ce nom, vous serez alors redirigé vers votre contrôleur de domaine qui traitera la requête.

Le serveur DNS crée une zone correspondante à votre domaine et enregistre de nombreux enregistrements. Il y a bien sûr un enregistrement (de type A) pour chaque contrôleur de domaine, mais il existe une multitude d’enregistrements annexes, indispensable au bon fonctionnement de l’Active Directory :

  • Enregistrement pour localiser le « Primary Domain Controller » : correspondant au contrôleur de domaine qui dispose du rôle FSMO « Émulateur PDC ».
  • Enregistrement pour localiser un contrôleur de domaine qui est catalogue global.
  • Enregistrement pour localiser les KDC du domaine (concept abordé au point suivant de ce cours).
  • Enregistrement pour localiser les contrôleurs de domaine du domaine cible.
  • Enregistrer simplement la correspondance nom/adresse IP des différents contrôleurs de domaine. Il est également possible de créer un second enregistrement avec les adresses IPv6.
  • Enregistrer les contrôleurs de domaine via le GUID pour assurer la localisation dans toute la forêt.

Les notions abordées ci-dessus et qui vous sont inconnues, seront aborder plus loin dans ce cours.

Il est même possible que l’ensemble des ordinateurs joint au domaine soit enregistré au sein du DNS, si vous le permettez. Ainsi, un ordinateur de l’entreprise pourra être joint via : pc-01.it-connect.local s’il se nomme « pc-01 ».

Le serveur DNS peut être sur le contrôleur de domaine ou sur un autre serveur DNS du système d’information. Ce serveur DNS peut être sous Windows mais aussi sous Linux en utilisant le paquet « Bind 9 » qui requiert alors une configuration particulière.

Les contrôleurs de domaine doivent être capables d’écrire dans la zone DNS qui leur correspond, ceci dans le but de gérer les enregistrements dynamiquement. Lors de la création d’un domaine, tous les enregistrements nécessaires au bon fonctionnement du système seront créés automatiquement (je suis sûr que ça vous rassure).

3 - Le protocole Kerberos

Le protocole Kerberos est l’acteur principal de l’authentification au sein d’un domaine, il n’intervient ni dans l’annuaire ni dans la résolution de noms.

Le protocole Kerberos est un protocole mature, qui est aujourd’hui en version 5. Il assure l’authentification de manière sécurisée avec un mécanisme de distribution de clés.

a. Comment fonctionne le protocole Kerberos ?

Chaque contrôleur de domaine dispose d’un service de distribution de clés de sécurité, appelé « Centre de distribution de clés / key distribution center (KDC) » et qui réalise deux services :

  • Un service d’authentification (Authentication Service – AS)

Ce service distribue des tickets spéciaux appelés « TGT » (pour « Ticket-Granting Ticket ») qui permettent d’effectuer d’autres demandes d’accès auprès du service d’émission de tickets (TGS).

Avant qu’un client puisse obtenir un accès sur un ordinateur du domaine, il doit obtenir un TGT depuis le service d’authentification du domaine cible. Une fois que le service d’authentification retourne le TGT, le client dispose de l’autorisation pour effectuer sa demande auprès du TGS.

Ce TGT obtenu pourra être réutilisé jusqu’à ce qu’il expire, mais la première demande qui déclenchera la création d’un nouveau TGT requiert toujours un passage par le service d’authentification.

  • Un service d’émission de tickets (Ticket-Granting Service - TGS)

Ce service distribue des tickets aux clients pour la connexion de la machine du domaine. En fait, quand un client veut accéder à un ordinateur, il contacte le service d’émission de tickets correspondant au domaine auquel appartient l’ordinateur, il présente un TGT, et effectue sa demande pour obtenir un ticket d’accès sur cet ordinateur. On parlera alors de l’obtention d’un ticket TGS.

Les deux services décrits précédemment ont chacun des tâches et un processus précis. Ce mécanisme d’authentification est inévitable pour accéder aux ressources d’un domaine. Sans Kerberos, il n’y aura plus d’authentification, ce qui déclenchera des problèmes d’authentifications et d’accès.

Si le centre de distribution de clés (KDC) est indisponible depuis le réseau, l’Active Directory sera ensuite indisponible également, et le contrôleur de domaine ne contrôlera plus longtemps le domaine.

b. De quoi est composé un ticket Kerberos ?

Le ticket Kerberos distribué contient de nombreuses informations qui permettent d’identifier l’élément auquel est attribué ce ticket. Par exemple, pour un utilisateur, il sera possible de savoir son nom, son mot de passe, l’identité du poste initial ainsi que la durée de validité du ticket et sa date d’expiration.

Par ailleurs, les tickets TGS et TGT contiennent une clé de session qui permet de chiffrer les communications suivantes afin de sécuriser les échanges.

4 - LDAP, DNS et Kerberos en bref

En résumé, vous devez garder en tête que ces trois protocoles sont indispensables au bon fonctionnement de l’Active Directory. Ils assurent des fonctions critiques :

II - Les principaux attributs d’objets dans l’Active Directory

1 - Les principales classes

Avant de s’intéresser aux attributs, nous allons rapidement voir les principales classes d’objets, puisque ce sont ces classes qui contiennent les attributs que nous verrons après.

Nom Description
Ordinateur Les ordinateurs clients intégrés au domaine, mais aussi les serveurs et les contrôleurs de domaine
Contact Enregistrer des contacts, sans autorisation d’authentification
Groupe Regrouper des objets au sein d’un groupe, notamment pour simplifier l’administration (attribution de droits à un service « informatique » qui correspond à un groupe nommé « informatique », par exemple)
Unité d’organisation Dossier pour créer une arborescence et organiser les objets.
Imprimante Ressource de type « imprimante »
Utilisateur Comptes utilisateurs qui permettent de s’authentifier sur le domaine, et accéder aux ressources, aux ordinateurs

Le tableau ci-dessus regroupe les classes d’objets les plus utilisées et les plus courantes.

Je tiens à préciser tout de même que par défaut l'Active Directory intègre déjà des containers (Users, Builtin, etc) et qui, à la différence des unités d'organisation natives, ne peuvent pas se voir appliquer des stratégies de groupe (GPO) et qu'il n'est pas possible de créer une délégation sur ces containers.

2 - Les identifiants uniques : DistinguishedName et GUID

a. Le DistinguishedName

Cet identifiant unique également appelé « DN » représente le chemin LDAP qui permet de trouver l’objet dans l’annuaire Active Directory. Lors de l’étude du protocole LDAP, nous avions déjà vu un exemple de DN.

Voici un autre exemple :

  • Domaine : it-connect.local
  • Unité d’organisation où se trouve l’objet : informatique
  • Nom de l’objet : Florian

Le DN de cet objet utilisateur sera :

cn=Florian,ou=informatique,dc=it-connect,dc=local

Dans ce DN, on trouve un chemin qui permet de retrouver l’objet, différents éléments sont utilisés :

Identification de l’élément Description
cn CommonName – Nom commun – Nom de l’objet final ciblé
ou OrganizationalUnit – Unité d’organisation
dc Composant de domaine – Utilisé pour indiquer le domaine cible, avec un élément « dc » par partie du domaine

Le DN peut être très long si l’arborescence de l’annuaire est importante et que l’objet se trouve au fin fond de cette arborescence. De plus, le DN peut changer régulièrement si l’objet est déplacé, ou si une unité d’organisation dont il dépend est renommée puisqu’il contient de manière nominative les objets.

b. Le GUID

Le GUID (Globally Unique IDentifier) est un identificateur global unique qui permet d’identifier un objet d’un annuaire Active Directory. Il correspond à l’attribut « ObjectGUID » dans le schéma Active Directory.

Il est attribué à l’objet dès sa création et ne change jamais, même si l’objet est déplacé ou modifié. Le GUID suit un objet de la création jusqu’à la suppression.

Codé sur 128 bits, le GUID d’un objet est unique au sein d’une forêt et il est généré par un algorithme qui garantit son unicité. Des informations aléatoires, d’autres non, comme l’heure de création de l’objet.

3 - Les attributs indispensables

Après avoir vu les attributs ObjectGUID et DistinguishedName, continuons notre quête des attributs avec ce tableau qui récapitule les attributs que l’on manipule le plus souvent.

Nom de l’attribut dans le schéma Nom de l’attribut dans la console Active Directory Description
sAMAccountName « Nom d’ouverture de session de l’utilisateur » Valeur que devra utiliser l’objet pour s’authentifier sur le domaine
UserPrincipalName « Nom d’ouverture de session de l’utilisateur » concaténé au nom du domaine sous la forme « @it-connect.local » Nom complet de l’utilisateur avec le domaine inclus. Également appelé UPN
description Description Description de l’objet
mail Adresse de messagerie Adresse de messagerie attribuée à l’objet
adminCount - Égal à « 1 » s’il s’agit d’un compte de type « Administrateur », égal à « 0 » s’il ne l’est pas
DisplayName Nom complet Nom complet qui sera affiché pour cet utilisateur
givenName Prénom Prénom de l’utilisateur
logonCount - Nombre d’ouverture de session réalisée par cet objet
accountExpires Date d’expiration du compte Date à laquelle le compte ne sera plus utilisable (peut être vide)
ObjectSID - Identifiant de sécurité unique qui permet d’identifier un objet
pwdLastSet - Dernière fois que le mot de passe fût modifié
userAccountControl - État du compte – Une dizaine de codes différents sont possibles

Pour illustrer mes propos, voici une sortie PowerShell qui affiche quelques attributs et leurs valeurs, concernant l’utilisateur « Florian » :

III - Les différents types de groupe de l’Active Directory

Pour vous convaincre de l’importance et de l’intérêt qu’il y a à utiliser les groupes, voici un exemple tout simple.

Je dispose d’un dossier partagé, accessible via le réseau aux utilisateurs du domaine. Ce dossier se nomme « Comptabilité » et je souhaite que toutes les personnes du service comptabilité de mon entreprise accèdent à ce dossier.

Plutôt que de donner les droits à chaque utilisateur du service comptabilité, tour à tour, on va créer un groupe. De ce fait, je vais créer un groupe nommé « comptabilité » dont les membres sont l’ensemble des utilisateurs correspondant aux collaborateurs du service comptabilité.

Il suffira ensuite d’ajouter sur le dossier partagé les autorisations pour le groupe « comptabilité », ce qui impliquera que les membres de ce groupe disposeront eux aussi des droits (comme ils font partie du groupe).

Non seulement ça permet de simplifier la liste des autorisations sur le répertoire (il y a moins d’éléments listés que si chaque utilisateur était ajouté de façon indépendante), mais aussi ça simplifie l’administration, car si un utilisateur change de service, il suffit de le changer de groupe. Il ne sera pas nécessaire de changer les autorisations de cet utilisateur sur des dossiers partagés tel que celui de la « comptabilité ».

Maintenant, il faut savoir qu’il existe différentes étendues pour les groupes et différents types de groupe, c’est ce que nous allons voir en détail maintenant.

Assistant de création d'un groupe

1 - L’étendue du groupe

L’étendue d’un groupe correspond à sa portée au niveau de l’arborescence Active Directory, les étendues peuvent aller d’une portée uniquement sur le domaine local, mais aussi s’étendre sur la forêt entière.

Pour ceux qui ne se souviennent plus de ce que sont une forêt et un domaine, retournez au troisième chapitre du premier module.

Il existe trois étendues différentes :

  • Domaine local

Un groupe qui dispose d’une étendue « domaine local » peut être utilisé uniquement dans le domaine dans lequel il est créé. Avec ce type d’étendue, le groupe reste local au domaine où il est créé.

Cependant, les membres d’un groupe à étendue locale peuvent être bien sûr des utilisateurs, mais aussi d’autres groupes à étendues locales, globales ou universelles. Cette possibilité offre là encore une flexibilité dans l’administration.

Il peut être défini pour contrôler l’accès aux ressources uniquement au niveau du domaine local.

  • Globale

Un groupe ayant une étendue « globale » pourra être utilisé dans le domaine local, mais aussi dans tous les domaines approuvés par le domaine de base. Ainsi, si un « domaine A » approuve via une relation un « domaine B », alors un groupe global créé dans le « domaine A » pourra être utilisé dans le « domaine B ».

Un groupe global pourra contenir d’autres objets du domaine, et être utilisé pour contrôler l’accès aux ressources sur le domaine local et tous les domaines approuvés.

  • Universelle

Un groupe disposant de l’étendue « universelle » à une portée maximale puisqu’il est accessible dans l’ensemble de la forêt, ce qui implique qu’il soit disponible sur tous les domaines de la forêt.

Un groupe universel peut contenir des groupes et objets provenant de n’importe quel domaine de la forêt. De la même manière, il est possible de l’utiliser pour définir l’accès aux ressources sur tous les domaines de la forêt.

Ainsi, avec ce type d’étendue on pourra consolider plusieurs groupes qui doivent avoir une portée maximale sur l’ensemble du système.

Une particularité de ce type de groupe, c’est qu’il est défini au sein d’un catalogue global.

  • Précisions sur les étendues

Les étendues sont dépendantes du niveau fonctionnel de la forêt et du domaine, ainsi que de la complexité de l’architecture en place, notamment au niveau des relations d’approbations entre les différents domaines et arbres. Si vous créez un groupe à étendue universelle, mais qu’il n’y a pas de relation avec un autre domaine ou une autre forêt, cela n’aura pas d’intérêt.

  • Exemple

Reprenons l’arborescence que nous avions définie dans le module « Domaine, forêt et arbre », avec les deux domaines « it-connect.local » et « learn-online.local » contenant tous les deux des sous-domaines.

Imaginons trois groupes et leurs étendues cohérentes :

  • Comptabilité : étendue « domaine local » sur « paris.it-connect.local »
  • Direction : étendue « globale » sur « learn-online.local » qui approuve tous les sous-domaines
  • Informatique : étendue « universelle » sur la forêt

Ainsi, la portée de ces groupes pourra être schématisée comme ceci au sein de la forêt :

2 - Le type du groupe

Maintenant que vous êtes opérationnel sur la compréhension des étendues, nous allons voir le deuxième paramètre proposé lors de la création d’un groupe : le type.

Il existe deux types :

  • Sécurité

Les groupes de sécurité sont les plus utilisés et ceux que vous manipulerez le plus souvent. Ils permettent d’utiliser les groupes pour gérer les autorisations d’accès aux ressources.

Par exemple, si vous avez un partage sur lequel vous souhaitez donner des autorisations d’accès, vous pourrez utiliser un « groupe de sécurité » pour donner des autorisations à tous les membres de ce groupe.

En résumé, ces groupes sont utilisés pour le contrôle d’accès, ce qui implique que chaque groupe de ce type dispose d’un identifiant de sécurité / Security Identifier « SID ».

  • Distribution

L’objectif de ce type de groupe n’est pas de faire du contrôle d’accès, mais plutôt des listes de distribution (DL - Distribution List). Par exemple, créer une liste de distribution d’adresses e-mail en ajoutant des contacts.

De ce fait, ces groupes sont utilisés principalement par des applications de messagerie, comme Microsoft Exchange.

Comme il n’y a pas de notion de sécurité, ce type de groupe ne dispose pas d’identifiant de sécurité « SID ».

  • Conclusion

Finalement, vous ne devez pas être étonné des définitions données ci-dessus quant aux deux types de groupe disponibles, car les noms sont assez explicites.

Il est à noter qu’il est possible de convertir à tout moment un groupe de sécurité en groupe de distribution, et vice-versa. Cependant, le niveau fonctionnel du domaine doit être au minimum « Windows Server 2000 natif » mais de nos jours, il est quasiment « impossible » de ne pas l’être.

3 - Les groupes par défaut

Lors de la création d’un domaine et de la création de l’annuaire Active Directory, différents groupes sont déjà présents, mais alors, à quoi servent-ils ? Intéressons-nous aux groupes intégrés, spéciaux et prédéfinis.

  • Les groupes intégrés (« Built-in ») :

    Ce sont des groupes qui permettent d’assigner des autorisations d’administration, de façon générale ou sur des fonctionnalités précises afin de gérer la sécurité finement. Ces groupes sont directement intégrés et stockés dans l’annuaire Active Directory au sein du container « Builtin » accessible de la console « Utilisateurs et ordinateurs Active Directory ». Leur étendue est toujours de type local.

    Par exemple, le groupe « Administrateurs Hyper-V » donnera un accès complet et illimité à toutes les fonctionnalités liées à Hyper-V. Autre exemple, le groupe « Opérateurs de sauvegarde » permet d’accéder aux fonctionnalités de sauvegarde et de restauration des fichiers.

Console Utilisateurs et ordinateurs Active Directory

  • Les groupes spéciaux : Seul le système à la main sur ces groupes, qui sont pratique et qui permettent d’englober les utilisateurs à différentes échelles. On trouve par exemple les groupes « Tout le monde » et « Utilisateurs authentifiés ».

    Ces groupes peuvent être utilisés pour définir du contrôle d’accès (exemple : donner accès aux utilisateurs authentifiés l’accès à un partage).

    Par ailleurs, il n’est pas possible de gérer les membres de ces groupes, le système gère ces groupes en exclusivité.
  • Les groupes prédéfinis : On les trouve dans l’unité d’organisation « Users » au sein de la console « Utilisateurs et ordinateurs Active Directory ». Ces groupes prédéfinis sont là en complément des groupes intégrés, sauf que pour eux il y a différents niveaux d’étendues qui sont prédéfinies et qu’on ne peut pas modifier.