S'assurer que l'umask C Shell par défaut est correctement configuré
S'assure que le fichier de démarrage C shell global /etc/csh.cshrc définit un umask restrictif au moins aussi strict que 0027.
Vérifié sur le contenu d’un fichier de configuration persistant, la source de vérité qui survit aux redémarrages.
Pourquoi cette règle
L'umask détermine les permissions retirées aux fichiers et répertoires nouvellement créés. /etc/csh.cshrc définit l'umask global des sessions C shell / tcsh ; s'il est trop permissif, les fichiers créés dans ces shells sont par défaut accessibles au groupe ou à tous, exposant des données à des comptes non autorisés. Fixer l'umask C shell au moins aussi strict que 0027 impose le moindre privilège, de sorte que la protection ne puisse être contournée en se connectant simplement avec csh/tcsh au lieu de Bash.
Ce que vérifie Pavois
Pavois lit la dernière ligne umask effective de /etc/csh.cshrc et la compare à 0027 par masque de bits ((valeur & 0027) == 0027), si bien que 0077 passe aussi. Retenir la dernière ligne correspondante (tail -1) reflète la façon dont une session csh/tcsh réelle résout les affectations répétées : couvrir cette famille de shells comble une faille que des contrôles Bash basés sur les fichiers laisseraient ouverte. (Cette règle n'est livrée que sur RHEL 8/9, où csh/tcsh sont couramment présents.)
describe command('v=$(grep -hiE \'^[[:space:]]*umask[[:space:]]+[0-7]+\' /etc/csh.cshrc 2>/dev/null | grep -oE \'[0-7]+\' | tail -1); { [ -n "$v" ] && [ $((0$v & 0077)) -eq $((0077)) ] && 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/csh.cshrc | tail -1
Attendu umask 027 (ou plus strict). Confirmez à l'exécution avec tcsh -c umask (attendu 027 ou 077).
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/csh.cshrc et la valeur d'exécution avec tcsh -c umask. Pour voir les droits résultants d'un nouveau fichier, fixez l'umask dans une session tcsh 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 dans /etc/csh.cshrc, placée après toute affectation plus laxiste afin d'être celle qui s'applique. Les nouvelles sessions csh/tcsh en héritent immédiatement ; les sessions existantes doivent se reconnecter ou re-sourcer le fichier.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| command | grep -qE '^[[:space:]]*umask[[:space:]]+0?77' /etc/csh.cshrc || echo 'umask 077' >> /etc/csh.cshrc |
|---|---|
| name | umask-csh |
| not_if | grep -qE '^[[:space:]]*umask[[:space:]]+0?77' /etc/csh.cshrc |
| resource | exec |
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 seuls utilisateurs C shell / tcsh : la plupart des déploiements RHEL modernes utilisent Bash par défaut, peu de sessions interactives sont donc concernées. Comme pour tout renforcement d'umask, des scripts ou outils créant des fichiers partagés en groupe depuis un environnement csh peuvent perdre l'accès groupe sous 0077 ; auditez ces flux et préférez des répertoires setgid et des ACL à l'assouplissement de l'umask global. Le changement n'affecte que les nouveaux fichiers et se reverse en éditant la ligne.