SSH (Secure Shell) est un protocole de communication sécurisé qui permet aux utilisateurs de se connecter et de gérer des serveurs distants en toute sécurité. Il est souvent utilisé pour gérer des serveurs Linux à distance. Dans cet article, nous allons explorer des techniques pour sécuriser SSH, en utilisant des exemples pratiques.
Utiliser des clés SSH pour se connecter
La méthode la plus courante pour se connecter à un serveur distant est d’utiliser un nom d’utilisateur et un mot de passe. Cependant, cette méthode n’est pas très sécurisée car elle est vulnérable aux attaques par force brute. Une meilleure méthode consiste à utiliser des clés SSH pour vous connecter au serveur.
Les clés SSH sont des paires de clés générées sur votre ordinateur local. Une clé est privée et est stockée sur votre ordinateur, tandis que l’autre clé est publique et est stockée sur le serveur distant. Lorsque vous vous connectez au serveur distant, le serveur utilise votre clé publique pour vous identifier et vous permettre de vous connecter.
Pour générer une paire de clés SSH sur votre ordinateur local, vous pouvez utiliser la commande ssh-keygen :
ssh-keygen -t rsa -b 4096
Cette commande générera une clé privée et une clé publique dans le répertoire ~/.ssh/. Vous pouvez ensuite copier la clé publique sur le serveur distant en utilisant la commande ssh-copy-id :
ssh-copy-id user@server
Remplacez « user » par votre nom d’utilisateur et « server » par le nom ou l’adresse IP du serveur distant. Cette commande copiera votre clé publique sur le serveur distant et la stockera dans le fichier ~/.ssh/authorized_keys.
Utiliser des ports non standard pour SSH
Par défaut, SSH écoute sur le port 22. Cependant, cela peut être facilement détecté par les pirates informatiques qui scannent les ports de votre serveur. Pour éviter cela, vous pouvez changer le port SSH pour un port non standard.
Pour changer le port SSH, éditez le fichier /etc/ssh/sshd_config et trouvez la ligne suivante :
#Port 22
Décommentez la ligne en supprimant le « # » et remplacez le numéro de port par un autre numéro de port non standard, comme ceci :
Port 2222
Ensuite, redémarrez le service SSH pour appliquer les modifications :
systemctl restart ssh
Assurez-vous également d’ouvrir le nouveau port dans le pare-feu de votre serveur.
Désactiver l’authentification par mot de passe
L’authentification par mot de passe peut être vulnérable aux attaques par force brute et aux attaques de dictionnaire. Pour améliorer la sécurité de votre serveur, vous pouvez désactiver complètement l’authentification par mot de passe et n’autoriser que l’authentification par clé SSH.
Pour désactiver l’authentification par mot de passe, éditez le fichier /etc/ssh/sshd_config et trouvez la ligne suivante :
#PasswordAuthentication yes
Décommentez la ligne et changez « yes » en « no », comme ceci:
PasswordAuthentication no
Ensuite redémarrez le service SSH pour appliquer les modifications :
systemctl restart ssh
Utiliser la vérification en deux étapes
La vérification en deux étapes est une mesure de sécurité supplémentaire qui ajoute une couche de protection à votre connexion SSH. Elle nécessite deux étapes pour se connecter : une première étape consiste à fournir une clé SSH, et une seconde étape consiste à entrer un code de vérification à usage unique envoyé par SMS ou généré par une application de vérification.
Pour activer la vérification en deux étapes, vous pouvez utiliser l’application Google Authenticator. Tout d’abord, installez le package libpam-google-authenticator :
sudo apt-get install libpam-google-authenticator
Ensuite, exécutez la commande google-authenticator pour configurer l’application :
google-authenticator
Suivez les instructions à l’écran pour générer un code QR que vous pouvez scanner avec l’application Google Authenticator sur votre smartphone.
Enfin, éditez le fichier /etc/pam.d/sshd et ajoutez la ligne suivante au début du fichier :
auth required pam_google_authenticator.so
Enregistrez le fichier et redémarrez le service SSH pour appliquer les modifications :
systemctl restart ssh
Limiter les connexions SSH
Pour améliorer la sécurité de votre serveur, vous pouvez limiter le nombre de connexions SSH simultanées autorisées à partir d’une adresse IP donnée. Cette mesure empêchera les attaques par force brute qui tentent de se connecter à votre serveur avec de nombreuses connexions SSH simultanées.
Pour limiter les connexions SSH, éditez le fichier /etc/ssh/sshd_config et ajoutez les lignes suivantes à la fin du fichier :
MaxSessions 2
MaxStartups 2:30:10
Ces lignes limitent le nombre de connexions SSH simultanées à deux et limitent le nombre de connexions SSH qui peuvent être établies dans un intervalle de temps donné.
Enregistrez le fichier et redémarrez le service SSH pour appliquer les modifications :
systemctl restart ssh
En conclusion, la sécurisation de SSH est essentielle pour protéger votre serveur contre les attaques potentielles. En utilisant des clés SSH, des ports non standard, la désactivation de l’authentification par mot de passe, la vérification en deux étapes et la limitation des connexions SSH, vous pouvez renforcer la sécurité de votre serveur et protéger vos données sensibles.