Gestion sommaire des GPO depuis le contrôleur de domaine

AttentionDÉPRÉCIÉ

La méthode décrite ici, basée sur des scripts développés localement, va progressivement être abandonnée au profit de l'utilisation des outils officiels fournis par le projet Samba.

Les instructions qui suivent peuvent avoir des effets inattendus, elles sont à utiliser avec précaution, sur un serveur de test par exemple.

Le contrôleur de domaine propose des commandes complétant celles fournies par le projet Samba pour la gestion des GPO[1].

Ces commandes proposent une couverture partielle des opérations d'ajout de règles (policies) que l'on retrouve dans la console d'administration sur les postes Windows.

Attention

Les commandes samba-tool gpo, fournies par Samba, permettent de créer des GPO, de les supprimer, de les lier à des OU[2], de les délier, mais pas encore d’associer des règles aux GPO.

Les commandes gpo-tool policy proposées sur le module sont fournies par le paquet gpo-tool et ses dépendances et complète partiellement samba-tool.

La commande gpo-tool policy réplique le fonctionnement du client en ligne de commande samba-tool.

Elle propose les sous-commandes suivantes :

  • register : enregistrement d’une description de règle dans un fichier local servant de stockage à l’usage de la commande gpo-tool ;

  • list : affichage de la liste des description de règle connues par la commande gpo-tool (enregistrées dans le fichier de stockage par la commande register). Actuellement, la commande list affiche le détail de toutes les descriptions contenues dans le fichier local.

  • add : association de la règle au GPO ;

  • inspect : affichage des détails de la description de la règle. L’inspection des règles permet de voir quelles règles seront acceptées par la commande add et quelles variables sont nécessaires.

Associer des règles à un GPO nécessite une édition de l’Active Directory et du répertoire SYSVOL[3]. La nature des modifications du répertoire SYSVOL dépend de la règle à associer de même que les informations à ajouter à l’Active Directory.

Les commandes proposées couvrent la fonctionnalité de création et d’ajout de descriptions de règles (l’ensemble des éléments permettant d’associer la règle à un GPO) et l’association d’un sous-ensemble des règles existantes à un GPO.

Est testé, actuellement, l’ajout des règles suivantes :

  • association d’un utilisateur ou groupe de l’Active Directory à un groupe local ;

  • désactivation de la fonctionnalité de changement de mot de passe en passant par l’enchaînement de touches Ctrl + Alt + Suppr ;

  • la restriction des droits de jonction de machines au domaine, à un compte.

Enregistrement des descriptions de règles

Une description de règle s’ajoute au fichier local avec un appel comme suit :

# gpo-tool policy register <nom unique> <CSE_GUID> <type> <emplacement> <modèle>

Les arguments sont les suivants :

  • nom unique : le nom unique servant à identifier la règle (passée en argument de la commande add) ;

  • CSE_GUID : l’identifiant du composant prenant en charge la règle dans la console d’administration de Windows ;

  • type : le type de règle déterminant quel traitement est nécessaire pour la mettre en place ;

  • emplacement : l’emplacement dans le répertoire du GPO, commençant soit par Machine, soit par User ;

  • modèle : contenu du fichier à créer dans le répertoire sysvol avec emplacement de variables.

Exemple

La commande suivante enregistre une description de la règle permettant l’association d’un utilisateur ou groupe de l’Active Directory à un groupe local :

  • le nom Groupes restreints ;

  • un CSE_GUID {827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B} ;

  • la règle est mise en place sous la forme GptTmpl.inf ;

  • le fichier est créé dans Machine/Microsoft/Windows NT/SecEdit (implique que le contexte d’application est Machine) ;

  • le contenu est déterminé par [Group Membership]\n{group}__Memberof = {sup_group}\n{group}__Members = {sub_group} (la section Group Membership avec les clés {group}__Memberof et {group}__Members) avec les variables group, sup_group et sub_group.

# gpo-tool policy register 'Groupes restreints' '{827D319E-6EAC-11D2-A4EA-00C04F79F83A}{803E14A0-B4FB-11D0-A0D0-00A0C90F574B}' 'GptTmpl.inf' 'Machine/Microsoft/Windows NT/SecEdit' '[Group Membership]\n{group}__Memberof = {sup_group}\n{group}__Members = {sub_group}'

Exemple

La commande suivante enregistre une description de la règle permettant désactivation de la fonctionnalité de changement de mot de passe en passant par l’enchaînement de touches Ctrl + Alt + Suppr :

  • le nom identifiant la description Ctrl + Alt + Suppr ;

  • le CSE_GUID {35378EAC-683F-11D2-A89A-00C04FBBCFA2}{D02B1F73-3407-48AE-BA88-E8213C6761F1} ;

  • la règle est mise en place sous la forme Registry.pol ;

  • le fichier est créé dans User (implique que le contexte d’application est User) ;

  • le contenu est déterminé par Software\Microsoft\Windows\CurrentVersion\Policies\system;DisableChangePassword;REG_DWORD;4;{value} avec la variable value.

