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 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 '' }
endComment 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 :
| command | chgrp root /etc/ssh/ssh_host_*_key.pub 2>/dev/null || true |
|---|---|
| name | chgrp-sshd-pub-keys |
| not_if | [ -z "$(find /etc/ssh -name 'ssh_host_*_key.pub' -type f ! -gid 0 2>/dev/null)" ] |
| resource | exec |
pavois harden plan localoù 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
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R50 | direct | 2.0 | haute |
| CIS | 5.1.3, 5.1.5 | direct | per OS, see the benchmark table | 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.