Vérifier les permissions de cron.d
Garantit que le répertoire /etc/cron.d appartient à root et n'est ni lisible, ni modifiable, ni exécutable par le groupe ou les autres, sans bits setuid/setgid/sticky, afin que seul root puisse installer des fragments cron déposés.
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
/etc/cron.d contient des fragments de crontab déposés que le démon cron analyse et exécute, généralement en tant que root et selon des planifications arbitraires. Si le répertoire est modifiable par le groupe ou les autres, un attaquant peut y déposer un fragment de crontab exécutant n'importe quelle commande en tant que root, compromission immédiate. S'il est lisible par le groupe/les autres, les tâches planifiées peuvent être énumérées à des fins de reconnaissance. Restreindre l'accès au propriétaire bloque les deux.
Ce que vérifie Pavois
Pavois lit l'inode réel via file('/etc/cron.d') et vérifie l'absence d'accès groupe/autres et de bits spéciaux, avec une garde only_if qui l'ignore en cas d'absence. Inspecter les permissions effectives sur le disque révèle les dérives dues aux mises à jour de paquets, à un chmod manuel ou à des restaurations de sauvegarde, ce qu'une hypothèse sur un modèle de configuration ne détecterait pas.
only_if { file('/etc/cron.d').exist? }
describe file('/etc/cron.d') do
it { should_not be_setuid }
it { should_not be_writable.by('group') }
it { should_not be_readable.by('group') }
it { should_not be_setgid }
it { should_not be_executable.by('other') }
it { should_not be_writable.by('other') }
it { should_not be_readable.by('other') }
it { should_not be_sticky }
endComment vérifier qu’elle est appliquée
Exécutez stat -c '%a %U %G' /etc/cron.d. Attendu : mode 700 (ou plus strict), propriétaire root, groupe root, aucune lecture/écriture/exécution pour group ni other, et aucun bit setuid/setgid/sticky.
Inspecter et investiguer
Aucun journal de service ne s'applique ; inspectez avec stat /etc/cron.d ou ls -ld /etc/cron.d. Pour détecter une altération, ajoutez une surveillance auditd (auditctl -w /etc/cron.d -p wa -k cron) et recherchez key="cron" dans /var/log/audit/audit.log.
Remédiation
Aucune remédiation automatique n'est définie ; appliquez-la manuellement : chown root:root /etc/cron.d && chmod 700 /etc/cron.d. Relancez le scan pour confirmer que la règle passe.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| group | root |
|---|---|
| mode | 0700 |
| owner | root |
| path | /etc/cron.d |
| resource | directory |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Risque si laissé mal configuré : un cron.d modifiable par le groupe/les autres permet à tout utilisateur local de planifier des commandes root, un vecteur d'élévation de privilèges et de persistance de premier ordre ; lisible, il divulgue la planification. Précautions : durcir à root:root 700 est sans danger pour le démon cron (qui s'exécute en tant que root). Avant d'appliquer, vérifiez qu'aucun agent de supervision ou outil de gestion de configuration n'écrit ici en tant qu'utilisateur non-root ; le cas échéant, corrigez cette intégration plutôt que d'assouplir le répertoire.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 2.2.6, 2.4.1.7, 2.4.1.8 | 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 |
| PCI DSS | 2.2.6 | support | 4.0.1 | moyenne |
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.