← Toutes les règles
// Hardening (posture)moyenneruntime effectif

Le journal systemd est borné (SystemMaxUse)

Impose un plafond explicite au journal systemd (SystemMaxUse) pour que /var/log/journal ne puisse jamais saturer son système de fichiers. Contrôle natif pavois de la famille growth-* : tout système de fichiers que pavois découpe doit porter un mécanisme qui l'empêche de se remplir. Le contrôle vérifie la politique de rotation, jamais l'espace libre du jour, car l'espace libre est un instantané là où une borne est une garantie.

Vérifié sur l’état résolu en cours d’exécution (ex. sshd -T, sysctl, systemctl show), attrape les drop-ins et Include qu’une lecture de fichier raterait. Réserve : runtime ≠ persistance ; une valeur correcte maintenant peut ne pas survivre à un redémarrage.

Un PASS prouve✓ actif maintenant✓ sur disque✓ survit au rebootle verdict qualifié →
Debian 12CIS 1.1.0Debian 13CIS 1.0.0FedoraRHEL 10 / Rocky 10 / AlmaLinux 10RHEL 8 / Rocky 8 / AlmaLinux 8CIS 4.0.0RHEL 9 / Rocky 9 / AlmaLinux 9CIS 2.0.0Ubuntu 22.04CIS 3.0.0Ubuntu 24.04CIS 1.0.0Ubuntu 26.04

Ce que vérifie Pavois

Pavois exécute systemd-analyze cat-config systemd/journald.conf et retient la dernière ligne SystemMaxUse=, c'est-à-dire la valeur effective : cette commande fusionne le fichier fournisseur, /etc/systemd/journald.conf et tous les drop-ins de journald.conf.d/, dans l'ordre de précédence de systemd. Lire seulement /etc/systemd/journald.conf manquerait un drop-in qui surcharge (ou supprime) la borne, et déclarerait conforme un journal en réalité non borné. Toute valeur de taille non vide (1G, 500M, etc.) passe : le contrôle exige qu'un plafond existe, il n'en impose pas la taille.

describe command('systemd-analyze cat-config systemd/journald.conf 2>/dev/null | grep -iE "^[[:space:]]*SystemMaxUse[[:space:]]*=" | tail -1') do
  its('stdout') { should match(/=\s*\d+[KMG]?/i) }
end

Comment vérifier qu’elle est appliquée

Lisez la valeur résolue, puis l'occupation disque réelle :

systemd-analyze cat-config systemd/journald.conf | grep -i '^SystemMaxUse'
journalctl --disk-usage

La taille annoncée doit rester sous le plafond déclaré. journalctl --verify confirme que les fichiers de journal restent intacts après un nettoyage.

Inspecter et investiguer

journald rend compte de sa propre application : journalctl -u systemd-journald affiche des lignes comme System Journal (/var/log/journal/...) is 1.0G, max 1.0G, 0B free et Vacuuming done, freed 512.0M of archived journals. La présence de ces lignes prouve que la borne n'est pas seulement configurée mais effectivement appliquée.

Remédiation

Pavois écrit un drop-in dédié /etc/systemd/journald.conf.d/99-pavois-bounded.conf (root:root, 0644) contenant :

[Journal]
SystemMaxUse=1G
SystemKeepFree=500M
MaxRetentionSec=90day

Trois bornes complémentaires : un plafond de taille, un plancher d'espace libre que journald doit laisser au reste du système de fichiers, et un horizon de rétention. Le drop-in ne porte que ce réglage, de sorte qu'aucun autre contrôle ne peut l'écraser silencieusement. Appliquez-le avec confkit harden apply ; journald le prend en compte au systemctl restart systemd-journald.

Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :

content[Journal] SystemMaxUse=1G SystemKeepFree=500M MaxRetentionSec=90day
grouproot
mode0644
ownerroot
path/etc/systemd/journald.conf.d/99-pavois-bounded.conf
resourcefile
pavois harden plan local

où la cible est local, un alias SSH user@hôte, ou un conteneur , Docs

Impact & précautions

La famille growth-* est née d'une panne réelle : un hôte durci par pavois s'éteignait tout seul six secondes après chaque démarrage. La combinaison max_log_file_action = keep_logs (auditd ne supprime jamais un log), une partition /var/log/audit séparée (créée par la recette pavois) et admin_space_left_action = halt avait rempli le système de fichiers (mesuré : 738 fichiers, 5,8 Go, 100 %), et tous les contrôles étaient au vert. Borner le journal applique la même leçon à /var/log. L'arbitrage est réel : au-delà du plafond, les entrées les plus anciennes sont supprimées. Dimensionnez SystemMaxUse selon votre exigence de rétention réelle et, s'il faut tout conserver, expédiez le journal vers un SIEM plutôt que de relever la borne.

0