S'assurer que l'umask par défaut est correctement configuré dans /etc/profile
S'assure que /etc/profile (et tout drop-in /etc/profile.d/*.sh) 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. /etc/profile et ses drop-ins /etc/profile.d/*.sh définissent l'umask global des shells de connexion (et des sessions sh POSIX). Une valeur permissive ici signifie que les fichiers créés par les utilisateurs sont par défaut lisibles/inscriptibles par le groupe ou tous, exposant des données à des comptes non autorisés. Imposer au moins 0027 (CIS) / 0077 (ANSSI BP-028 R36) applique le moindre privilège à la création de fichiers pour le chemin shell de connexion.
Ce que vérifie Pavois
Pavois examine à la fois /etc/profile et chaque drop-in /etc/profile.d/*.sh, retient la dernière ligne umask effective (tail -1) et la compare à la cible de la norme par masque de bits ((valeur & masque) == masque), si bien que 0077 satisfait 0027. Inclure les drop-ins profile.d est ce qu'un contrôle fichier par fichier rate : de nombreuses distributions livrent l'umask réel dans un drop-in (par ex. /etc/profile.d/umask.sh), et un drop-in postérieur peut surcharger /etc/profile : lire le résultat fusionné, dernier l'emporte reflète ce qu'un shell de connexion applique réellement.
m = {'bp28'=>'0077','cis'=>'0027'}.fetch(input('pavois_standard', value: '_default'), '0077')
describe command("v=$(grep -hiE '^[[:space:]]*umask[[:space:]]+[0-7]+' /etc/profile /etc/profile.d/*.sh 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 effective sur toutes les sources :
grep -hiE '^[[:space:]]*umask[[:space:]]+[0-7]+' /etc/profile /etc/profile.d/*.sh | tail -1
Attendu umask 027 (ou plus strict). Confirmez la valeur d'exécution dans un shell de connexion avec bash -lc 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. Listez les lignes source avec grep -i umask /etc/profile /etc/profile.d/*.sh, et la valeur héritée par un shell de connexion avec bash -lc umask. Pour contrôler les droits résultants, fixez l'umask 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 : définissez umask 027 (ou umask 077 pour l'ANSSI) dans /etc/profile ou un /etc/profile.d/umask.sh dédié, en veillant à ce qu'aucun drop-in trié plus tard ne le réassouplisse (les drop-ins sont sourcés dans l'ordre lexical). Les nouveaux shells de connexion 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 :
| content | umask 077 |
|---|---|
| group | root |
| mode | 0755 |
| owner | root |
| path | /etc/profile.d/99-pavois-umask.sh |
| resource | file |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Risque faible, limité aux sessions de shell de connexion. Comme pour les autres sources d'umask, un renforcement à 0077 retire l'accès groupe aux fichiers nouvellement créés, ce qui peut casser des flux reposant sur des fichiers partagés en groupe (répertoires collaboratifs, piles web attendant 0664/0775). Auditez ces cas avant d'imposer la règle ; lorsque le partage en groupe est requis, préférez des répertoires setgid + ACL à l'assouplissement de l'umask global. Attention à l'ordre des drop-ins : une valeur plus stricte dans /etc/profile peut tout de même être surchargée par un fichier profile.d ultérieur. Le changement n'affecte que les nouveaux fichiers et se reverse en é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.