← Toutes les règles
SOCLE-CLD-SSH-036// SSHmoyenneruntime effectif

N'utiliser que des algorithmes d'échange de clés robustes

Désactive les méthodes d'échange de clés SSH (KexAlgorithms) faibles, les groupes Diffie-Hellman basés sur SHA-1 (diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, diffie-hellman-group-exchange-sha1), afin de ne conserver que des algorithmes KEX robustes.

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

L'échange de clés est la méthode par laquelle le client et le serveur s'accordent sur les clés cryptographiques protégeant la session. Les groupes Diffie-Hellman basés sur SHA-1 (en particulier group1 à 1024 bits) sont faibles : SHA-1 est sujet aux collisions et les petits groupes DH sont à la portée d'attaquants disposant de moyens (précalcul de type Logjam). Un échange de clés compromis permet à un attaquant en position d'homme du milieu de dériver les clés de session, déchiffrer le tunnel et voler des identifiants. Le retrait de ces algorithmes KEX hérités impose l'usage de courbes robustes (Curve25519) et de groupes SHA-2.

Ce que vérifie Pavois

Pavois exécute sshd -T et compare la ligne kexalgorithms effective, qui commence par l'exclusion - des groupes SHA-1 faibles. sshd -T affiche la configuration résolue du démon, après tous les Include, blocs Match et drop-ins, de sorte qu'un KEX faible réactivé en aval est détecté. Lire directement /etc/ssh/sshd_config manquerait ces inclusions et produirait un faux négatif.

describe command('sshd -T') do
  its('stdout') { should match(/^kexalgorithms\s+sntrup761x25519\-sha512@openssh\.com,curve25519\-sha256,curve25519\-sha256@libssh\.org,ecdh\-sha2\-nistp256,ecdh\-sha2\-nistp384,ecdh\-sha2\-nistp521,diffie\-hellman\-group\-exchange\-sha256,diffie\-hellman\-group16\-sha512,diffie\-hellman\-group18\-sha512,diffie\-hellman\-group14\-sha256$/i) }
end

Comment vérifier qu’elle est appliquée

Exécutez sshd -T | grep -i '^kexalgorithms' et vérifiez qu'aucun de diffie-hellman-group1-sha1, diffie-hellman-group14-sha1 ou diffie-hellman-group-exchange-sha1 n'apparaît dans la liste résolue. La ligne effective doit correspondre à :

kexalgorithms -diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1

Inspecter et investiguer

Les événements de négociation SSH sont journalisés dans /var/log/auth.log (ou journalctl -u ssh). Un client ne pouvant utiliser qu'un KEX faible est rejeté avec Unable to negotiate ... no matching key exchange method found, ce qui révèle les clients hérités avant l'application.

Remédiation

Cette règle n'a pas encore de plan de durcissement automatisé dans Pavois ; elle doit donc être appliquée manuellement : ajoutez KexAlgorithms -diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1 dans un drop-in sous /etc/ssh/sshd_config.d/, validez avec sshd -t, puis rechargez avec systemctl reload ssh.

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

directiveKexAlgorithms
notifyaction: reload, service: ssh.service
resourcesshd_setting
valuesntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group14-sha256
verifysshd -t -f %{path}
pavois harden plan local

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

Impact & précautions

Exclure les groupes DH SHA-1 peut empêcher les connexions de très anciens clients SSH ou d'équipements ne supportant aucune courbe moderne ni groupe SHA-2. Avant d'appliquer, vérifiez votre parc de clients (OpenSSH récent négocie Curve25519 par défaut) et gardez une seconde session ou console ouverte. Validez la configuration avec sshd -t avant le rechargement, puis ouvrez une nouvelle session SSH dans un autre terminal pour confirmer l'accès avant de fermer la session d'origine, afin d'éviter tout verrouillage.

Mapping des normes

NormeRéférenceTypeVersionConfiance
CIS2.2.7, 5.1.12directper OS, see the benchmark tablehaute
PCI DSS2.2.7support4.0.1moyenne

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