La sécurisation de SSH implique un large éventail de techniques possibles, mais toutes ne sont pas aussi pratiques pour tous les environnements. Les recommandations de cet article sont des méthodes largement reconnues et à fort impact qui équilibrent la facilité de mise en œuvre avec une protection robuste. Elles sont tirées de normes définies par des organisations telles que le NIST, le CERT et le projet OpenSSH, et reflètent les principes fondamentaux que SSL.com applique également à la sécurisation des certificats numériques : protection des clés, utilisation d'un chiffrement fort et limitation de l'accès privilégié.
Une fois que vous avez mis en place ces bonnes pratiques fondamentales, vous pouvez explorer des tactiques plus avancées, telles que le SSH basé sur des certificats, le port knocking ou le SSH sur VPN, selon vos besoins.
1. Utilisez l'authentification par clé plutôt que par mot de passe
Qu'est-ce que c'est:
Vous remplacez les identifiants de connexion par mot de passe par une paire de clés publique/privée cryptographique. La clé publique est stockée sur votre serveur, tandis que la clé privée reste sur votre machine locale.
Pourquoi c'est plus sécurisé :
- Les mots de passe sont susceptibles d'être attaqués par force brute
- Un attaquant doit obtenir physiquement votre clé privée pour entrer, ce qui est beaucoup plus difficile que de deviner un mot de passe.
Comment mettre en œuvre :
Générer une paire de clés
Sous Linux ou macOS, ouvrez un terminal et exécutez :
ssh-keygen -t ed25519
Pour plus de sécurité (si ed25519 n'est pas disponible dans votre environnement), vous pouvez utiliser :
ssh-keygen -t rsa -b 4096
Copiez la clé publique sur votre serveur
Vous pouvez utiliser la commande ssh-copy-id (sous Linux/macOS) pour transférer facilement votre clé publique :
ssh-copy-id utilisateur@adresse_serveur
Si ssh-copy-id n'est pas disponible, ajoutez manuellement le contenu de votre fichier id_ed25519.pub (ou id_rsa.pub) au fichier ~/.ssh/authorized_keys du serveur.
Désactiver l'authentification par mot de passe
Dans /etc/ssh/sshd_config, définissez :
Mot de passeAuthentification non
Redémarrez le service SSH :
sudo systemctl recommencer ssh
Tout comme la gestion des certificats numériques, l’authentification basée sur une clé SSH garantit que seule une personne disposant de la bonne clé privée peut établir une connexion.
2. Désactiver la connexion root
Qu'est-ce que c'est:
Empêcher l'utilisateur root de se connecter directement via SSH.
Pourquoi c'est plus sécurisé :
- Le compte root détient des privilèges illimités et constitue une cible attrayante pour les attaquants
- La désactivation de l'accès root direct oblige les attaquants à deviner non seulement une clé ou un mot de passe, mais également un nom d'utilisateur valide
Comment mettre en œuvre :
Dans /etc/ssh/sshd_config, recherchez ou ajoutez :
PermitRootLogin no
Redémarrer SSH :
sudo systemctl recommencer ssh
Cette étape réduit efficacement votre surface d’attaque en supprimant le compte le plus puissant de la portée facile.
3. Appliquer un chiffrement fort et des algorithmes MAC
Qu'est-ce que c'est:
SSH vous permet de spécifier les chiffrements et les codes d'authentification de message (MAC) à utiliser pour crypter les données et vérifier l'intégrité des données.
Pourquoi c'est plus sécurisé :
- Les algorithmes plus anciens ou faibles (par exemple, DES, RC4) peuvent être vulnérables aux attaques cryptographiques
- L'utilisation de chiffrements modernes (comme AES-256) et de MAC forts (comme HMAC-SHA2) permet de préserver la confidentialité et l'inviolabilité de vos données de session.
Comment mettre en œuvre :
Dans /etc/ssh/sshd_config, ajoutez ou mettez à jour votre liste de chiffrement/MAC :
Chiffres aes256-ctr,aes192-ctr,aes128-ctr
MAC hmac-sha2-256, hmac-sha2-512
Redémarrer SSH :
sudo systemctl recommencer ssh
Maintenir la cryptographie à jour pour SSH est tout aussi essentiel que de garantir l'utilisation de protocoles et de chiffrements sécurisés. TLS.
4. Maintenez SSH (et votre système) à jour
Qu'est-ce que c'est:
S'assurer qu'OpenSSH, ainsi que le reste de votre système d'exploitation, reçoit régulièrement des correctifs de sécurité.
Pourquoi c'est plus sécurisé :
- Les logiciels obsolètes contiennent souvent des vulnérabilités connues
- Les attaquants ciblent souvent des versions plus anciennes avec des exploits non corrigés
Comment mettre en œuvre :
Sur les systèmes basés sur Debian ou Ubuntu :
sudo apt-get mise à jour && sudo apt-get mise à niveau
Sur les systèmes basés sur CentOS, Fedora ou RHEL :
sudo yum update
Assurez-vous également de vérifier les mises à jour du micrologiciel si vous exécutez SSH sur des appareils réseau ou d'autres matériels.
5. Mettre en œuvre l’authentification à deux facteurs ou à plusieurs facteurs (2FA/MFA)
Qu'est-ce que c'est:
Ajoute une couche de sécurité supplémentaire en exigeant quelque chose en plus d'un mot de passe ou d'une clé (par exemple, un code à usage unique sur votre téléphone).
Pourquoi c'est plus sécurisé :
- Même si les attaquants obtiennent votre clé SSH, ils ont toujours besoin du deuxième facteur pour se connecter
- Aide à se défendre contre le vol d'informations d'identification
Comment mettre en œuvre :
Installer et configurer un outil MFA
Par exemple, Authentificateur Google peut être installé sur des serveurs Linux et configuré comme un module PAM (Pluggable Authentication Modules). Suivez les instructions d'installation spécifiques à votre distribution.
Modifiez /etc/pam.d/sshd et /etc/ssh/sshd_config
- Activer Google Authenticator ou un autre module MFA
- Définissez ChallengeResponseAuthentication sur oui et AuthenticationMethods sur publickey,keyboard-interactive (ou la combinaison qui convient à votre environnement)
Redémarrer SSH :
sudo systemctl recommencer ssh
6. Activer la journalisation et la surveillance
Qu'est-ce que c'est:
Capturez les événements de connexion SSH, suivez les activités suspectes et recevez des alertes lorsque quelque chose ne va pas.
Pourquoi c'est plus sécurisé :
- Les tentatives d'intrusion sont souvent visibles dans les journaux sous forme d'échecs de connexion répétés ou d'actions non autorisées
- La détection précoce signifie que vous pouvez réagir rapidement, en bloquant les adresses IP ou en modifiant les configurations avant que des dommages ne soient causés.
Comment mettre en œuvre :
Augmenter la verbosité du journal
Dans /etc/ssh/sshd_config, définissez :
Niveau de journalisation VERBOSE
Journaux agrégés
- Des outils comme syslog, rsyslog, ou syslog-de aider à collecter et centraliser les logs
- A Solution SIEM (Gestion des informations et des événements de sécurité) peut offrir des analyses et des alertes avancées
Utiliser les outils de prévention des intrusions
fail2ban analyse les fichiers journaux et bannit les adresses IP présentant des signes malveillants, tels que trop d'échecs de mot de passe.
7. Mettre en œuvre des contrôles et des restrictions d’accès
Qu'est-ce que c'est:
Limitez qui peut se connecter à SSH et d'où, empêchant les demandes entrantes non autorisées ou excessives.
Façons de le faire :
Restrictions du pare-feu
Autorisez uniquement le SSH à partir d'adresses IP connues ou approuvées. Par exemple, sous Linux avec ufw :
sudo ufw autoriser à partir de 192.168.1.0/24 vers n'importe quel port 22
Configuration Port
L'exécution de SSH sur un port non standard (par exemple, 2222) peut réduire les tentatives d'analyse automatisées. Cela ne remplace pas les mesures de sécurité réelles, mais cela peut réduire le bruit.
Restrictions d'utilisateur/groupe
Dans /etc/ssh/sshd_config, spécifiez :
Autoriser les utilisateurs Alice Bob
or
AllowGroups sshadmins
8. Utilisez des mots de passe de clé SSH et un stockage de clé sécurisé
Qu'est-ce que c'est:
Chiffrez votre clé privée avec une phrase secrète afin que même si votre machine est compromise, la clé elle-même ne soit pas immédiatement utilisable.
Pourquoi c'est plus sécurisé :
- Un fichier clé volé sans mot de passe peut accorder un accès instantané
- Les phrases de passe agissent comme une couche de cryptage supplémentaire sur votre clé locale
Comment mettre en œuvre :
Définir une phrase secrète lors de la génération de la clé
ssh-keygen -t ed25519
(Vous serez invité à saisir une phrase secrète.)
Protégez vos fichiers clés
Limitez les autorisations sur votre dossier .ssh et vos fichiers clés :
chmod 700 ~ / .ssh
chmod 600 ~/.ssh/id_ed25519
Envisagez des modules de sécurité matériels (HSM) ou des jetons
Pour les grandes organisations, l’utilisation de matériel dédié au stockage des clés peut atténuer les risques de vol de logiciels ou de logiciels malveillants.
Pour aller plus loin
La sécurité SSH se résume à plusieurs couches de protection. En mettant en œuvre l'authentification par clé, en désactivant l'accès root direct, en utilisant un chiffrement fort, en restant à jour, en exigeant une authentification multifacteur, en surveillant les journaux, en limitant l'accès et en protégeant vos clés avec des phrases de passe, vous couvrez les risques les plus courants (et les plus graves).
Ces mesures s'inscrivent dans la même philosophie de sécurité plus large que celle préconisée par SSL.com pour les certificats numériques : protéger les clés cryptographiques, utiliser un chiffrement robuste, restreindre l'accès privilégié et surveiller de près vos systèmes. Une fois que vous avez établi ces bonnes pratiques fondamentales, vous pouvez explorer des options plus avancées telles que les autorités de certification SSH, le port knocking ou l'exécution de SSH sur un VPN pour personnaliser davantage votre posture de sécurité.