← Toutes les règles
SOCLE-CLD-SYS-003// Kernel & network (sysctl)moyenneruntime effectif

Activer le paramètre noyau pour appliquer le DAC sur les liens physiques

Définit fs.protected_hardlinks=1 pour que les utilisateurs ne puissent créer des liens physiques que vers des fichiers qu'ils possèdent ou peuvent lire/écrire, bloquant les détournements de privilèges par lien physique.

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
Un seul check, mappé sur 3 normes

Pavois vérifie la configuration effective, l’état résolu et réellement appliqué, pas un fichier. Les scanners basés fichier (OVAL/SCAP, Lynis) ratent les Include, drop-ins et défauts runtime ; ce check voit ce qui est réellement en vigueur.

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

Avec fs.protected_hardlinks=1, un utilisateur ne peut créer un lien physique vers un fichier que s'il possède le fichier source ou qu'il dispose déjà d'un accès en lecture et écriture sur celui-ci. Sans cette protection, un utilisateur non privilégié peut créer un lien physique vers un fichier sensible (qu'il ne peut pas lire) dans un répertoire accessible en écriture et tromper un programme privilégié pour qu'il le suive, un vecteur d'exploitation TOCTOU / lien physique classique contre un usage non sûr de open() ou creat(). Appliquer le DAC à la création de liens physiques ferme cette voie.

Ce que vérifie Pavois

Pavois lit la valeur effective du noyau via la ressource kernel_parameter (équivalent à sysctl fs.protected_hardlinks), et non /etc/sysctl.conf ou un drop-in *.conf. Un fichier configuré peut n'avoir jamais été appliqué (faute de frappe, ordre de chargement, drop-in qui l'écrase) ; lire le noyau en cours d'exécution montre ce qui est réellement appliqué.

describe kernel_parameter('fs.protected_hardlinks') do
  its('value') { should cmp 1 }
end
describe command("grep -hsE '^[[:space:]]*fs.protected_hardlinks[[:space:]]*=[[:space:]]*1([[:space:]]|$)' /etc/sysctl.conf /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf 2>/dev/null") do
  its('stdout') { should match(/\S/) }
end

Comment vérifier qu’elle est appliquée

Exécutez sysctl fs.protected_hardlinks, sortie attendue fs.protected_hardlinks = 1.

Inspecter et investiguer

Lisez la valeur courante avec sysctl fs.protected_hardlinks ou cat /proc/sys/fs/protected_hardlinks. Une création de lien physique refusée renvoie EPERM au programme appelant plutôt que de produire une ligne de log noyau ; consultez la sortie d'erreur de ce programme.

Remédiation

Le plan de durcissement de Pavois définit la clé sysctl fs.protected_hardlinks à 1, la persiste dans un drop-in géré et l'applique à chaud, de sorte que le noyau en cours d'exécution comme les démarrages futurs l'utilisent. Appliqué avec pavois harden apply.

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

keyfs.protected_hardlinks
resourcesysctl
value1
pavois harden plan local

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

Impact & précautions

Risque négligeable ; ce paramètre est activé par défaut sur la plupart des distributions modernes. Les logiciels corrects ne créent des liens physiques que vers des fichiers qu'ils possèdent. Quelques outils de sauvegarde ou de packaging qui créent des liens physiques au-delà des frontières de propriété pourraient recevoir EPERM ; testez-les si vous les utilisez. Réversible en remettant la clé à 0.

Mapping des normes

NormeRéférenceTypeVersionConfiance
ANSSI BP-028R14direct2.0haute
NISTAC-6(1), CM-6(a)support800-53 Rev 5 · 800-171 Rev 2 (pinned)moyenne
CIS1.5.2directper OS, see the benchmark tablehaute

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.

Sources & références