Vérifier les permissions du fichier /var/log/syslog
Garantit que /var/log/syslog n'est pas lisible par les autres, ni inscriptible par le groupe ou les autres, et ne porte aucun bit d'exécution, setuid, setgid ou sticky, protégeant le journal système principal de Debian/Ubuntu.
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
/var/log/syslog est le journal système fourre-tout principal des systèmes de la famille Debian et contient souvent des détails opérationnels sensibles (noms d'hôtes, erreurs de service, parfois des secrets reproduits par des démons défaillants). S'il est lisible par les autres, des utilisateurs non privilégiés obtiennent une source de reconnaissance ; s'il est inscriptible par le groupe ou les autres, ils peuvent forger ou supprimer des entrées pour masquer une attaque. Le restreindre à root:adm garde le journal confidentiel et résistant à l'altération.
Ce que vérifie Pavois
Pavois lit l'inode réel de /var/log/syslog et vérifie l'absence de lecture pour les autres, d'écriture groupe/autres et de bit d'exécution/setuid/setgid/sticky. Examiner l'objet réel du système de fichiers (et non /etc/rsyslog.conf) détecte un fichier dérivé vers 0644 après une édition manuelle ou une rotation ratée, le mode effectif est ce qui expose réellement les données.
only_if { file('/var/log/syslog').exist? }
describe file('/var/log/syslog') do
it { should_not be_executable.by('owner') }
it { should_not be_setuid }
it { should_not be_executable.by('group') }
it { should_not be_writable.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' /var/log/syslog. Attendez -rw-r----- root:adm (0640), aucune lecture pour o, aucune écriture groupe/autres, et aucun bit x/s/t.
Inspecter et investiguer
Ce fichier est le journal ; inspectez-le avec tail -n 50 /var/log/syslog ou journalctl. Pour détecter une altération des permissions, ajoutez auditctl -w /var/log/syslog -p wa et consultez /var/log/audit/audit.log. État courant : ls -l /var/log/syslog.
Remédiation
Aucun plan de durcissement automatisé n'est fourni pour cette règle ; elle doit donc être appliquée manuellement : chown root:adm /var/log/syslog et chmod 0640 /var/log/syslog (retire la lecture aux autres, l'écriture groupe/autres et tout bit d'exécution/spécial).
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| mode | 0640 |
|---|---|
| path | /var/log/syslog |
| resource | file |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Des permissions laxistes divulguent les internes du système aux utilisateurs locaux et permettent la réécriture des journaux. Précautions : alignez $FileCreateMode 0640 de rsyslog et la directive logrotate create 0640 root adm (dans /etc/logrotate.d/rsyslog), sinon la prochaine rotation réintroduit le mode permissif. Conservez la lecture pour le groupe adm, les outils de lecture de journaux et les administrateurs du groupe adm en dépendent ; ne durcissez pas jusqu'à 0600, cela casserait ce flux sans renforcer la sécurité face aux menaces de niveau root.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 6.1.4.1, 6.2.2.1 | direct | per OS, see the benchmark table | haute |
| DISA STIG | UBTU-22-232030, UBTU-24-700150 | 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.