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-----
clef-ssh

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.

ChZlD3y

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

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.