S'assurer que l'umask par défaut est correctement configuré dans login.defs
S'assure que la directive UMASK de /etc/login.defs définit un umask par défaut restrictif (au moins aussi strict que 0027/0077 selon la norme) pour toutes les sessions de connexion.
Vérifié sur le contenu d’un fichier de configuration persistant, la source de vérité qui survit aux redémarrages.
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
L'umask détermine les permissions retirées aux fichiers et répertoires nouvellement créés. La directive UMASK de /etc/login.defs est la valeur que le processus de login et PAM (pam_umask) transmettent à une session à la connexion ; elle fixe donc la base pour toute méthode de connexion (console, ssh, su, cron), indépendamment des fichiers rc de shell présents. Laissée permissive, les fichiers sont créés par défaut lisibles/inscriptibles par le groupe ou tous. La fixer au moins aussi stricte que 0027 (CIS) / 0077 (ANSSI BP-028 R36) impose le moindre privilège à la source de la session.
Ce que vérifie Pavois
Pavois lit la dernière ligne UMASK effective de /etc/login.defs et la compare à la cible de la norme par masque de bits ((valeur & masque) == masque), si bien que 0077 satisfait 0027. login.defs est la plus faisant autorité des sources d'umask car, via pam_umask, elle régit aussi les connexions hors shell (cron, su, sessions graphiques) qui ne lisent jamais bash.bashrc ni /etc/profile : rendant le défaut effectif prévisible quel que soit le shell de l'utilisateur. Le tail -1 respecte la sémantique du dernier l'emporte.
m = {'bp28'=>'0077','cis'=>'0027'}.fetch(input('pavois_standard', value: '_default'), '0077')
describe command("v=$(grep -hiE '^[[:space:]]*UMASK[[:space:]]+[0-7]+' /etc/login.defs 2>/dev/null | grep -oE '[0-7]+' | tail -1); { [ -n \"$v\" ] && [ $((0$v & #{m})) -eq $((#{m})) ] && echo ok; } || echo ko") do
its('stdout.strip') { should eq 'ok' }
endComment vérifier qu’elle est appliquée
Inspectez la directive configurée :
grep -hiE '^[[:space:]]*UMASK[[:space:]]+[0-7]+' /etc/login.defs | tail -1
Attendu UMASK 027 (ou plus strict, ex. 077). Pour la valeur réellement appliquée à la connexion, vérifiez une nouvelle session de login non interactive, ex. su - <user> -c umask.
Inspecter et investiguer
L'umask ne génère aucun événement d'audit ; vérifiez-le depuis l'état courant. Affichez la directive avec grep -i umask /etc/login.defs. Confirmez que pam_umask est actif via grep -r pam_umask /etc/pam.d/, et observez la valeur héritée par une connexion réelle avec su - <user> -c umask.
Remédiation
Aucun plan de durcissement automatisé n'est câblé pour cette règle (remediation est vide) ; elle doit être appliquée manuellement : définissez ou corrigez la directive UMASK 027 (ou UMASK 077 pour l'ANSSI) dans /etc/login.defs, en veillant à ce qu'elle soit la dernière ligne UMASK effective. Les nouvelles connexions en héritent immédiatement ; les sessions existantes doivent se reconnecter.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| file | /etc/login.defs |
|---|---|
| key | UMASK |
| resource | conf_line |
| sep | space |
| value | 077 |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Risque faible mais portée large : comme login.defs/pam_umask agit sur tous les chemins de connexion, une valeur trop stricte retire silencieusement l'accès groupe aux fichiers créés par des tâches cron, comptes de service et flux partagés, ce qui peut casser des répertoires collaboratifs ou des piles web attendant 0664/0775. Avant un déploiement large, auditez ces flux ; lorsque le partage en groupe est requis, utilisez des répertoires setgid + ACL plutôt que d'assouplir le défaut global. Le changement ne touche que les nouveaux fichiers et se reverse entièrement en éditant la directive.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R36 | direct | 2.0 | haute |
| CIS | 5.4.3.3 | direct | per OS, see the benchmark table | haute |
| NIST | AC-6(1), CM-6(a) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| DISA STIG | UBTU-22-412035, UBTU-24-300030 | direct | per OS STIG release | 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.