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/whenChangedd'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.INIdiffé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
.admhérités — remplacés par les modèles d'administration.admxdepuis 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.
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 valeurscpasswordsont masquées avant l'envoi), scripts et leurs permissions NTFS, fichiers.adm, permissions du partage NETLOGON ; - le rapport
Get-GPOReportde 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
gPOptionsexplicites. - 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.