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.
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) }
endComment 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 :
| directive | KexAlgorithms |
|---|---|
| notify | action: reload, service: ssh.service |
| resource | sshd_setting |
| value | 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 |
| verify | sshd -t -f %{path} |
pavois harden plan localoù 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
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 2.2.7, 5.1.12 | direct | per OS, see the benchmark table | haute |
| PCI DSS | 2.2.7 | support | 4.0.1 | moyenne |
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.