Sécuriser un serveur SSH avec une authentification par clé

12 décembre 2014 Sécurité 0 Commentaire

Pour continuer notre série je vous propose aujourd’hui un petit guide permettant de mieux sécuriser un serveur SSH avec une authentification par clés. Une authentification par mot de passe peut se révéler compromise si une personne venait a connaitre votre mot de passe ou si votre mot de passe n’était pas assez fort.

Nous allons donc commencer par générer un jeu de clés : une clé publique et une clé privée. La clé publique devra être présente sur tous les serveurs sur lesquels vous souhaiterez utiliser une authentification par clés, la clé privée quant à elle devra être présente sur tous les clients depuis lesquels vous vous connecterez. Afin de rajouter une couche de sécurité nous utiliserons une passphrase, une sorte de mot de passe assigné à votre clé privée.

 

 

Merci de bien vouloir vous référer à une nouvelle version de ce guide : Sécuriser ssh – authentification par clé Ed25519

 

Sécuriser un serveur SSH avec une authentification par clé : Génération des clés SSH

Sur un client windows

Sous Windows pour pouvoir générer un jeu de clés SSH il faut commencer par télécharger PuTTY Gen. Lancez le programme et sélectionnez le type de clés que vous souhaitez utiliser. L’utilisation de clés “SSH-1 (RSA)” est à proscrire, il vous faudra donc choisir entre “SSH-2 RSA” et “SSH-2 DSA”. Vous pouvez également choisir le nombre de bits pour vos clés SSH (ne pas descendre sous les 2048 bits). Une fois votre choix fait, vous pouvez cliquer sur « Generate »

Sécuriser un serveur SSH avec une authentification par clé

 

Puis vous devrez bouger votre souris afin de générer de l’entropie et cela jusqu’à ce que la barre de chargement soit totalement remplie

Sécuriser un serveur SSH avec une authentification par clé

 

Une fois ce processus terminé vos clés SSH sont générées. Avant de les enregistrer nous allons ajouter une couche de sécurité en configurant une passphrase. Vous pouvez aussi si vous le souhaitez ajouter un commentaire.

Sécuriser un serveur SSH avec une authentification par clé

 

Copiez et collez dans un fichier texte toutes les lignes sous « Public key for pasting into OpenSSH authorized_key file » : c’est votre clé publique. Si vous deviez effacer ou tout simplement perdre ce fichier, il est tout a fait possible de récupérer votre clé publique avec l’aide de votre clé privée via PuTTY Gen : File > Load private key.

Sauvegardez votre clé privée en cliquant sur Save Private Key. Cette clé doit restée secrète !

 

Sur un client debian / ubuntu

Ouvrez un terminal et lancez la commande

ssh-keygen -t rsa -N "votre passphrase"

 

Le paramètre -t nous permet de spécifier le type de clés SSHque nous souhaitons générer. -t rsa permet de générer un jeu de clés SSH utilisant le protocole SSH-2 RSA tandis que -t dsa utilisera le protocole SSH-2 DSA. Le paramètre -N permet de définir directement une passphrase. Voici un exemple de génération de clés SSH:

noobunbox@ubuntu-serveur:~$ ssh-keygen -t rsa -N "ma_passphrase"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/noobunbox/.ssh/id_rsa):
Your identification has been saved in /home/noobunbox/.ssh/id_rsa.
Your public key has been saved in /home/noobunbox/.ssh/id_rsa.pub.
The key fingerprint is:
44:eb:19:0f:7f:eb:ff:c3:ef:82:36:9e:7b:61:23:f3 noobunbox@ubuntu-serveur
The key's randomart image is:
+--[ RSA 2048]----+
|        .        |
|       . .       |
|        =        |
|       o *       |
|        S o .    |
|           .o.+  |
|            .*.o |
|           .+.Eo |
|           o==.+*|
+-----------------+

 

Ce résultat nous indique ou sont stockées nos clés SSH

Your identification has been saved in /home/noobunbox/.ssh/id_rsa.
Your public key has been saved in /home/noobunbox/.ssh/id_rsa.pub.

 

 

Sécuriser un serveur SSH avec une authentification par clé : Envoi de la clé publique sur le serveur

Sur un client windows

Connectez vous sur votre serveur via PuTTY et modifions / créons le fichier authorized_keys

nano ~/.ssh/authorized_keys

Collez dans ce fichier votre clé publique que vous aviez sauvegardée. Enregistrez et fermez le fichier. Modifiez ensuite les permissions.

chmod 600 ~/.ssh/authorized_keys

 

Sur un client debian / ubuntu

La manipulation est bien plus pratique depuis ce type de client grâce a la commande ssh-copy-id. Bien entendu vous devrez remplacer <username> par votre nom d’utilisateur et ipadress par l’adresse de votre serveur.

ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<ipaddress>

 

Si vous avez modifiez le port d’écoute de votre serveur SSH (c’est bien :)) il faudra utiliser la commande suivante, en remplaçant <num_port> par le port qui convient

ssh-copy-id -i ~/.ssh/id_rsa.pub "<username>@<ipaddress> -p <num_port>"

 

 

Sécuriser un serveur SSH avec une authentification par clé : Forcer l’authentification par clé

Pour cela rien de plus simple, commençons par modifier le fichier de configuration du serveur SSH

sudo nano /etc/ssh/sshd_config

 

Modifiez la variable PasswordAuthentification, celle-ci doit être configurée sur no et dé-commentée

PasswordAuthentification no

 

Sauvegardez et fermez le fichier, relancez le serveur SSH

sudo service ssh reload

 

Ouvrez une seconde connexion sur votre serveur (ne fermez pas la première, elle pourrait vous sauvez la vie en cas de mauvaise manip dans votre fichier de configuration) et vérifiez que tout fonctionne.