SSH — durcissement de sshd, algorithmes et détection d'intrusion
Durcissement d'OpenSSH : authentification par clé seule, algorithmes modernes, MaxAuthTries, LoginGraceTime (contexte CVE-2024-6387), et détection des tentatives d'intrusion.
Durcissement d’un serveur OpenSSH portant sur les méthodes d’authentification, les algorithmes cryptographiques et la détection des tentatives d’intrusion.
Menace
SSH est une cible permanente de force brute et un vecteur d’accès initial. CVE-2024-6387 (regreSSHion, CVSS 8.1) est une exécution de code à distance non authentifiée par race condition dans le gestionnaire de signal SIGALRM, affectant OpenSSH de 8.5p1 à 9.8p1 sur glibc, corrigée en 9.8p1. La réduction de LoginGraceTime limite la fenêtre d’exploitation, et l’authentification par clé élimine la force brute par mot de passe.
Détection
Version d’OpenSSH installée et éligibilité à CVE-2024-6387 :
ssh -V 2>&1
dpkg -l openssh-server 2>/dev/null | awk '/openssh-server/{print $3}'
Tentatives d’authentification échouées et adresses sources (force brute) :
journalctl -u ssh -u sshd --since "24 hours ago" | grep -E 'Failed password|Invalid user|Connection closed.*preauth'
journalctl -u ssh | grep -oP 'Failed password for( invalid user)? \K\S+ from \S+' | sort | uniq -c | sort -rn | head
Détection de signatures de scan/exploitation pre-auth (forte volumétrie de preauth depuis une même source, indice de tentative regreSSHion) :
journalctl -u ssh | grep 'preauth' | grep -oP 'from \K[0-9.]+' | sort | uniq -c | sort -rn | head
Durcissement
Configuration /etc/ssh/sshd_config.d/99-hardening.conf : clé uniquement, root désactivé, tentatives et grâce réduites :
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey
MaxAuthTries 3
MaxSessions 4
LoginGraceTime 20
PermitEmptyPasswords no
X11Forwarding no
AllowAgentForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
AllowGroups ssh-users
Algorithmes modernes uniquement (suppression des échanges et chiffrements faibles) :
KexAlgorithms sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
HostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512
PubkeyAcceptedAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512
Application après validation syntaxique :
sshd -t && systemctl reload ssh
Pour les versions affectées par CVE-2024-6387 dans l’attente d’une mise à jour de paquet, LoginGraceTime 0 désactive la race condition au prix d’une exposition aux saturations de connexions ; la mise à jour vers 9.8p1 ou supérieur reste la mesure correcte.
Vérification
Confirmation que les algorithmes faibles sont rejetés et que l’authentification par mot de passe est refusée :
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no test@192.0.2.10 2>&1 | grep -i 'Permission denied'
ssh -Q kex | grep -i 'diffie-hellman-group1' && echo "FAIBLE PRESENT" || echo "OK"
nmap --script ssh2-enum-algos -p 22 192.0.2.10 | grep -iE 'sha1|cbc|group1-'
L’authentification par clé doit fonctionner et celle par mot de passe être refusée. Le scan ne doit révéler aucun algorithme cbc, sha1 ni group1.
Vous avez un projet sur ces sujets ?
Nous contacter →