Aller au contenu

GpoRiver — Analyse de durcissement des GPO

GpoRiver audite les GPO d'un domaine Active Directory :

  • qui peut les modifier ;
  • ce qu'elles configurent ;
  • si elles dérivent d'un référentiel de durcissement (CIS, ANSSI, STIG…) ;
  • si elles cachent un mot de passe récupérable (GPP cpassword).

Lecture et analyse seules : GpoRiver n'écrit jamais rien dans l'Active Directory géré, n'appelle jamais schedule.*, ne pousse jamais de GPO.

C'est un connecteur totalement indépendant du connecteur Active Directory : sa propre configuration LDAP, son propre compte de service, aucune donnée partagée.

Deux pages :

Page Rôle
/plugins/gporiver/ (Connecteurs) Connexion LDAP, planification, test/synchro manuelle
/gporiver/ (Analyse) KPI, dépôt de rapport, findings, historique de dérive

1. Ce que GpoRiver lit, et comment

Trois sources, indépendantes les unes des autres — activer les deux premières ne remplace jamais entièrement la troisième (voir le tableau récapitulatif, §2).

1.1 Automatique, dès l'activation du connecteur (LDAP)

Dès que le connecteur est activé et synchronisé (planifié ou manuel), sans rien à faire de plus :

  • Topologie : chaque GPO connue du domaine, ses liens vers les OU (ordre et drapeaux Enforced/Disabled compris), les OU en Block Inheritance, les filtres WMI référencés.
  • Droits d'édition et propriétaire de chaque GPO, lus directement dans son descripteur de sécurité (nTSecurityDescriptor) — un principal hors des titulaires attendus (administrateurs du domaine, système) déclenche un finding et une arête dans le graphe des chemins d'administration.
  • Dérive de version : versionNumber/whenChanged d'AD sont comparés à chaque synchro à la dernière valeur connue. Un changement journalise une transition datée (carte « Historique des versions GPO ») et — si la case correspondante est cochée — envoie une notification (messagerie InfraRiver + email si SMTP est configuré) à chaque utilisateur pouvant gérer les connecteurs.

Pas d'upload requis pour cette partie

C'est la différence avec l'ancienne version de GpoRiver : les droits d'édition ne dépendent plus d'un rapport déposé à la main. Un utilisateur non-admin qui obtient un droit d'édition sur une GPO est détecté dès la synchro suivante.

1.2 Optionnel — lecture directe de SYSVOL (SMB)

Case « Lire le contenu SYSVOL » sur la page de configuration, décochée par défaut. En la cochant, GpoRiver ouvre en plus une connexion SMB (port 445) vers les contrôleurs de domaine, avec le même compte de service que le LDAP — aucun secret supplémentaire à saisir.

Flux réseau supplémentaire

Certains environnements n'autorisent pas de flux SMB additionnel vers les contrôleurs de domaine. La case reste décochée par défaut pour cette raison — à activer consciemment.

