Tous les fichiers et répertoires du home doivent avoir le mode 0750 ou plus restrictif
Garantit que tous les fichiers et répertoires du home de chaque utilisateur interactif sont en mode 0750 ou plus restrictif, pas d'écriture pour le groupe, aucun accès pour les autres, ni bits setuid/setgid/sticky inattendus.
Vérifié sur les métadonnées d’un chemin, mode, propriétaire, groupe, SUID/SGID.
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
Des permissions excessives sur les fichiers du home permettent à des utilisateurs non prévus de lire des données privées ou de modifier des fichiers dont le propriétaire dépend. Un contenu lisible par tous ou inscriptible par le groupe expose identifiants, clés et fichiers d'initialisation ; des bits setuid/setgid égarés peuvent servir d'appui à une élévation de privilèges.
Ce que vérifie Pavois
Pavois lit le /etc/passwd réel pour les utilisateurs interactifs et leurs homes, puis exécute find -P "$h" -perm /7027 ! -type l. Le masque /7027 signale tout chemin portant setuid/setgid/sticky (7000), écriture groupe (020) ou un bit pour les autres (007), soit tout ce qui est moins restrictif que 0750. Inspecter le mode effectif sur disque repère les fichiers créés trop permissifs par des outils ou le umask, au-delà d'un modèle de squelette.
describe command('awk -F: \'($3>=1000 && $3!=65534 && $6!="/"){print $3":"$4":"$6}\' /etc/passwd | while IFS=: read u g h; do [ -d "$h" ] && timeout 60 find -P "$h" -perm /7027 ! -type l -print 2>/dev/null; done | head -1') do
its('exit_status') { should_not cmp 124 } # timeout killed the scan: no evidence, not a pass
its('stdout.strip') { should eq '' }
endComment vérifier qu’elle est appliquée
Pour un utilisateur, exécutez find ~user -perm /7027 ! -type l -printf '%m %p\n'. Attendu : aucune sortie (chaque entrée est en 0750 ou plus restrictif, sans bits setuid/setgid/sticky).
Inspecter et investiguer
Les permissions sont inspectées directement, non journalisées. Auditez avec find ~user -perm /7027 ! -type l -printf '%m %p\n' ou stat -c '%a %n' <chemin>. Avec l'audit d'intégrité activé, les événements chmod sur les chemins du home apparaissent dans /var/log/audit/audit.log sous la clé de surveillance concernée.
Remédiation
Aucune remédiation automatique n'est fournie (remediation est vide) : appliquez manuellement. Pour chaque utilisateur signalé, retirez les bits excédentaires, par ex. find ~user -perm /7027 ! -type l -exec chmod g-w,o-rwx {} + (examinez séparément les bits setuid/setgid avant de les retirer).
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| command | awk -F: '($3>=1000 && $3!=65534 && $6!="/"){print $6}' /etc/passwd | while read h; do [ -d "$h" ] && find "$h" -perm /7027 ! -type l -exec chmod u-s,g-w-s,o=- {} + 2>/dev/null; done; true |
|---|---|
| name | fix-home-perms |
| resource | exec |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Des fichiers de home trop permissifs exposent des secrets et permettent leur altération. Précautions avant application : un chmod brutal peut casser des applications nécessitant légitimement un accès groupe (répertoires de dev partagés, ~/.gnupg déjà en 0700, sockets), examinez d'abord les chemins concernés. Retirer o-rwx est sûr pour des homes privés, mais supprimer setuid/setgid à l'aveugle peut casser des utilitaires volontairement privilégiés ; traitez les correspondances du masque 7000 au cas par cas.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R50 | direct | 2.0 | haute |
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.