Installation et configuration d’un SSH et création d’un tunnel SSH

installation et connfiguration ssh

Dans ce premier tutoriel de la catégorie réseaux nous allons voir comment mettre en place une connexion SSH sur un serveur sous linux et un client sous Linux ou Windows. On va également voir comment créer un tunnel SSH pour chiffrer tous le trafic réseaux pour certaines applications. En effet certains protocoles ne sont pas bien sécurisé (voir pas du tout) comme FTP ou encore VNC qui laissent passer les mots de passes en clair sur le réseau. Il suffirait alors qu’une personne mal intentionnée sniffe les paquets avec wireshark et il pourrait connaître vos login et mot de passe. Je vous laisse imaginer la suite… Voilà pourquoi il est bien plus prudent de tout chiffrer via SSH quand on veut accéder à son serveur.

Trêve de blabla, on va commencer par installer openssh-server en tapant :

apt-get install openssh-server fail2ban

On installe également fail2ban pour des raisons de sécurité. Mais je détaillerai son utilisation un peu plus tard dans le billet. Si vous êtes sous autre chose qu’un debian-like je vous laisse regarder par vous-même comment installer ces 2 paquets et leurs dépendances. Ensuite pour le lancer il suffit de faire un :

/etc/init.d/ssh start

Votre serveur SSH est déjà en place. Mais toujours pour une question de sécurité on va changer le port par défaut du serveur car sinon on va sans cesse recevoir des demandes de log de scripts qui tenteront de bruteforcer votre accès. Le port par défaut est le 22, je vous conseille donc de la changer pour un port assez élevé qui n’est pas utilisé par une autre application comme par exemple le port 19622. (il s’agit d’un chiffre totalement aléatoire). Pour faire le changement on ouvre le fichier de config et on remplace par le nouveau port :

nano /etc/ssh/sshd_config

Et on change le port 22 par 19622 et on va également vérifier que PermitRootLogin est bien à no et non à yes car cela permet d’empêcher le login à votre serveur ssh en root. Par contre vous pourrez après vous être loguer en user faire un su et passer en root. Puis on fait  CTRL + X pour fermer. Ensuite on va configurer fail2ban pour qu’il fonctionne avec SSH. Pour cela on ouvre le fichier de config de fail2ban :

nano /etc/fail2ban/jail.conf

Et on vérifie que la section SSH ressemble bien à celle-ci :

[ssh]
enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6

Ensuite on démarre le démon de fail2ban en faisant :

/etc/init.d/fail2ban start

Et voilà, on a un serveur SSH pas trop mal sécurisé qui tourne, on va pouvoir s’occuper de la partie client. On va commencer par un client Windows. Pour commencer on va devoir télécharger PuTTY ici. Je vous conseille de prendre l’installer qui permet de tout installer en 1 click. Le fichier s’appelle putty-0.60-installer.exe. Une fois que vous avez installez PuTTY il va falloir générer une clé de chiffrement pour établir une connexion automatisé avec notre serveur. Pour cela il vous faudra lancer PuTTYgen  (Démarrer>>Tous les programmes>>PuTTY>>PuTTygen) et cliquer sur le bouton generate avec les valeurs par défauts qui sont très bien.

PuTTY key generator

Ensuite vous rentrez une passphrase et vous la confirmez, ceci va par la suite vous permettre de conserver une sécurité si jamais quelqu’un avait accès à votre ordinateur. Puis vous sauvez votre clé publique et privée en cliquant sur les boutons correspondants. Pour la clé privée l’extension doit être en .ppk, en règle générale on utilise private.ppk. Si vous avez plusieurs serveurs ssh pensez à mettre un nom explicite pour chacune de vos clés. Pour ce qui est de la clé publique vous pouvez utiliser n’importe quelle extension de fichier mais la plus couramment utilisée est le .pub. Gardez PuTTYgen ouvert. Une fois ceci fait on va utiliser un utilitaire pour charger en mémoire au démarrage de Windows la clé privée. Il s’agit de Pageant  que vous pouvez lancez en allant dans Démarrer>>Tous les programmes>>PuTTY>>Pageant. Une icône apparaît dans la barre de taches (un ordinateur avec un chapeau). Faites un double click dessus et vous devez obtenir cette fenêtre :

Pageant key list

C’est normal si vous n’avez pas déjà les deux lignes comme sur mon screenshot. Appuyez sur le bouton add key et sélectionnez votre clé privée et rentrez votre passphrase. Si tous se déroule bien vous devriez maintenant avoir une ligne dans la liste des clés. Pour automatiser le chargement des clés au démarrage de votre session il suffit de créer un nouveau raccourci et d’y ajouter le chemin vers pageant.exe suivi de la ou des clés que vous voulez charger automatiquement. Il faut donc faire un click droit sur le bureau >>Nouveau >>Raccourci.

Création d'un raccourci

