Pour déverrouiller totalement cette section, vous devez vous connecter
La délégation Active Directory (AD) est un élément essentiel de l’infrastructure informatique de nombreuses organisations. En déléguant l’administration, vous pouvez accorder aux utilisateurs ou aux groupes uniquement les autorisations dont ils ont besoin sans ajouter d’utilisateurs à des groupes privilégiés (par exemple, les administrateurs de domaine, les opérateurs de compte). Le moyen le plus simple d’accomplir la délégation consiste à utiliser l’assistant de délégation de contrôle dans le composant logiciel enfichable Utilisateurs et ordinateurs Active Directory de Microsoft Management Console (MMC).
Bien que l’Assistant de délégation de contrôle offre un moyen facile de déléguer des autorisations, il n’existe aucun assistant correspondant pour supprimer les autorisations déléguées. Quelqu’un chez Microsoft a dû remarquer cette lacune et a créé un programme en ligne de commande nommé Dsrevoke.exe qui peut supprimer les entrées d’autorisation ajoutées par l’Assistant de délégation de contrôle.
Cependant, le Dsrevoke.le programme exe a deux limitations techniques importantes, qui sont documentées dans l’article Microsoft « Lorsque vous utilisez l’outil de ligne de commande Dsrevoke pour signaler les autorisations pour toutes les unités organisationnelles d’un domaine basé sur Windows Server 2003, l’outil peut ne pas renvoyer toutes les entrées de contrôle d’accès. » Ces limites sont:
- Dsrevoke.exe ne peut trouver que jusqu’à 1 000 unités en une seule recherche. La solution de contournement suggérée pour cette limitation consiste à lancer la recherche du programme dans une unité organisationnelle (OU) plus imbriquée afin de réduire le nombre de résultats.
- Dsrevoke.exe échoue si des unités externes contiennent un caractère slash (/) dans leur nom. Il n’y a pas de solution de contournement pour cette limitation autre que de renommer les UI incriminées.
Pour des raisons d’organisation, renommer les unités d’organisation pour supprimer le caractère barre oblique n’est généralement pas une option. En outre, la barre oblique est un caractère valide dans un nom d’unité d’organisation et Dsrevoke.exe devrait fonctionner, qu’une unité d’organisation contienne ou non une barre oblique dans son nom. De plus, travailler autour de la limite de 1 000 OU dans mon environnement prenait beaucoup de temps.
À partir des versions récentes de Windows, les Dsacl.le programme exe fournit un moyen de supprimer les autorisations ajoutées par l’Assistant de délégation de contrôle. Bien qu’il n’échoue pas si une unité d’organisation contient une barre oblique dans son nom, Dsacls.exe ne peut pas rechercher de sous-conteneurs pour des autorisations telles que Dsrevoke.exe le fait.
Dsrevoke.exe et DSACL.exe peut produire une liste d’autorisations, mais la sortie est très longue et technique.
Nous devons avoir des informations de base sur ce qui se passe lorsque nous utilisons l’Assistant de délégation de contrôle et couvrir certains concepts de sécurité Windows de base.
Pourquoi déléguer ?
Imaginez que vous soyez à la tête d’une grande entreprise avec plusieurs départements : finance, RH, ventes, direction supérieure.
Si chaque utilisateur qui a oublié son mot de passe devait appeler le service d’assistance informatique, vous seriez submergé d’appels.
Au lieu de cela, vous pouvez déléguer des autorisations au chef de chaque département afin qu’il puisse réinitialiser les mots de passe de sa propre équipe.
Un autre cas d’utilisation classique de la délégation est la possibilité pour le personnel d’envoyer des e-mails les uns comme les autres, soit une boîte aux lettres partagée, soit un AP envoyant des e-mails au nom de son patron.
Donner à tout le monde un administrateur de domaine ?
Vous avez peut-être pensé, donnons à chaque chef de département des autorisations d’administrateur de domaine, puis ils peuvent réinitialiser les mots de passe si nécessaire.
Bien que cela soit techniquement vrai, ils seraient alors en mesure de faire tout ce que vous pouvez faire, y compris l’accès aux données utilisateur.
Veillez donc à donner un rôle d’administrateur de domaine à des utilisateurs non informatiques pour réduire les tâches d’administration : cette approche peut entraîner plusieurs problèmes.
Pour comprendre les informations fournies dans la boîte de dialogue Paramètres de sécurité avancés, vous devez connaître les concepts de sécurité Windows suivants: liste de contrôle d’accès (ACL), entrée de contrôle d’accès (ACE), fiduciaire et héritage. Vous devez également comprendre ces concepts pour utiliser Remove-DSACE.ps1.
ACL : Il existe deux types d’ACL : les ACL discrétionnaires (DACL) et les ACL système (SACL). Une DACL identifie les comptes auxquels l’accès à un objet est autorisé ou refusé. Un SACL décrit comment un administrateur souhaite consigner les tentatives d’accès à un objet (c’est-à-dire l’audit).
AS : Un ACL est composé d’AS. Chaque ACE identifie un fiduciaire et spécifie l’accès du fiduciaire (autoriser, refuser ou auditer) pour l’objet. L’Assistant de délégation de contrôle ajoute des AS à la DACL d’un conteneur PUBLICITAIRE. La figure précédente montre la DACL pour l’unité d’organisation tous utilisateurs. Dans cette figure, le terme entrée d’autorisation est synonyme d’ACE.
Fiduciaire : Un fiduciaire est l’entité (un utilisateur, un groupe de sécurité ou une session d’ouverture de session) à laquelle un ACE s’applique. Chaque ACE s’applique à un seul fiduciaire. Dans la figure 5, le terme Principal est synonyme de fiduciaire. La figure 5 montre qu’il y a deux AS assignés au groupe de réinitialisation de mot de passe. En d’autres termes, le groupe de réinitialisation du mot de passe est le fiduciaire (principal) de ces deux AS.
Héritage: Un ACE peut être appliqué directement à un objet, ou il peut être hérité de l’objet parent de la ressource. Dans la figure précédente, les deux AS pour Tous les utilisateurs qui contiennent le groupe de réinitialisation de mot de passe en tant que fiduciaire ne sont pas hérités du conteneur parent (c’est-à-dire que la colonne Héritée de ne lit Aucun) car l’Assistant de délégation de contrôle les a ajoutés directement à la DACL.
Ajout d’autorisations déléguées avec l’Assistant
l’Assistant de délégation de contrôle permet de déléguer facilement des autorisations. Par exemple, supposons que vous souhaitiez que les membres du groupe de réinitialisation de mot de passe puissent réinitialiser les mots de passe des utilisateurs dans l’unité d’organisation Tous les utilisateurs de votre domaine AD. Pour ce faire, vous devez effectuer les étapes suivantes :
Ouvrez la console Utilisateurs et ordinateurs Active Directory, puis cliquez avec le bouton droit sur l’unité d’organisation de tous les utilisateurs (ou autre unité d’organisation) et choisissez Déléguer le contrôle, comme le montre la figure 1. Cliquez sur le bouton Suivant pour passer au-delà de la page d’accueil de l’assistant.
Sur la page Utilisateurs ou groupes de l’assistant, cliquez sur le bouton Ajouter.
Dans la boîte de dialogue Sélectionner des utilisateurs, des ordinateurs ou des groupes, entrez le nom du groupe (Réinitialisation du mot de passe), cliquez sur le bouton Vérifier les noms pour vous assurer que le nom du groupe est correct, puis cliquez sur OK, comme indiqué dans la figure suivante:
Après vous être assuré que le nom du groupe est répertorié sur la page Utilisateurs ou groupes, cliquez sur Suivant, comme indiqué dans la figure suivante:
Sur la page Tâches à déléguer, sélectionnez Réinitialiser les mots de passe utilisateur et forcer le changement de mot de passe lors de la prochaine connexion, puis cliquez sur Suivant, comme indiqué dans la figure suivante:
Lorsque vous cliquez sur le bouton Terminer, l’Assistant de délégation de contrôle ajoute les autorisations demandées à l’Unité d’organisation Tous les utilisateurs. Vous pouvez afficher les effets de la délégation en cliquant avec le bouton droit sur l’unité d’organisation Tous les utilisateurs, en choisissant Propriétés et en sélectionnant l’onglet Sécurité. (Si l’onglet Sécurité n’est pas visible, activez l’option Fonctionnalités avancées dans le menu Affichage de la console Utilisateurs et ordinateurs Active Directory.)
Pour une vue détaillée, vous pouvez cliquer sur le bouton Avancé. La figure suivante montre la boîte de dialogue Paramètres de sécurité avancés qui apparaît.
Vérifiez l’autorisation (en utilisant PowerShell)
Maintenant que nous avons découvert la délégation, vous vous demandez peut-être s’il existe des délégations que vous ne connaissez pas, provenant d’anciens employés ou d’administrateurs malveillants.
Nous avons mis en place un script PowerShell court qui recherchera chaque type d’objet délégable et répertoriera les deux délégations d’autorisations communes, réinitialiser le mot de passe et envoyer sous (depuis Exchange).
Voici un exemple d’exécution à partir d’un domaine:
Et voici le code de script:
###### Search common delegation targets$filter = "(|(objectClass=domain)(objectClass=organizationalUnit)(objectClass=group)(sAMAccountType=805306368)(objectCategory=Computer))" ###### Search just OUs and Groups#$filter = "(|(objectClass=organizationalUnit)(objectClass=group))"###### More filters can be found here: http://www.ldapexplorer.com/en/manual/109050000-famous-filters.htm###### Connect to DOMAINCONTROLLER using LDAP path, with USERNAME and PASSWORD#$bSearch = New-Object System.DirectoryServices.DirectoryEntry("LDAP://DOMAINCONTROLLER/LDAP"), "USERNAME", "PASSWORD") ###### Connect to DOMAINCONTROLLER using LDAP path$bSearch = New-Object System.DirectoryServices.DirectoryEntry("LDAP://DOMAINCONTROLLER/LDAP") $dSearch = New-Object System.DirectoryServices.DirectorySearcher($bSearch)$dSearch.SearchRoot = $bSearch$dSearch.PageSize = 1000$dSearch.Filter = $filter #comment out to look at all object types$dSearch.SearchScope = "Subtree"####### List of extended permissions available here: https://technet.microsoft.com/en-us/library/ff405676.aspx$extPerms = '00299570-246d-11d0-a768-00aa006e0529', 'ab721a54-1e2f-11d0-9819-00aa0040529b', '0'$results = @()foreach ($objResult in $dSearch.FindAll()){ $obj = $objResult.GetDirectoryEntry() Write-Host "Searching... " $obj.distinguishedName $permissions = $obj.PsBase.ObjectSecurity.GetAccessRules($true,$false,) $results += $permissions | Where-Object { $_.AccessControlType -eq 'Allow' -and ($_.ObjectType -in $extPerms) -and $_.IdentityReference -notin ('NT AUTHORITY\SELF', 'NT AUTHORITY\SYSTEM', 'S-1-5-32-548') } | Select-Object ` @{n='Object'; e={$obj.distinguishedName}}, @{n='Account'; e={$_.IdentityReference}}, @{n='Permission'; e={$_.ActiveDirectoryRights}}}$results | Out-GridView
Pour utiliser ce script sur votre propre domaine:
- Ouvrez les utilisateurs et les ordinateurs Active Directory et accédez au domaine (ou à l’unité organisationnelle) sur lequel vous enquêtez.
- Faites un clic droit dessus et choisissez Propriétés.
- Dans l’onglet Éditeur d’attributs, recherchez la propriété distinguishedName.
- Sélectionnez-le et appuyez sur Affichage, puis copiez le chemin LDAP. Vous en aurez besoin plus tard.
- Modifier la ligne 6 (bbSearch=…), en remplaçant DOMAINCONTROLLER par le nom de l’un des DCS de votre domaine.
- Modifiez la ligne 6, en remplaçant LDAP par le chemin que vous avez copié précédemment.
- Enregistrez le script et appuyez sur exécuter.
- Laissez le script rechercher dans votre Active Directory ; la progression est signalée dans la console et une fois terminée, vous recevrez une fenêtre contextuelle détaillant les objets dont les autorisations leur sont déléguées.