← Toutes les règles
SOCLE-CLD-GEN-039// Hardening (misc)moyenneétat d’inventaire

S'assurer que tous les groupes du système ont un GID unique

Garantit que chaque groupe du système possède un GID distinct, afin qu'aucun couple de groupes ne se confonde en une seule identité.

Vérifié sur ce qui est installé ou enregistré, paquets présents/absents, bases de comptes.

Un PASS prouve✓ actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04
Un seul check, mappé sur 2 normes

Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.

Pourquoi cette règle

Le noyau applique les permissions par GID, pas par nom de groupe. Si deux entrées de groupe partagent le même GID, le système les considère comme le même groupe : un fichier possédé par l'un est accessible aux membres de l'autre, et les pistes d'audit ne peuvent plus attribuer un accès à un seul groupe. Des GID uniques sont ce qui rend le contrôle d'accès par groupe et la traçabilité réellement utiles.

Ce que vérifie Pavois

Pavois lit toutes les entrées de groupe résolues et signale tout GID apparaissant plus d'une fois. Examiner la base de groupes effective (telle qu'exposée par le système) plutôt que de se fier à un seul fichier garantit que les doublons introduits via des sources NSS sont aussi détectés.

describe command('awk -F: \'($3 in s){print $3}{s[$3]}\' /etc/group') do
  its('stdout.strip') { should eq '' }
end

Comment vérifier qu’elle est appliquée

Listez tout GID dupliqué :

  • awk -F: '($3 in s){print $3}{s[$3]}' /etc/group, la sortie attendue est vide.
  • getent group | cut -d: -f3 | sort | uniq -d, ne doit rien afficher (aucun GID répété).

Inspecter et investiguer

Les modifications de groupes sont visibles dans les journaux de gestion des comptes :

  • grep -E 'groupadd|groupmod' /var/log/auth.log (Debian/Ubuntu) / /var/log/secure (RHEL), affiche la création ou la renumérotation des groupes.
  • getent group fournit la carte de référence des GID courants.

Remédiation

Aucun plan de durcissement automatisé n'est défini pour cette règle ; elle doit être appliquée manuellement : choisissez l'un des deux groupes en conflit et attribuez-lui un GID libre avec groupmod -g <nouveaugid> <groupe>, puis réattribuez ses fichiers (find / -xdev -gid <ancien gid> -exec chgrp <groupe> {} +). Choisissez le groupe à renuméroter selon celui qui possède le moins de fichiers.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

commandcut -d: -f3 /etc/group | sort | uniq -d # groupmod -g <new-gid> <group> (and fix file groups), manual
reasonduplicate GIDs need a deliberate renumber, never auto-change a GID
resourcemanual
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

Risque si non appliqué : deux groupes partageant un GID fusionnent silencieusement leurs droits d'accès et détruisent la traçabilité par groupe.

Précautions avant application : avant groupmod, inventoriez les fichiers possédés par l'ancien GID afin de pouvoir les re-chgrp ; sinon ils deviennent orphelins ou retombent sous le groupe survivant. Évitez de renuméroter les groupes système codés en dur par des paquets ou services ; préférez renuméroter le groupe créé localement. Appliquez pendant une fenêtre de maintenance et vérifiez les services concernés après la modification.

Mapping des normes

NormeRéférenceTypeVersionConfiance
CIS7.2.6, 8.2.1, 7.2.5directper OS, see the benchmark tablehaute
PCI DSS8.2.1support4.0.1moyenne

Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.

Sources & références