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 :
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 :
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.
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 :
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 |
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 :
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.
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.
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.
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.
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 :
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 :
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 ».
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 ».
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.
Console Utilisateurs et ordinateurs Active Directory