Créer une connexion sécurisé SSH avec clés

Quelques tutos pour installer et configurer Debian

Créer une connexion sécurisé SSH avec clés

Messagepar lolovoisin » Mer 13 Mar 2013 14:26

»Créer une connexion sécurisé SSH avec clés.

Lors de ce tutoriel, nous allons voir comment nous authentifier sur un serveur SSH avec un système de clé privée / clé publique.

Nous avons vu dans le tuto Installer SSH que nous pouvions nous connecter à un serveur à distance. Cette méthode est sécurisé par un mot de passe, mais il existe une autre méthode permettant une connexion automatique et plus sécurisé en utilisant un système de clé privée / clé publique.
Concrètement, cela signifie que nous aurons une clé publique sur le serveur distant et la clé privé sur votre machine, et si les deux clés se "reconnaissent" alors vous pourrez vous connecter.

1) Génération des clés ssh.
Rendez vous dans votre répertoire home
$ cd~

Une fois dans ce répertoire nous allons générer nos clés SSH.
$ ssh-keygen -t rsa -b 2048 -f ~/.ssh/cle
(ici je mets cle pour le nom de ma clé, vous pouvez lui choisir le nom que vous voulez, votre nom utilisateur peut être aussi un bon choix si vous avez plusieurs accès à gérer)

Une fois la commande lancée, on va vous demander ce que l'on appelle une "passphrase".
Enter passphrase (empty for no passphrase):

Cette "passphrase" est un mot de passe permettant de sécuriser votre clé privée. Il est fortement recommandé d'en mettre une et surtout de ne pas l'oublier, elle vous sera demandé pour valider votre connexion.


Une fois la "passphrase" saisie, vous devriez obtenir ceci :

Your identification has been saved in /home/votre_utilisateur/.ssh/cle
Your public key has been saved in /home/votre_utilisateur/.ssh/cle.pub
The key fingerprint is:
c8:e9:.......:b0 user@serveur
The key's randomart image is:
+--[ RSA 2048]----+
| .o |
.....
+-----------------+



2) Configuration coté serveur.

Nous venons donc de générer deux clé SSH, qui se trouve dans /home/votre_utilisateur/.ssh/
Rendons nous dans ce répertoire:
$ cd .ssh/

Nous avons donc un fichier cle et un fichier cle.pub.
Le premier est votre clé privée, à ne diffuser à personne, le deuxième est la clé publique que vous pourrez diffuser si vous avez besoin d'accéder à d'autres serveurs par exemple.

Bien maintenant il faut récupérer ces deux fichiers sur votre PC, la clé publique si jamais vous en avez besoin pour un autre serveur, et bien sur la clé privée qui va devoir se trouver sur la machine à partir de laquelle vous allez vous connecter.
Pour cela plusieurs solutions:

1) Soit vous avez configuré votre FTP suivant ce tuto et dans ce cas, il suffit de vous rendre via ftp sur votre répertoirehome/votre_utilisateur/.ssh et recopier les deux fichiers

2) Soit vous le faites à la main en recopiant le contenu des deux fichiers avec un copier/coller.
Pour cela vous faites un $ vim cle et vous sélectionnez tout le texte et puis vous le collez dans un fichier sur votre PC, et idem pour le fichier cle.pub
Sélectionner un texte sous vim avec la souris est pareil que de faire un Ctrl+C, donc pas besoin de chercher de raccourci, sélectionnez le texte et faite juste un Ctrl+V (ou coller depuis un menu) pour coller le texte sélectionné sur votre machine distante.


Voilà nous avons donc nos deux fichiers en local sur le PC, le plus important étant le fichier cle qui est votre clé privée.
Nous allons donc supprimer le fichier cle du serveur puisqu'il n'a pas de raison de se trouver sur le serveur, seule la clé publique doit s'y trouver.

Faites bien attention de bien avoir recopié votre clé privé, donc le fichier cle avant de le supprimer du serveur, sinon, vous êtes bon pour recommencer le régénération de la paire de clé


Pour supprimer ce fichier, il suffit de faire:
$ rm cle

A partir de là, il faut renommer la clé publique sur votre serveur en un nom de fichier "connu" par le système, authorized_keys.
Pour cela, vous faite:
$ mv cle.pub authorized_keys

Si vous regardez donc dans le répertoire .ssh/ il ne doit donc vous rester qu'un seul fichier qui est authorized_keys et sur votre machine locale, deux fichiers, cleet cle.pub

Maintenant il faut faire un peu de configuration dans le fichier sshd_conf pour autoriser les connexion SSH avec les clés.
Pour cela nous allons éditer ce fichier pour activer les authorized_keys, et rajouter le compte SSH autorisé à se connecter

