Durcir la configuration SSH
Mise à jour :
Laisser la configuration SSH par défaut expose votre serveur à de nombreuses vulnérabilités. Par défaut, certains paramètres offrent peu de restrictions, facilitant ainsi les attaques par force brute, les tentatives d’accès non autorisées et l’exploitation de failles connues. Un serveur mal configuré devient une cible facile pour les attaquants cherchant à compromettre votre système. Personnaliser et durcir la configuration est donc essentiel pour réduire ces risques et garantir un accès sécurisé à votre machine. Dans ce guide, je vous montre comment renforcer votre config SSH avec des bonnes pratiques éprouvées.
Pourquoi mettre à jour OpenSSH régulièrement ?
OpenSSH est omniprésent dans les infrastructures informatiques, servant de pilier pour les connexions sécurisées à distance. Cette large adoption en fait une cible privilégiée pour les attaquants. Ainsi, la mise à jour régulière d’OpenSSH est une mesure essentielle pour maintenir la sécurité de vos systèmes.
Par exemple, en juillet 2024, la vulnérabilité RegreSSHion (CVE-2024-6387 ↗) a été découverte dans les versions 8.5p1 à 9.7p1 d’OpenSSH. Cette faille permettait à un attaquant distant non authentifié d’exécuter du code arbitraire avec des privilèges root, compromettant ainsi gravement la sécurité du système. La mise à jour vers la version 9.8p1 a corrigé cette vulnérabilité.
De plus, en février 2025, une vulnérabilité critique (CVE-2025-26465 ↗) a été identifiée dans OpenSSH. Cette faille permettait à un attaquant d’usurper l’identité d’un serveur légitime, facilitant ainsi des attaques de type “man-in-the-middle”. La mise à jour vers la version 9.9p2 a permis de résoudre ce problème.
Ces exemples illustrent l’importance de maintenir OpenSSH à jour pour se protéger contre des vulnérabilités critiques. Négliger les mises à jour expose votre infrastructure à des risques majeurs. Il est donc recommandé de surveiller régulièrement les annonces de sécurité et d’appliquer les correctifs dès leur disponibilité.
Configuration sécurisée d’OpenSSH
Configurer correctement OpenSSH est une étape clé du durcissement de votre
serveur. Par défaut, certaines options sont trop permissives, ce qui peut
exposer votre infrastructure à des attaques par force brute, du vol
d’identifiants ou des exploits de vulnérabilités connues. En ajustant le
fichier de configuration /etc/ssh/sshd_config
, on réduit drastiquement ces
risques.
Voici les paramètres essentiels à modifier pour sécuriser votre serveur SSH :
Paramètres essentiels pour renforcer la sécurité
Ajoutez ou modifiez ces lignes dans /etc/ssh/sshd_config
, puis redémarrez
le service SSH avec systemctl restart sshd
pour appliquer les changements.
Paramètre | Valeur recommandée | Explication |
---|---|---|
Protocol | 2 | Seule la version 2 du protocole SSH doit être utilisée. La version 1 est obsolète et vulnérable. |
LogLevel | VERBOSE | Active des logs détaillés pour mieux détecter des activités suspectes dans /var/log/auth.log . |
PermitRootLogin | no | Désactive la connexion SSH en root pour limiter les risques d’attaques ciblant ce compte. |
PasswordAuthentication | no | Interdit l’authentification par mot de passe au profit des clés SSH. |
ChallengeResponseAuthentication | no | Désactive les méthodes d’authentification interactives vulnérables aux attaques de phishing. |
AllowAgentForwarding | no | Bloque l’agent forwarding SSH, utilisé parfois pour contourner les restrictions d’accès. |
PermitTunnel | no | Désactive la possibilité de créer des tunnels réseau via SSH pour limiter les abus. |
X11Forwarding | no | Empêche le transfert de session graphique X11, souvent inutile et vecteur potentiel d’attaques. |
MaxAuthTries | 3 | Limite le nombre de tentatives de connexion infructueuses avant déconnexion. |
UsePAM | yes | Active PAM (Pluggable Authentication Modules) pour renforcer la sécurité des connexions SSH. |
ClientAliveInterval | 0 | Désactive les requêtes de vie active des clients pour éviter des abus liés aux sessions inactives. |
ClientAliveCountMax | 2 | Si ClientAliveInterval est activé, ferme la connexion après 2 requêtes sans réponse. |
LoginGraceTime | 300 | Définit un délai de 5 minutes (300 secondes) avant qu’une tentative de connexion échoue si l’utilisateur ne s’authentifie pas. |
Appliquer les changements
Vérifier la syntaxe du fichier avant de redémarrer :
sudo sshd -t
Une fois la configuration modifiée, appliquez les modifications avec :
sudo systemctl restart sshd
Ce durcissement de la configuration réduit drastiquement la surface d’attaque et protège votre serveur contre les connexions non autorisées.
Gestion des Ciphers et Algorithmes dans OpenSSH
Sécuriser OpenSSH passe par une gestion rigoureuse des chiffrements (ciphers) et des algorithmes cryptographiques. Il est essentiel de désactiver les méthodes obsolètes ou vulnérables et d’adopter celles qui garantissent un haut niveau de sécurité.
Identifier et éliminer les algorithmes faibles
Certains chiffrements et algorithmes sont aujourd’hui considérés comme inadaptés et doivent être évités. Parmi eux :
- Ciphers vulnérables :
arcfour
,blowfish
- Algorithmes d’échange de clés (KEX) faibles :
diffie-hellman-group1-sha1
- MACs (Message Authentication Codes) obsolètes :
hmac-md5
,hmac-sha1
Ces méthodes ne garantissent plus une protection suffisante contre les attaques modernes et doivent être remplacées.
Algorithmes recommandés pour une sécurité renforcée
Pour assurer une meilleure protection, privilégiez les ciphers, KEX et MACs les plus robustes :
- Ciphers modernes :
aes256-gcm@openssh.com
,chacha20-poly1305@openssh.com
- Algorithmes de Key Exchange sécurisés :
curve25519-sha256
,diffie-hellman-group-exchange-sha256
- MACs recommandés :
hmac-sha2-512-etm@openssh.com
,umac-128-etm@openssh.com
Appliquer ces recommandations dans OpenSSH
Avant de redémarrer le service SSH, il est important de tester la configuration pour éviter tout risque de déconnexion :
sudo sshd -t
Il est recommandé d’ajouter un fichier de configuration dédié dans
/etc/ssh/sshd_config.d/
, par exemple ciphers.conf
. Pour modifier la
configuration, utilisez un éditeur de texte avec des droits administrateur et
ajoutez ces lignes :
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.comKexAlgorithms curve25519-sha256,diffie-hellman-group-exchange-sha256MACs hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com
Puis, appliquez les changements en redémarrant OpenSSH :
sudo systemctl restart sshd
La gestion adéquate des ciphers et des algorithmes dans OpenSSH est une étape super important pour assurer la sécurité de votre serveur. En suivant ces recommandations et en effectuant les ajustements nécessaires, vous renforcez considérablement la protection contre diverses menaces de sécurité.
Utilisation de SSH-Audit pour sécuriser OpenSSH
Durcir la configuration de OpenSSH est une tâche délicate, car les meilleures pratiques varient selon les distributions Linux et les exigences de sécurité propres à chaque environnement. C’est ici qu’intervient SSH-Audit, un outil essentiel pour analyser, identifier et corriger les faiblesses de votre serveur SSH. Il fournit un audit détaillé en mettant en évidence les éléments vulnérables et en suggérant des améliorations adaptées à votre système. Que vous soyez un administrateur expérimenté ou non, SSH-Audit simplifie l’optimisation de la sécurité de votre serveur OpenSSH.
Installation de SSH-Audit
SSH-Audit s’installe facilement via pip
, le gestionnaire de paquets
Python. Pour l’installer, exécutez la commande suivante dans un terminal :
pip install ssh-audit
Une fois l’installation terminée, vous pouvez lancer une analyse de votre serveur SSH.
Auditer un serveur SSH avec SSH-Audit
Pour analyser votre propre machine locale, utilisez simplement :
ssh-audit localhost
Si vous souhaitez auditer un serveur distant, remplacez localhost
par
l’adresse IP ou le nom d’hôte du serveur cible :
ssh-audit 192.168.1.100
SSH-Audit génère alors un rapport détaillé contenant :
- La version d’OpenSSH utilisée et ses éventuelles vulnérabilités connues.
- Les ciphers, MACs et algorithmes d’échange de clés en place.
- Les configurations obsolètes, faibles ou dangereuses nécessitant une correction.
Appliquer les recommandations de SSH-Audit
Une fois le rapport obtenu, il est essentiel d’analyser les résultats et de corriger les éventuelles failles. Par exemple :
- Si SSH-Audit détecte des ciphers obsolètes, vous devez les désactiver dans
le fichier de configuration
/etc/ssh/sshd_config.d/ciphers.conf
. - Si des algorithmes de Key Exchange dépassés sont utilisés, vous pouvez les
remplacer par des alternatives plus robustes comme
curve25519-sha256
.
Voici un exemple de configuration sécurisée recommandée :
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.comKexAlgorithms curve25519-sha256,diffie-hellman-group-exchange-sha256MACs hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com
N’oubliez pas de redémarrer SSH après modification pour appliquer les changements :
sudo systemctl restart sshd
Un guide pratique pour chaque distribution
À la fin du rapport, SSH-Audit fournit un lien vers des guides de configuration optimisés pour chaque distribution Linux. Vous pouvez les consulter ici :
🔗 Guides de durcissement SSH ↗
En intégrant SSH-Audit à votre processus de maintenance, vous assurez une protection proactive contre les menaces potentielles. Un audit régulier permet de maintenir votre serveur SSH conforme aux meilleures pratiques de sécurité.
Utilisation de clés SSH robustes
L’authentification par clé SSH est l’un des moyens les plus sécurisés pour se connecter à un serveur, bien plus fiable que l’authentification par mot de passe. Une clé SSH robuste garantit une protection efficace contre les attaques par force brute et le vol d’identifiants. Pour cela, il est essentiel de choisir un type de clé sécurisé, de renforcer sa protection et d’éviter les mauvaises pratiques.
Choisir un type de clé sécurisé
Tous les types de clés SSH ne se valent pas. Certains sont obsolètes et vulnérables à des attaques cryptographiques. Voici les recommandations actuelles :
Type de clé | Recommandation |
---|---|
RSA | Minimum 4096 bits |
Ed25519 | Recommandé, rapide et sécurisé |
ECDSA | Déconseillé, remplacé par Ed25519 |
DSA | Obsolète, à éviter |
Ed25519 est le meilleur choix : il est sécurisé, performant et plus court que RSA à même niveau de sécurité.
Génération d’une clé SSH sécurisée
Pour générer une clé SSH robuste, utilisez la commande suivante en fonction du type choisi :
- **Génération d’une clé Ed25519 :
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "mon-utilisateur@serveur"
- **Génération d’une clé RSA (4096 bits) :
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -C "mon-utilisateur@serveur"
Sécurisation de la clé privée
-
Protéger la clé avec un mot de passe lors de la génération : 👉 Il est recommandé d’ajouter une passphrase pour empêcher toute utilisation en cas de vol.
-
Restreindre les permissions de la clé privée :
Terminal window chmod 600 ~/.ssh/id_ed25519chmod 600 ~/.ssh/id_rsa
Ajout de la clé sur un serveur
Une fois la clé générée, elle doit être déployée sur le serveur. Utilisez
ssh-copy-id
pour l’ajouter automatiquement à l’utilisateur distant :
ssh-copy-id -i ~/.ssh/id_ed25519.pub utilisateur@serveur
Si ssh-copy-id
n’est pas disponible, copiez manuellement la clé publique dans
~/.ssh/authorized_keys
sur le serveur :
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys
Vérification et connexion avec la clé
Testez la connexion en spécifiant votre clé :
ssh -i ~/.ssh/id_ed25519 utilisateur@serveur
Si tout est configuré correctement, la connexion se fera sans mot de passe et de manière sécurisée.
Bonne pratiques complémentaires pour sécuriser OpenSSH
La sécurisation d’un serveur OpenSSH ne se limite pas à sa configuration initiale. Pour garantir une protection efficace face aux menaces en constante évolution, il est indispensable d’assurer une surveillance continue et d’appliquer des mises à jour régulières.
Surveillance de l’activité SSH
Une veille active sur les connexions SSH permet de détecter rapidement toute tentative d’intrusion ou activité suspecte. Voici les pratiques à adopter :
-
Analyse des logs SSH :
- Les tentatives de connexion et erreurs d’authentification sont enregistrées
dans
/var/log/auth.log
(Debian/Ubuntu) ou/var/log/secure
(RHEL/CentOS). - Un outil comme Logwatch ou Swatchdog permet d’automatiser l’analyse et d’envoyer des alertes en cas d’activité anormale.
- Les tentatives de connexion et erreurs d’authentification sont enregistrées
dans
-
Détection des connexions suspectes :
-
Filtrer les connexions SSH par adresse IP permet d’identifier des tentatives répétées.
-
Une commande utile pour repérer les connexions :
Terminal window sudo grep "Failed password" /var/log/auth.log | awk '{print $NF}' | sort |uniq -c | sort -nr | head
-
Gestion des clés SSH
Un suivi rigoureux des clés SSH est indispensable pour garantir un accès sécurisé.
-
Rotation régulière des clés : Il est recommandé de renouveler les clés périodiquement, notamment après un changement de personnel ou une modification de politique de sécurité.
-
Auditer les clés SSH autorisées : Vérifier régulièrement les clés présentes dans
~/.ssh/authorized_keys
et supprimer celles qui ne sont plus utilisées :Terminal window cat ~/.ssh/authorized_keys
Automatisation de la gestion et du durcissement SSH
Pour garantir une cohérence des configurations sur plusieurs serveurs et éviter les écarts liés aux erreurs humaines, il est recommandé d’utiliser des outils d’automatisation.
- Rudder ↗ est un outil de gestion de configuration qui permet d’automatiser le durcissement SSH et de garantir la conformité des serveurs.
- Ansible ↗ est une alternative légère permettant de déployer une configuration SSH sécurisée via des playbooks.
Conclusion
Sécuriser SSH est une étape essentielle pour protéger votre serveur contre les intrusions et les attaques. En appliquant les bonnes pratiques de durcissement, comme la mise à jour régulière d’OpenSSH, l’usage de clés SSH robustes, la restriction des accès, et l’audit de votre configuration, vous réduisez considérablement les risques de compromission.
Ne négligez pas la surveillance continue et l’automatisation pour garantir une sécurité optimale sur le long terme. Un serveur bien configuré est un serveur plus sûr !