2025 - Voici les nouvelles recommandations à suivre pour sécuriser son SSH : https://www.ssh-audit.com/hardening_guides.html#debian_12
-
Re-generate the RSA and ED25519 keys
rm /etc/ssh/ssh_host_*
ssh-keygen -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key -N ""
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
-
Enable the ED25519 and RSA keys
Enable the ED25519 and RSA HostKey directives in the /etc/ssh/sshd_config file:
echo -e "\nHostKey /etc/ssh/ssh_host_ed25519_key\nHostKey /etc/ssh/ssh_host_rsa_key" >> /etc/ssh/sshd_config
-
Remove small Diffie-Hellman moduli
awk '$5 >= 3071' /etc/ssh/moduli > /etc/ssh/moduli.safe
mv /etc/ssh/moduli.safe /etc/ssh/moduli
-
Restrict supported key exchange, cipher, and MAC algorithms
echo -e "# Restrict key exchange, cipher, and MAC algorithms, as per sshaudit.com\n# hardening guide.\n KexAlgorithms sntrup761x25519-sha512,sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,gss-curve25519-sha256-,diffie-hellman-group16-sha512,gss-group16-sha512-,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256\n\nCiphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-gcm@openssh.com,aes128-ctr\n\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com\n\nHostKeyAlgorithms sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256\n\nRequiredRSASize 3072\n\nCASignatureAlgorithms sk-ssh-ed25519@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256\n\nGSSAPIKexAlgorithms gss-curve25519-sha256-,gss-group16-sha512-\n\nHostbasedAcceptedAlgorithms sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,ssh-ed25519,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-256\n\nPubkeyAcceptedAlgorithms sk-ssh-ed25519-cert-v01@openssh.com,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,ssh-ed25519,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-256\n\n" > /etc/ssh/sshd_config.d/ssh-audit_hardening.conf
Cette recommandation implique l’ajout de include /etc/ssh/sshd_config.d/*.conf dans votre fichier sshd_config qui normalement se trouve dans /etc/ssh/.
# This configuration has been automatically generated
# by YunoHost
Protocol 2
# PLEASE: if you wish to change the ssh port properly in YunoHost, use this command:
# yunohost settings set security.ssh.ssh_port -v <port>
Port 22
ListenAddress ::
ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
Include /etc/ssh/sshd_config.d/*.conf
MaxStartups 20:50:100
PerSourceMaxStartups 1
Version simple:
il y a une interface web sur ssh-audit.com. Vous entrez l’IP de votre serveur et hop, vous avez un rapport détaillé.
Version moins simple:
Voici l’outil qui permet de vérifier le SSH de son serveur :
Pour l’installer, avec Python
pip3 install ssh-audit
Pour Docker
docker pull positronsecurity/ssh-audit
Pour Snap
snap install ssh-audit
l’outil détecte tous les algorithmes qui ne sont pas résistants aux attaques quantiques. En suivant le principe du “Harvest Now, Decrypt Later”, les agences de renseignement stockent déjà vos communications chiffrées en attendant d’avoir des ordinateurs quantiques pour les déchiffrer. SSH-Audit vous alerte sur ces algorithmes vulnérables pour que vous puissiez migrer vers des alternatives quantum-safe.
L’utilisation basique, permet de scanner votre serveur :
ssh-audit monserveur.noho.st ou ssh-audit ipduserveur:numeroduportssh
Le rapport apparaîtra totalement vert si tout est correct, sinon le orange et rouge indique ce qui n’est pas correct.
Et pour tester un client SSH, lancez
ssh-audit -c
et connectez-vous avec
ssh -p 2222 test@localhost.
L’outil analysera la configuration du client qui se connecte.
ssh-audit ne fait pas que scanner. Il peut simuler des attaques pour tester la résistance de vos serveurs.
L’attaque DHEat, vous pouvez la lancer avec la commande
ssh-audit --dheat=10 targetserver
Suite à ce test les lignes ci_dessous sont à ajouter à votre sshd_config :
Une limitation de connexion potentiellement insuffisante entraînant une vulnérabilité potentielle à l’attaque DoS DHEat
PerSourceMaxStartups 1
ET
Le paramètre MaxStartups spécifie le nombre maximal de connexions simultanées non authentifiées au démon SSH
MaxStartups 10:30:60 protection pour serveur avec processeur Faible
MaxStartups 20:50:100 protection pour serveur avec processeur Normal
MaxStartups 50:30:200 protection pour serveur avec processeur Fort