Une fois cochée, chaque synchro détecte en plus :

  • GPO cassées — connue dans AD mais sans dossier SYSVOL correspondant (son contenu ne s'applique nulle part), et à l'inverse un dossier SYSVOL orphelin sans GPO AD.
  • Réplication désynchronisée — version GPT.INI différente de la version LDAP.
  • Permissions NTFS trop larges sur le dossier de la GPO, sur un script qu'elle référence, ou sur le partage NETLOGON lui-même — un droit d'écriture accordé à un principal inattendu produit le même type de finding/arête que les droits d'édition LDAP.
  • Mot de passe GPP récupérable (cpassword) dans les Préférences de stratégie de groupe (Groups.xml) — jamais la valeur elle-même, seulement le nom du compte concerné.
  • Scripts de démarrage/arrêt/ouverture de session référencés par la GPO.
  • Fichiers .adm hérités — remplacés par les modèles d'administration .admx depuis Windows Vista, signalés comme poids mort.

1.3 Manuel — dépôt d'un rapport Get-GPOReport

Certaines analyses ont besoin du contenu complet d'une GPO (chaque paramètre configuré, pas seulement sa présence), ce que ni LDAP ni SYSVOL ne donnent directement sans réimplémenter les bibliothèques GPMC de Microsoft. Pour ces analyses, un rapport doit être généré sur une machine Windows dotée des outils d'administration AD (RSAT ou un contrôleur de domaine), puis déposé sur la page Analyse.

Get-GPOReport -All -ReportType Xml -Path C:\temp\export.xml

Le fichier obtenu se dépose via le formulaire « Déposer un rapport Get-GPOReport » (/gporiver/), avec un rôle :

Rôle Usage
Cible (GPO réelles) L'état réel du domaine — sert de base à la politique effective par OU (RSoP) et aux règles de risque du §2
Référentiel de durcissement Un jeu de paramètres attendus (export CIS Build Kit, MS Security Compliance Toolkit, ou tout autre GPO de référence) — comparé à la cible pour produire des écarts

Une Étiquette libre permet de nommer le référentiel déposé (ex. « CIS Windows Server 2022 v2.0 ») — à ne pas confondre avec le Rôle, qui détermine comment le fichier est utilisé.


2. Récapitulatif — quelle analyse a besoin de quoi

Détection Source Upload requis ?
Topologie (GPO, liens, OU, filtres WMI) LDAP Non
Droits d'édition / propriétaire hors attendu LDAP Non
Dérive de version (versionNumber) LDAP Non
GPO cassée / dossier SYSVOL orphelin SMB (option) Non
Dérive GPT.INI SMB (option) Non
Permission NTFS trop large (dossier GPO / script / NETLOGON) SMB (option) Non
cpassword (mot de passe GPP) SMB (option) Non
Scripts référencés, fichiers .adm hérités SMB (option) Non
GPO liée mais désactivée, GPO vide, droit sensible mal attribué Rapport « Cible » Oui
Politique effective par OU (RSoP) Rapport « Cible » Oui
Écart vs référentiel CIS/ANSSI/STIG Rapport « Cible » + « Référentiel » Oui

En résumé : activer le connecteur donne déjà une vraie surface d'administration (qui peut modifier quoi) sans rien déposer à la main. Le dépôt d'un rapport reste nécessaire pour comparer le contenu des GPO à un référentiel de durcissement.


3. Configuration du connecteur (/plugins/gporiver/)

Champ Description
Mode de collecte Direct : GpoRiver interroge lui-même les contrôleurs de domaine. Collecteur Windows : le collecteur installé sur votre site (celui du domaine, configuré dans le connecteur Active Directory) envoie topologie, SYSVOL et rapport des GPO par une connexion sortante : voir §3bis.
Collecteur (domaine) Le domaine lu par le collecteur (mode Collecteur Windows). La liste vient des domaines du connecteur Active Directory configurés en mode « Collecteur Windows ».
Contrôleur(s) de domaine Un ou plusieurs, séparés par virgule (repli si le premier est injoignable)
Compte de service Dédié à GpoRiver, lecture seule — jamais celui du connecteur Active Directory
Base DN Racine LDAP à parcourir
Intervalle de synchronisation En minutes
Taille max. d'un rapport Mo, s'applique à un dépôt cible ou référentiel
LDAPS / Vérifier le certificat TLS Chiffrement de la connexion LDAP
Synchronisation automatique Décoché : la synchronisation planifiée s'arrête et la synchronisation manuelle est refusée ; les pages, le menu et les données restent visibles (pour masquer le module : « Module activé », en haut de la page).
Notifier les modifications de GPO Alerte proactive à chaque dérive de version détectée
Lire le contenu SYSVOL Voir §1.2

Boutons Tester (vérifie la connexion LDAP sans rien synchroniser) et Synchroniser maintenant (rejoue immédiatement topologie + LDAP + SYSVOL le cas échéant). Un inspecteur (recherche par nom/GUID) permet de consulter les données brutes déjà connues sans attendre l'ouverture de la page Analyse.

3bis. Mode « Collecteur Windows » (annuaire sur votre site, InfraRiver hébergé)

Quand le serveur InfraRiver ne peut pas joindre vos contrôleurs de domaine, un seul collecteur PowerShell, installé chez vous sur un contrôleur de domaine, alimente à la fois le connecteur Active Directory et GpoRiver.

Son installation est décrite dans la page du connecteur Active Directory (carte « Collecteur Windows ») ; il suffit ensuite, ici, de choisir le mode « Collecteur Windows » et le domaine concerné.

Ce que le collecteur envoie pour GpoRiver, avec le compte de l'ordinateur (SYSTEM), en lecture seule :

  • la topologie : GPO, filtres WMI, liens gPLink (ordre et options), OU qui bloquent l'héritage, droits d'édition des GPO (LDAP) ;
  • SYSVOL (si la case « Lire le contenu SYSVOL » est cochée) : dossiers des GPO, GPT.INI, Groups.xml (les valeurs cpassword sont masquées avant l'envoi), scripts et leurs permissions NTFS, fichiers .adm, permissions du partage NETLOGON ;
  • le rapport Get-GPOReport de toutes les GPO, produit par le collecteur lui-même : plus d'export manuel. Il est refait au plus une fois par semaine, ou dès qu'une GPO a changé. Il demande le module de gestion des stratégies de groupe, présent sur un contrôleur de domaine (sur un autre serveur : Install-WindowsFeature GPMC). Sans lui, le reste fonctionne mais les paramètres des GPO restent absents.

Les rapports du collecteur apparaissent dans la liste des dépôts de la page Analyse (libellé « Collecteur Windows », déposés par « collecteur ») ; les trois derniers sont gardés. Vos dépôts manuels et vos référentiels ne sont jamais touchés.

La carte « Collecteur Windows » de la page du connecteur liste les derniers envois et leur état. La synchronisation se déclenche à chaque envoi du collecteur ; le bouton Synchroniser maintenant retraite le dernier.


4. Page Analyse (/gporiver/)

  • KPI — nombre de GPO connues, de liens GPO↔OU, d'OU avec des gPOptions explicites.
  • Findings — durcissement GPO — une ligne par condition détectée (sévérité, détail, statut). Quatre actions de résolution humaine, jamais automatisées :
Action Effet
Résoudre Le finding est marqué traité
Bénin Faux positif assumé pour ce contexte précis
Escalader Signalé comme nécessitant une attention prioritaire
Rouvrir Retour à l'état ouvert

Ces quatre statuts sont entièrement manuels — GpoRiver ne les change jamais tout seul. Reconfirmer un finding déjà résolu/bénin/escaladé à une synchro suivante ne le fait pas repasser à l'état ouvert ; seul un utilisateur peut le rouvrir.

  • Historique des versions GPO — les 100 dernières transitions de version détectées, toutes conservées (pas de déduplication — chaque changement réel garde sa propre ligne horodatée).

Un finding qui disparaît de lui-même

Si la condition à l'origine d'un finding disparaît (droit retiré, dossier SYSVOL corrigé…), GpoRiver ne le régénère plus à la synchro suivante — mais la ligne existante reste en base avec son dernier statut, sans être ni supprimée ni rouverte automatiquement. Un finding « ouvert » qui n'est plus reconfirmé n'est donc pas visible différemment d'un finding toujours d'actualité ; c'est à un utilisateur de le clore.


5. Questions fréquentes

Pourquoi dois-je encore déposer un rapport si le connecteur lit déjà tout en LDAP/SYSVOL ? Parce que LDAP et SYSVOL donnent la topologie et les permissions, mais pas le contenu détaillé des paramètres d'une GPO (stratégie de mots de passe, droits utilisateurs, groupes restreints…).

Ce contenu vit dans un format binaire propriétaire (Registry.pol) que seules les bibliothèques GPMC de Microsoft savent interpréter fidèlement — d'où le passage par Get-GPOReport, qui les appelle directement sur une machine Windows.

Le connecteur peut-il générer ce rapport tout seul ? Pas depuis le serveur InfraRiver : Get-GPOReport doit s'exécuter sur une machine Windows dotée des outils d'administration AD. Le collecteur Windows (§3bis) le fait à votre place, sur un contrôleur de domaine de votre site, et l'envoie : c'est la voie recommandée quand InfraRiver ne peut pas joindre l'annuaire. Sinon, l'export reste un dépôt manuel.

Que se passe-t-il si je ne coche jamais « Lire le contenu SYSVOL » ? Rien de cassé — GpoRiver continue de détecter les droits d'édition et la topologie en LDAP. Seules les détections du §1.2 (GPO cassée, cpassword, permissions NTFS, scripts, .adm) restent absentes tant que la case n'est pas cochée.