# gpo-tool policy register 'Ctrl+Alt+Suppr' '{35378EAC-683F-11D2-A89A-00C04FBBCFA2}{D02B1F73-3407-48AE-BA88-E8213C6761F1}' 'Registry.pol' 'User' 'Software\Microsoft\Windows\CurrentVersion\Policies\system;DisableChangePassword;REG_DWORD;4;{value}'

Remarque

Actuellement, seuls deux types sont supportés :

  • Registry.pol : format de fichier permettant d’appliquer des clés de registres ;

  • GptTmpl.inf : format de fichier similaire au format INI[4] permettant de stocker des règles sous la forme clé-valeur.

Le choix du type n’est pas libre mais déterminé par le composant de la console qui prend en charge la règle.

Inspection des descriptions de règles

Exemple

1
# gpo-tool policy list
2
Policy: 'Groupes restreints'
3
	- destination: Machine/Microsoft/Windows NT/SecEdit
4
	- variables: group, sup_group, sub_group
5
6
Policy: 'Ctrl+Alt+Suppr'
7
	- destination: User
8
	- variables: value
9

Création d'un GPO

La création d'un GPO s'effectue à l'aide de la commande gpo-tool register.

Exemple

Le GPO admin_local est créé avec la commande suivante :

# samba-tool gpo create "admin_local" -U administrator%password

GPO 'admin_local' created as {95CBBB90-2941-4AA0-BFFA-491D072EB8DC}

Exemple

Le GPO change_password est créé avec la commande suivante :

# samba-tool gpo create "change_password" -U administrator%password

GPO 'change_password' created as {E542AB9F-626C-4045-8862-F31710A37D07}

Association des règles aux GPO

L’association des règles aux GPO s’effectue avec une commande comme suit :

# gpo-tool policy add <nom du GPO> <nom de la description> [-v clé:valeur …]

Avec les arguments et paramètres suivants :

  • nom du GPO : le nom d’affichage (unique du point de vue de Samba) du GPO ;

  • nom de la description : le nom utilisé pour distinguer la description lors de son enregistrement dans le fichier local (peut-être retrouvé grâce à la commande list) ;

  • -v clé:valeur : un nombre indéterminé de couples clé, valeur.

Exemple

La règle enregistrée plus tôt peut y être associée de la façon suivante :

# gpo-tool policy add "admin_local" 'Groupes restreints' -v group:*S-1-5-21-2447931902-1787058256-3961074038-5004 -v sup_group:'' -v sub_group:Administrators -U administrator%password

L’utilisateur S-1-5-21-2447931902-1787058256-3961074038-5004 issu de l’Active Directory est associé au groupe local Administrators.

Exemple

La règle enregistrée plus tôt peut y être associée de la façon suivante :

# gpo-tool policy add "change_password" 'Ctrl+Alt+Suppr' -v value :1 -U administrator%password

Remarque

La commande add édite l’Active Directory et le répertoire SYSVOL à travers des connexions ldb et SMB. L’option -U est nécessaire pour passer le nom d’un compte autorisé à de telles éditions. Le mot de passe peut être ajouté à la suite du compte ou saisi dans le terminal.

Application du GPO au niveau d'une unité organisationnelle

Pour appliquer le GPO, il faut utiliser la commande samba-tool gpo setlink.

Exemple

1
# samba-tool gpo setlink "DC=etb1,DC=lan" '{E542AB9F-626C-4045-8862-F31710A37D07}' -U administrator%password
2
Added/Updated GPO link
3
GPO(s) linked to DN DC=etb1,DC=lan
4
    GPO     : {E542AB9F-626C-4045-8862-F31710A37D07}
5
    Name    : change_password
6
    Options : NONE
7
8
    GPO     : {31B2F340-016D-11D2-945F-00C04FB984F9}
9
    Name    : Default Domain Policy
10
    Options : NONE

Débogage des GPO sous Windows

Lister les GPO appliquées

Pour commencer, il est recommandé d'actualiser les paramètres de stratégies de groupes du client, dans l'invite de commandes, saisir :

gpupdate

La commande suivante permet d'obtenir la liste des GPO appliqués pour l'utilisateur connecté :

gpresult /SCOPE USER /V

Pour obtenir les GPO "machine", la commande (à exécuter en tant qu'administrateur) est :

gpresult /SCOPE COMPUTER /V

Exécution de code PowerShell

Si le GPO nécessite des traitements complexes, il est probable qu'il exécutera un programme PowerShell[5].

L'application Windows PowerShell ISE (exécutée en tant qu'administrateur) permet d'ouvrir et d’exécuter simplement des fichiers .ps1[6].