← Toutes les règles
SOCLE-CLD-FSP-054// File ownershipmoyenneétat du système de fichiers

Vérifier le groupe propriétaire des clés publiques *.pub du serveur SSH

Garantit que l'emplacement des clés publiques d'hôte SSH /etc/ssh appartient au groupe root (gid 0).

Vérifié sur les métadonnées d’un chemin, mode, propriétaire, groupe, SUID/SGID.

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 2 normes

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

Les clés publiques d'hôte SSH (/etc/ssh/ssh_host_*_key.pub) sont présentées aux clients pour vérifier l'identité du serveur. Si un utilisateur non autorisé peut modifier un fichier de clé publique, le service SSH peut être compromis, par exemple une clé publique substituée associée à une clé privée malveillante permet l'usurpation d'identité de l'hôte. La propriété par le groupe root (gid 0) empêche les utilisateurs non privilégiés d'altérer ces fichiers.

Ce que vérifie Pavois

Pavois lit l'identifiant de groupe réel de /etc/ssh via la ressource InSpec file et vérifie gid == 0. Il contrôle la propriété effective sur le disque, de sorte qu'un fichier .pub régénéré (par ex. après ssh-keygen -A) au mauvais groupe est détecté même si le manifeste de déploiement semble correct.

describe command('find /etc/ssh -name "ssh_host_*_key.pub" -type f ! -gid 0 2>/dev/null') do
  its('stdout.strip') { should eq '' }
end

Comment vérifier qu’elle est appliquée

Exécutez stat -c '%G %g' /etc/ssh (attendu root 0) et vérifiez les clés publiques : stat -c '%n %G %a' /etc/ssh/ssh_host_*_key.pub, elles doivent être du groupe root avec le mode 0644.

Inspecter et investiguer

Ajoutez une surveillance auditd, auditctl -w /etc/ssh -p wa -k sshd_keys, pour enregistrer les changements de propriété ou de contenu dans /var/log/audit/audit.log. Le démarrage du démon SSH et le chargement des clés d'hôte sont journalisés via journalctl -u sshd / /var/log/auth.log.

Remédiation

Aucune remédiation automatique n'est câblée pour cette règle ; elle doit être appliquée manuellement : chgrp 0 /etc/ssh (et les fichiers *.pub qu'il contient). Relancez ensuite pavois harden verify.

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

commandchgrp root /etc/ssh/ssh_host_*_key.pub 2>/dev/null || true
namechgrp-sshd-pub-keys
not_if[ -z "$(find /etc/ssh -name 'ssh_host_*_key.pub' -type f ! -gid 0 2>/dev/null)" ]
resourceexec
pavois harden plan local

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

Impact & précautions

Si les clés publiques d'hôte peuvent être modifiées par un groupe non-root, un attaquant peut substituer des clés et permettre l'usurpation d'identité de l'hôte. Remettre le groupe à root est sans danger, les clés publiques sont lisibles par tous (0644) par conception, les clients SSH et le démon continuent donc de fonctionner. Aucun impact sur les sessions. Précaution : ne les confondez pas avec les clés privées, qui sur certaines distributions utilisent le groupe ssh_keys ; ici, seuls les fichiers .pub et le répertoire doivent être du groupe root.

Mapping des normes

NormeRéférenceTypeVersionConfiance
ANSSI BP-028R50direct2.0haute
CIS5.1.3, 5.1.5directper 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