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.