Skip to main content

Limiter la jonction de postes au domaine

Le problème : ms-DS-MachineAccountQuota

Par défaut, n’importe quel utilisateur authentifié dans un domaine Active Directory peut joindre jusqu’à 10 postes au domaine. Ce comportement est contrôlé par l’attribut ms-DS-MachineAccountQuota défini au niveau du domaine.

C’est un paramètre hérité des premières versions d’Active Directory, pensé pour simplifier les déploiements. En pratique, c’est un risque de sécurité : un utilisateur standard peut créer des comptes machines dans le domaine sans validation, ce qui ouvre la porte à des attaques (rogue computer, relais NTLM, etc.).

Vérifier la valeur actuelle

En PowerShell

PS> Get-ADObject -Identity (Get-ADDomain).DistinguishedName -Properties ms-DS-MachineAccountQuota | Select-Object ms-DS-MachineAccountQuota

Résultat par défaut :

ms-DS-MachineAccountQuota
-------------------------
                       10

En ADSI Edit

  1. Ouvrir adsiedit.msc
  2. Se connecter au contexte de nommage par défaut
  3. Clic droit sur la racine du domaine → Propriétés
  4. Chercher l’attribut ms-DS-MachineAccountQuota

Méthode 1 : Passer le quota à 0

La méthode la plus directe. On interdit tout simplement aux utilisateurs standard de joindre des machines au domaine.

PS> Set-ADDomain -Identity (Get-ADDomain) -Replace @{"ms-DS-MachineAccountQuota"=0}

Vérification :

PS> Get-ADObject -Identity (Get-ADDomain).DistinguishedName -Properties ms-DS-MachineAccountQuota | Select-Object ms-DS-MachineAccountQuota

À partir de là, seuls les comptes ayant explicitement le droit de joindre des machines pourront le faire (admins du domaine, comptes délégués, etc.).

Méthode 2 : Déléguer le droit à un groupe spécifique

Plutôt que de laisser le quota ouvert, on le passe à 0 (voir méthode 1) et on délègue le droit de jonction à un groupe dédié.

Créer le groupe

PS> New-ADGroup -Name "GG_JonctionDomaine" -GroupScope Global -GroupCategory Security -Path "OU=Groupes,DC=domaine,DC=local"

Déléguer via GPO

  1. Ouvrir la GPO Default Domain Controllers Policy (ou une GPO liée à l’OU des contrôleurs de domaine)
  2. Aller dans Configuration ordinateur → Stratégies → Paramètres Windows → Paramètres de sécurité → Attribution des droits utilisateur
  3. Modifier Ajouter des stations de travail au domaine
  4. Ajouter le groupe GG_JonctionDomaine
  5. Retirer Utilisateurs authentifiés s’il est présent

Seuls les membres de ce groupe pourront désormais joindre des postes au domaine.

Méthode 3 : Pré-créer les comptes machines

Une approche complémentaire consiste à pré-créer les comptes d’ordinateur dans l’AD avant la jonction. L’utilisateur qui effectue la jonction doit alors disposer des droits sur l’objet ordinateur déjà existant.

PS> New-ADComputer -Name "PC-COMPTA-01" -Path "OU=Postes,DC=domaine,DC=local"

On peut ensuite déléguer le droit de jonction sur l’OU :

  1. Clic droit sur l’OU → Délégation de contrôle
  2. Sélectionner le groupe ou l’utilisateur
  3. Choisir Joindre un ordinateur au domaine

L’avantage de cette méthode est que les machines atterrissent directement dans la bonne OU, et non dans le conteneur Computers par défaut.

Vérifier qui a joint quels postes

Pour auditer les machines jointes par des utilisateurs non-admin, on peut interroger l’attribut ms-DS-CreatorSID des comptes machines :

PS> Get-ADComputer -Filter * -Properties ms-DS-CreatorSID | Where-Object { $_."ms-DS-CreatorSID" -ne $null } | Select-Object Name, @{N="Createur";E={(New-Object System.Security.Principal.SecurityIdentifier($_."ms-DS-CreatorSID")).Translate([System.Security.Principal.NTAccount]).Value}}

Cette commande liste les machines qui ont été jointes par un utilisateur standard (et non par un admin) ainsi que le compte qui a effectué la jonction.

Recommandation

La bonne pratique est de combiner les approches :

  1. Passer ms-DS-MachineAccountQuota à 0
  2. Déléguer le droit de jonction à un groupe dédié via GPO
  3. Pré-créer les comptes machines dans les bonnes OU quand c’est possible

Cela garantit un contrôle strict sur ce qui rejoint le domaine, tout en restant souple pour les équipes qui déploient les postes.