N'utiliser que des MAC robustes
Désactive les codes d'authentification de message SSH (MACs) faibles, les variantes MD5, RIPEMD-160, à 96 bits et UMAC à 64 bits, afin de ne conserver que des MAC robustes à pleine longueur.
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
Les algorithmes MAC MD5 et à 96 bits sont considérés comme faibles et il a été démontré qu'ils accroissent l'exploitabilité lors d'attaques de déclassement (downgrade) SSH. Ils restent un point faible connu, d'autant plus exploitable à mesure que la puissance de calcul augmente. Un attaquant cassant le MAC depuis une position d'homme du milieu peut altérer ou déchiffrer le tunnel SSH et capturer identifiants et informations. Leur retrait impose des MAC SHA-2 à pleine longueur.
Ce que vérifie Pavois
Pavois exécute sshd -T et compare la ligne macs effective, qui commence par l'exclusion - des algorithmes faibles MD5/96 bits/UMAC-64. sshd -T montre la configuration résolue du démon, après tous les Include, blocs Match et drop-ins, de sorte qu'un MAC faible réactivé en aval est détecté. Lire directement /etc/ssh/sshd_config manquerait ces inclusions et donnerait un faux négatif.
describe command('sshd -T') do
its('stdout') { should match(/^macs\s+hmac\-sha2\-512\-etm@openssh\.com,hmac\-sha2\-256\-etm@openssh\.com,hmac\-sha2\-512,hmac\-sha2\-256$/i) }
endComment vérifier qu’elle est appliquée
Exécutez sshd -T | grep -i '^macs' et vérifiez qu'aucun de hmac-md5, hmac-md5-96, hmac-ripemd160, hmac-sha1-96 ou umac-64@openssh.com (ni leurs variantes -etm) n'apparaît dans la liste résolue. La ligne effective doit commencer par macs -hmac-md5,hmac-md5-96,....
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 proposant que des MAC faibles est rejeté avec no matching MAC found, ce qui fait apparaître 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 MACs -hmac-md5,hmac-md5-96,hmac-ripemd160,hmac-sha1-96,umac-64@openssh.com,hmac-md5-etm@openssh.com,hmac-md5-96-etm@openssh.com,hmac-ripemd160-etm@openssh.com,hmac-sha1-96-etm@openssh.com,umac-64-etm@openssh.com 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 | MACs |
|---|---|
| notify | action: reload, service: ssh.service |
| resource | sshd_setting |
| value | hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-256 |
| 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 MAC faibles peut casser de très anciens clients SSH, des équipements embarqués ou des automatisations ne parlant que MD5/96 bits. Avant d'appliquer, inventoriez vos clients (OpenSSH récent privilégie déjà les MAC SHA-2 ETM) et gardez une seconde session ou console ouverte. Validez 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 | 5.1.15 | direct | per OS, see the benchmark table | haute |
| NIST | AC-17 (2) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | 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.