Cet article explique comment renforcer la sécurité d’un serveur OpenSSH sous Debian : - Supprimer les clés d’hôte existantes et en régénérer de nouvelles en RSA et ED25519. - Empêcher les négociations utilisant des clés Diffie-Hellman faibles (inférieures à 3071 bits). - Restreindre la liste des algorithmes autorisés pour n'utiliser que des standards modernes. > [!info] À savoir ! <span style="font-weight: normal; color: var(--text-normal)">Ces recommandations sont issues des [Guides de durcissement SSH](https://www.ssh-audit.com/hardening_guides.html) par SSH-Audit.</span> Basculez en mode root car certaines commandes sont incompatibles avec `sudo` : ```shell sudo -s ``` #### Régénérer les clés RSA et ED25519 Supprimez toutes les clés d’hôte existantes, puis crée de nouvelles clés RSA (4096 bits) et ED25519. > [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">Si des clients SSH se sont déjà connectés à cette machine, ils afficheront un avertissement de clé d’hôte modifiée à la prochaine connexion. Il faudra alors valider manuellement la nouvelle empreinte.</span> ```shell 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 "" ``` Activez ces clés dans `sshd_config` : ```shell echo -e "\nHostKey /etc/ssh/ssh_host_ed25519_key\nHostKey /etc/ssh/ssh_host_rsa_key" >> /etc/ssh/sshd_config ``` #### Filtrer les moduli Diffie-Hellman faibles Le fichier /etc/ssh/moduli contient les nombres premiers utilisés pour les échanges Diffie-Hellman. Plus ils sont grands, plus l’échange est sécurisé. Supprimer les moduli <3071 bits renforce la sécurité : ```shell awk '$5 >= 3071' /etc/ssh/moduli > /etc/ssh/moduli.safe mv /etc/ssh/moduli.safe /etc/ssh/moduli ``` #### Restreindre les algorithmes Ajoutez un fichier dédié `ssh-audit_hardening.conf` dans le répertoire `/etc/ssh/sshd_config.d/` pour limiter les algorithmes d’échange de clés, de chiffrement et de signature : ```shell echo -e "# Restrict key exchange, cipher, and MAC algorithms, as per sshaudit.com\n# hardening guide.\nKexAlgorithms sntrup761x25519-sha512,[email protected],curve25519-sha256,[email protected],gss-curve25519-sha256-,diffie-hellman-group16-sha512,gss-group16-sha512-,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256\n\nCiphers [email protected],[email protected],aes256-ctr,aes192-ctr,[email protected],aes128-ctr\n\nMACs [email protected],[email protected],[email protected]\n\nHostKeyAlgorithms [email protected],[email protected],[email protected],[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256\n\nRequiredRSASize 3072\n\nCASignatureAlgorithms [email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256\n\nGSSAPIKexAlgorithms gss-curve25519-sha256-,gss-group16-sha512-\n\nHostbasedAcceptedAlgorithms [email protected],[email protected],[email protected],ssh-ed25519,[email protected],rsa-sha2-512,[email protected],rsa-sha2-256\n\nPubkeyAcceptedAlgorithms [email protected],[email protected],[email protected],ssh-ed25519,[email protected],rsa-sha2-512,[email protected],rsa-sha2-256\n\n" > /etc/ssh/sshd_config.d/ssh-audit_hardening.conf ``` #### Appliquer les modifications Quittez le mode root : ```shell exit ``` Redémarrer le service SSH pour appliquer les nouveaux paramètres. ```shell sudo service ssh restart ``` > [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">La connexion avec des clients ssh de version inférieure à 9.6 risque d'être impossible. C'est la cas du client OpenSSH de Windows 11. Consultez la [[tuto-openssh-update-win|procédure de mise à jour le client ssh sous Windows]].</span> ## Conclusion Votre serveur OpenSSH est à présent beaucoup plus robuste ! vous pouvez utiliser un outil comme [[kb-ssh-audit|SSH-Audit]] pour vérifier le résultat.