Et dans emplacement vous allez mettre :

"C:\Program Files\PuTTY\pageant.exe" C:/private.ppk C:/private2.ppk

Il faut bien faire attention à mettre les guillemets pour le chemin sinon ça ne vas pas fonctionner. Ensuite il vous faudra tout simplement mettre le raccourci dans Démarrer>>Tous les programmes>>Démarrage en faisant un clicker-glisser. Vous devriez vous retrouver avec quelque chose comme ça.

Démarrage

Et à chaque démarrage Pageant vous demandera la passphrase pour charger la clé. Ensuite on va aller coté serveur pour spécifier la clé privé. Pour cela il faut tout simplement copier le contenu de votre clé publique qui est dans PuTTYgen. (ce qui est sourligné en bleu) :

clé publique

Et vous devez collez ceci dans le fichier suivant

~/.ssh/authorized_keys

Voilà, nous pouvons maintenant passer à la configuration d’une session PuTTY que l’on utilisera par défaut. Pour cela il faut donc ouvrir PuTTY , cocher SSH et indiquer l’adresse IP du serveur :

PuTTY configuration

Ensuite pour automatiser un peu plus le tout vous allez devoir vous rendre dans le menu data et entrer le nom du compte user que vous voulez utiliser pour vous loguer. (en rouge sur le screenshot)

PuTTY configuration pseudo

Puis vous allez aller dans la section SSH et dans Auth et dans private key file for authentification vous allez clicker sur Browse et indiquez le chemin de votre clé privé. (encore en rouge)

PuTTY configuration clé privée

Ensuite vous retournez sur session et vous rentrez un nom de session puis vous la sauvez.

PuTTY configuration sauvegarde de la session

Maintenant il ne vous reste plus qu’à vous connectez en faisant un double-click sur votre session ou alors en cliquant sur le bouton Open en bas à droite. Et vous voilà connectez en ssh sans avoir eu à taper un seul mot de passe dans le shell de PuTTY.

connexion ssh avec PuTTY

Bon maintenant on va s’attaquer à l’objectif principal de ce tutoriel qui commence déjà à être un peu long : créer un tunnel SSH pour une application spécifique.

On va prendre l’exemple de vnc qui par défaut utilise le port 5900. On va donc devoir créer un tunnel SSH sur le port 5900 qui va encapsuler tous le trafic transitant entre le client et le serveur ce qui va permettre de totalement sécurisé notre application vnc qui était une vraie passoire au préalable.  Je ne rentre pas dans les détails de la mise en place d’un serveur/client vnc car ce n’est pas le sujet. Je part donc du principe que vous avez déjà un vnc fonctionnel et utilisant le port 5900.

Pour créer un tunnel on va devoir aller éditer la session de PuTTY que l’on a mis en place tous à l’heure. Et on va plus exactement aller dans la section  Connection>>SSH>>Tunnels. Et on va simplement indiquer le port de source qui est 5900 et la destination (on veut que tous soit redirigé vers notre pc donc 127.0.0.1 sur le port d’origine 5900) 127.0.0.1 :5900. (champs en rouge)

PuTTY configuration port forwarding

Et enfin il suffit de clicker sur le bouton add et le tunnel est créé. Ensuite vous devez vous connectez en clickant sur open et vous ne verrez aucune différence notable avec une session SSH sans tunnel. Maintenant quand vous lancerez vnc il faudra tout simplement indiquer 127.0.0.1 à la place de l’ip de votre serveur et votre connexion VNC sera sécurisée par SSH.

TightVNC choix du serveur

C’est fini pour ce billet mais dans la suite je ferai une partie pour faire la même chose avec un client Linux. Si vous avez des questions ou des remarques à ajouter ou que vous avez vues des erreurs n’hésitez pas à laisser un commentaire.

4 réponses à “Installation et configuration d’un SSH et création d’un tunnel SSH”

  1. Laurent W. dit :

    Bonjour,
    Merci pour ces explications. J’ai beaucoup appris.
    Pouvez vous étudier ce cas d’utilisation et me proposer vos réflexions :
    - Un client SSH sur un poste utilisateur non maitrisé.
    - Un serveur SSH installé sur SOLARIS et sur lequel tourne plusieurs applications (ftp, http, X11…)

    L’objectif est de permettre l’utilisation du X11 forwarding (et donc le tunneling) sans pour autant donner un accès (au sens TCP du terme) aux autres applications installées sur le serveur Solaris.

    Merci.

    • mnttech dit :

      En réfléchissant vite fait à ton problème la solution la plus simple me parait être la suivante :
      Tu créé un user sur la machine solaris avec les droits nécessaires pour faire tourner les applis sous X mais pas les droits sur le reste.
      Puis tu mets en place ton ssh entre le client et le serveur en utilisant cet user que tu viens de créer.

  2. zoe dit :

    c’est du bon travail

Laisser un commentaire