$ sudo vim /etc/ssh/sshd_config

Nous allons modifier le fichier comme suit:

#Décommentez ou ajouter la ligne suivante si elle n'existe pas. Cela permet que le serveur donne son empreinte DSA en cas de connexion ssh.
HostKey /etc/ssh/ssh_host_dsa_key

#Mettez ensuite le paramètre suivant à 10s (par exemple). C'est la durée pendant laquelle une connexion sans être loggée sera ouverte.
#Puisque l'on utilise une clé, l'authentification étant automatique, cela est quasiment instantanée.
# ATTENTION !! Si vous gardez une authentification par mot de passe, il faudra taper votre mot de passe dans les 10 secondes sous peine de voir votre session se terminer !!
LoginGraceTime 10s

#Cette valeur est le nombre maximum d'essais avant de se faire refuser par le serveur...
#Vu qu'avec la clé, pas d'erreur possible, vous pouvez le mettre à 1 essai possible.
MaxAuthTries 1

#Autoriser les users à se connecter en ssh (ici on mets le nom du ou des utilisateur(s) séparé par un espace)
allowusers xxxxx zzzzzz tttttt

#Ensuite, on va indiquer au serveur SSH où se trouvent les clés et lui dire qu'on va les utiliser comme méthode d'authentification
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_key
s

#Et bien sûr, on va désactiver toutes les autres méthodes d'authentification
PermitEmptyPasswords no
ChallengeResponseAuthentication no
RSAAuthentication no
UsePAM no
KerberosAuthentication no
GSSAPIAuthentication no
PasswordAuthentication no

(Attention la dernière ligne interdit le login par mot de passe, faite bien attention de n'activer cette option qu'une fois que vous aurez testé votre connexion SSH et pas avant sous peine de ne plus pouvoir accéder au serveur à distance !!!)


Une fois cette configuration faite, on redémarre le SSH pour prendre en compte la configuration
$ sudo /etc/init.d/ssh restart

2) Configuration coté client.

Bien nous avons donc notre clé publique sur le serveur, et sur notre machine locale les deux clés, privée et publique.
Afin de pouvoir se connecter, nous allons récupérer les logiciel suivant: PuTTY, PuTTYgen
Ces logiciels sont téléchargeable ici.

Mettez ces deux exécutables sur votre bureau.
La première chose à faire est de convertir la clé privé du serveur par une clé privé que peut lire PuTTY. Pour cela on va utiliser PuTTYgen.
Lancez PuTTYgen, cliquez sur "Load" et indiquez le chemin ou se trouve votre fichier cle.
Si vous avez mis une "passphrase", elle vous sera demandée.
Puis cliquez sur "Save private key" et enregistrez votre nouvelle clé sous le nom cle.ppk

Nous allons maintenant configurer PuTTY pour se connecter en SSH.
Ouvrez PuTTY. Ci dessous les champs à remplir

- host name: (adresse ip du serveur ou le nom du serveur)
- port: 22 (ou un autre si vous l'avez modifié dans votre fichier de configuration ssh)
- sous Connection, Data, mettre auto-login username à "mon_utilisateur" (le compte qui doit se connecter en SSH sur le serveur)
- sous Connection, SSH, AUTH, faire un "browse" pour indiquer le chemin de la clé privé cle.ppk

Revenir sous "Session", mettre un nom pour la session dans "Saved Sessions" et cliquer sur "Save"
Voilà votre session est enregistré.
Il suffit de cliquer sur "Open" et vous devriez voir la fenêtre de PuTTY se lancer et votre connexion se faire automatiquement.
Il va vous être demandé votre passphrase si vous en avez mit une et vous pourrez vous connecter.

4) Conclusion.
Alors vous allez me dire : "Ben ça change quoi puisque je dois toujours rentrer un mot de passe ?"
Et bien tout d'abord, cela permet de gérer au mieux les personnes autorisées à se connecter.
En effet si on interdit les connexion par mot de passe, alors il ne sera possible que de s'authentifier via ce système de clé, et donc d'éviter des attaques.
Ensuite, si vos le souhaitez, vous pouvez créer une paire de clé sans "passphrase", et donc votre connexion sera automatique puisque l'authentification sera seulement basé sur les clés, bien que je le conseille pas.

Voilà, en espérant que ce tutoriel vous aura été utile. ;)
Avatar de l’utilisateur
lolovoisin
Administrateur du site
Administrateur du site
 
Messages: 408
Inscription: Ven 28 Nov 2008 10:18

Retourner vers Tutoriels Debian

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron