Protéger l’accès SSH sur un serveur Linux avec une clef SSH
Sur mon serveur Ubuntu 16.04, j’ai Fail2Ban installé. Ce dernier tourne avec Firewalld pour bannir les IPs des bots qui tentent de se connecter au serveur en SSH. Même si cette formule arrive à les bloquer, cela n’a pas diminué le nombre de tentatives dans mon cas. En cherchant, j’ai trouvé comme solution d’autoriser l’accès SSH uniquement via une clef SSH, et à un utilisateur spécifique.
Dans une session SSH sous root, lancez les commandes suivantes :
adduser nom_utilisateur Entrez un mot de passe usermod -aG sudo nom_utilisateur su - nom_utilisateur Générer la clef SSH de l'utilisateur : ssh-keygen -t rsa Faites entrer pour sauvegarder le fichier à l'emplacement par défaut (le dossier de l'utilisateur Entrez un mot de passe/passphrase associé à la clef. cd /home/nom_utilisateur/.ssh/ mv id_rsa.pub authorized_keys chmod 600 authorized_keys cat id_rsa copiez tout le bloc de texte qui s'affiche. Votre bloc de texte doit commencer par -----BEGIN RSA PRIVATE KEY----- et se terminer par -----END RSA PRIVATE KEY-----
Ouvrez un editeur texte et collez le contenu copié ci-dessus. Sauvegardez le texte sous un nom type “ip-serveur-key” sans aucune extension.
Ouvrez votre client SSH. Dans mon cas, c’est MobaXterm. Cliquez sur Session > SSH > dans la fenêtre qui s’affiche, rentrez l’ip du serveur, le nom d’utilisateur créé ci-dessus > cochez la case « Use Private Key » et naviguez sur votre ordiateur et sélectionnez le fichier ip-serveur-key créé ci-dessus pour établir la connexion.
Si la connexion fonctionne, procédez à l’étape suivante pour autoriser l’accès que via cette clef SSH.
Dans une session SSH sous root, lancez les commandes suivantes :
vi /etc/ssh/sshd_config Changez les valeurs des options comme suit : PasswordAuthentication no ChallengeResponseAuthentication no UsePAM yes PubkeyAuthentication yes PermitRootLogin no Ajoutez cette ligne à la fin du fichier : AllowUsers nom_utilisateur Puis redémarrez le serveur SSH : sudo systemctl restart sshd
Note importante : Dans la section AllowUsers, il faut ajouter tous les utilisateurs SFTP (chaque utilisateur séparé par un espace) pour qu’ils puissent se connecter. Ex : AllowUsers nom_utilisateur1 nom_utilisateur2