S'assurer que l'umask Bash par défaut est correctement configuré
S'assure que le fichier de démarrage Bash global /etc/bash.bashrc définit un umask restrictif (au moins aussi strict que 0027/0077 selon la norme).
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. L'umask Bash global dans /etc/bash.bashrc s'applique aux shells Bash interactifs ; s'il est trop permissif, chaque fichier créé par un utilisateur est par défaut lisible/inscriptible par le groupe ou tous, exposant données et configuration à des comptes non autorisés. Un umask restrictif (0027 pour CIS, 0077 pour ANSSI BP-028 R36) impose le moindre privilège à la création de fichiers pour tous les utilisateurs.
Ce que vérifie Pavois
Pavois lit la dernière ligne umask effective de /etc/bash.bashrc et vérifie qu'elle est au moins aussi stricte que la cible de la norme via un test par masque de bits ((valeur & masque) == masque), si bien que 0077 satisfait une exigence 0027. Comme les fichiers rc autorisent des affectations répétées où la dernière l'emporte, Pavois retient la dernière ligne correspondante (tail -1) et non la première : ce qui reflète ce qu'un shell Bash interactif applique réellement, là où un grep naïf au premier match se tromperait.
m = {'bp28'=>'0077','cis'=>'0027'}.fetch(input('pavois_standard', value: '_default'), '0077')
describe command("v=$(grep -hiE '^[[:space:]]*umask[[:space:]]+[0-7]+' /etc/bash.bashrc 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 valeur configurée :
grep -hiE '^[[:space:]]*umask[[:space:]]+[0-7]+' /etc/bash.bashrc | tail -1
Attendu une ligne du type umask 027 (ou plus strict, ex. umask 077). Confirmez la valeur d'exécution dans un nouveau shell interactif avec bash -i -c umask (attendu 0027 ou 0077).
Inspecter et investiguer
L'umask ne génère aucun événement d'audit ; vérifiez-le depuis l'état courant. Affichez la ligne source avec grep -i umask /etc/bash.bashrc, et la valeur héritée à la connexion avec bash -i -c umask. Pour voir les droits d'un fichier nouvellement créé : umask dans votre shell puis touch /tmp/t && stat -c '%a' /tmp/t.
Remédiation
Aucun plan de durcissement automatisé n'est câblé pour cette règle (remediation est vide) ; elle doit être appliquée manuellement : ajoutez ou corrigez une unique ligne umask 027 (ou umask 077 pour l'ANSSI) dans /etc/bash.bashrc, placée de sorte qu'aucune ligne umask ultérieure plus laxiste ne l'écrase. Les nouveaux shells la prennent immédiatement ; les sessions en cours doivent re-sourcer le fichier ou se reconnecter.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| file | /etc/bash.bashrc |
|---|---|
| line | umask 077 |
| module | umask 077 |
| resource | pam_line |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Renforcer l'umask par défaut est généralement sans danger mais modifie la création de fichiers pour chaque utilisateur Bash interactif. Pièges : des applications ou scripts de déploiement reposant sur des fichiers partagés en groupe (par ex. un groupe www-data/developers attendant 0664) peuvent casser s'ils héritent de 0077, qui retire l'accès au groupe. Avant d'imposer la règle, auditez les flux à répertoires partagés ; lorsque la collaboration de groupe est requise, utilisez des répertoires setgid et des ACL plutôt que d'assouplir l'umask global. Le changement n'affecte que les nouveaux fichiers, jamais les permissions existantes, et se reverse trivialement en rééditant la ligne.
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.