• Aucun résultat trouvé

Anas Abou El Kalam Sécurité SSH SSH

N/A
N/A
Protected

Academic year: 2022

Partager "Anas Abou El Kalam Sécurité SSH SSH"

Copied!
13
0
0

Texte intégral

(1)

SSH

1 Introduction

La possibilité de travailler .à distance. a toujours été une fonctionnalité très appréciée des utilisateurs de machines UNIX. Cela est traditionnellement possible suivant plusieurs modes de connexion: telnet, rlogin, rsh, ftp, ...

Le gros problème avec ces modes de connexions c'est que l'authentication que vous devez fournir pour vous connecter sur la machine distante circule .en clair. sur le réseau. C'est à dire que n'importe quelle personne qui a accès au réseau où vous vous trouver peut à l'aide de programmes appelés .sniffeurs. récupéré votre mot de passe.

2 Versions disponibles

Il existe un certain nombres de logiciels utilisant les connexions sécurisées.

Une version UNIX openssh : contient les partie serveurs et clientes de ssh

Une version Windows putty : contient une partie cliente pour Windows.

3 Principes de fonctionnement.

ssh est basé sur un mécanisme de clé publique clé privé. Ces deux clés sont .mathématiquement reliée. Typiquement la clé publique sert à chiffrer un message et la clé privé sert à le déchiffrer. Prenons un exemple.

Si je veux me connecter sur la machine distante java, je tape ssh java

J'obtiens alors le message suivant :

The authenticity of host 'java (157.159.15.20)' can't be established.

RSA key fingerprint is

d7 :69 :a7 :db :89 :71 :ff :13 :54 :ce :b4 :0d :55 :f6 :a9 :04.

Are you sure you want to continue connecting (yes/no)? yes

Comme je ne me suis jamais connecté sur la machine java je ne connais pas sa clé publique. Je vais donc répondre yes. J'obtiens alors les messages suivants :

Warning : Permanently added 'java,157.159.15.20' (RSA) to the list of known hosts.

toto@java.enseeiht.fr's password :

Je rentre alors mon mot de passe qui va être chiffré avec la clé publique de la machine java. La machine java va utilisé sa clé privée pour déchiffrer le mot de passe et ainsi va pouvoir vérier mon identité. On ne peux donc pas me .sniffer.

mon mot de passe.

Si je me Re connecte sur java j'obtiens immédiatement la ligne

toto@java.enseeiht.fr's password :

(2)

4 Ne plus rentrer son mot de passe

On peut aller encore plus loin et générer des clés d'identication personnelle. Le principe est de générer une clé associée à un texte et de propager la partie publique de la clé sur toutes les machines auxquelles vous souhaitez vous connecter. Voici comment il faut procéder si vous voulez vous connecter d'une machine (e.g., nommé rezo)sur la machine distante java.

4.1 Première étape

Sur la machine rezo il faut générer les clés d'authentication. Ces clés sont liées à un compte particulier. On va donc créer ces clés pour notre compte courant. Nous allons donc travailler avec le compte grocanar. Cela se fait en tapant la commande

ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/grocanar/.ssh/id_rsa) : Enter passphrase (empty for no passphrase) :

On doit donc alors entrer une .passphrase. qui va protéger la clé privée générée. Il faut que cette phrase ait au moins 20 caractères.

Même si il est possible de ne pas rentrer cette pass phrase cela n'est pas du tout conseillé. En effet c'est le seul moyen de protéger vos clés si quelqu'un arrive à accéder à votre compte.

Après avoir tapé deux fois cette phrase on obtient alors les messages suivants :

Enter same passphrase again :

Your identification has been saved in /home/grocanar/.ssh/id_rsa.

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

The key fingerprint is :

ea :9c :c8 :0f :89 :5a :12 :52 :81 :3e :c1 :21 :0e :fd :37 :07 grocanar@rezo.enseeiht.fr

On voit donc que le clé privée est sauvegardée dans le chier .ssh/id_rsa et la clé publique dans le chier .ssh/id_rsa.pub

4.2 Deuxième étape

Sur la machine java on va créer le fichier authorized_keys dans le répertoire .ssh et l'onva y rajouter la clé publique de la machine zero avec un simple éditeur de texte. On complique un peu la chose en utilisant un compte différent sur la machine java. en effet on va utiliser le compte toto

4.3 Étape nale : la connexion

(3)

On va donc maintenant se connecter à distance sur la machine javaen tapant ssh toto@java

On obtient alors le message suivant :

Enter passphrase for key '/home/grocanar/.ssh/id_rsa' :

On rentre alors la .pass phrase. que l'on a utilisé pour .protéger. la clé privée.

5 Ne plus rentrer la pass phrase.

5.1 Problématique

Dans la manipulation décrite ci dessus on a perdu en simplicité d'utilisation. En effet au lieu de rentrer son login et mot de passe, on dois donner son login et sa .pass phrase. Cette opération est bien plus longue que l'opération habituelle.

Il existe un moyen de s'affranchir de ces opérations qui peuvent s'avérer fastidieuse si on multiplie les connexions distantes : ssh-agent et sh-add

5.2 Principes

ssh-agent est un démon dont le rôle est :

. Intercepter la clé privée lorsque le programme ssh-add l'aura déchifré en utilisant la passphrase que vous allez rentrer une et une seule fois.

. La transmettre à tous programmes dont il sera l'ancêtre et qui le lui demandera. On verra que cette contrainte de .descendance UNIX. amène a certaines contraintes de mise en place.

Ainsi vous n'avez plus qu'a rentrer une seule fois votre passphrase à votre connexion initiale sur la machine et vous n'avez plus besoin de la rentrer lors de vos connexions sur d'autres machines.

5.3 Mise en place pratique

Dans cet exemple de mise en place je prends l'exemple d'une machine Linux utilisant une distribution RedHat 7.3 ou ultérieur avec un environnement Gnome.

Cela donne néanmoins une idée générale sur la manière de procéder.

Aller dans le menu principal symbolisé par un chapeau rouge.

Sélectionnez le menu Préférences => Préférences supplémentaires => Sessions

On obtient alors une fenêtre comme ci dessous (voir 1)

Il faut alors cliquer sur le menu Programme au démarrage.

On obtient alors la fenêtre suivante (voir 2)

Il faut alors rentrer la commande /usr/bin/ssh-add dans le champs Commande de démarrage

et ajuster la priorité (champs ordre) afin que cette commande ait la plus grande valeur. Une bonne valeur est 70. On obtient alors la fenêtre (voir3).

5.4 Utilisation

L'utilisation est alors très simple. A la connexion une fenêtre s'ouvre et demande

(4)

de rentrer la .passphrase. (voir 4). Une fois celle ci tapée la session se déroule normalement et on ne demandera plus la passphrase ni de mot de passe pour toutes les connexions sur les machines où l'on a propagé sa clé publique.

(5)

6 Le clientWindows

Putt peut être téléchargée à partir de

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Normalement, celui ci intégre plusieurs composants :

putty un émulateur terminal compatible ssh

puttygen Un générateur de clé

psftp un client ftp compatible ssh

pageant un équivalent à ssh-agent

7.1 Génération des clés

La génération des clés se fait avec puttygen.

On lance le logiciel et on obtient la fenêtre suivante (voir 5). On doit alors générer la clé en faisant bien attention de générer une clé SSH2(DSA) de 1024 bits. On clique alors sur Generate. On obtient alors la fenêtre suivante (voir 6).

(6)

. copier et coller dans le chier authorized_keys comme on a vu pour unix. En particulier notez bien que l'indication donné par putty est fausse. Le fichier à

modier est authorized_keys et non pas authorized_keys2

. Entrez une pass phrase pour protéger sa clé privée

. Sauvegardez ses clés publiques et privées.

6.2 Conguration de l'agent ssh

l'agent ssh est le logiciel pageant (PuTTY authentication agent). Quand on lance celui ci il va se nicher dans la barre des applications. Il faut alors aller cliquer dessus pour l'utiliser. On obtient alors la fenêtre suivante (voir 7)

On clique alors sur Add key et on ajoute la clé privé que l'on a précedement sauvegardé. On obtient alors la fenêtre suivante (voir 8)

(7)

Il faut donc alors rentrez la pass-phrase qui protège notre clé privée (voir 9).

6.3 Conguration de putty

On va maintenant passer à la conguration de putty. Il faut noter qu'il est préférable de lancer putty à partir de pageant.

On configure d'abord le protocole ssh utilisé (voir 10). Puis la clé utilisée (voir11 ) Voici alors la fenêtre de connexion de putty (voir 12).

On se connecte alors au serveur sans rentrer son mot de passe.

Ouf ! ! !

Il est préférable de sauvegarder la conguration que l'on va appeler comme le serveur sur lequel on se connecte ; On va donc sauvegarder tout cela dans la congfiuration java. (voir13)

(8)
(9)

-.4 Importation des clés

Il peut être intéréssant de ne pas multiplier le couple de clés privées publiques sur les différents systèmes sur lesquelles on va travailler. En particulier si on doit travailler sous windows et linux depuis la même machine il est un peu ridicule de générer deux couples de clés. On va donc montrer ici comment importer dans puttygen la clé privé précédement généré avec openssh.

On lance puttygen et on obtient la fenêtre de gestion de clé (voir 14)

Il suft alors de cliquer sur load. On charge alors le chier la clé privée générée par openssh que l'on aura préalablement transféré par un moyen adéquat et alors on obtient une clé privé tout a fait utilisable dans putty comme montrée précedement.

(10)

7 SSH le tunnel du pauvre

SSH est souvent appelé le .tunnel du pauvre. car il permet à un utilisateur donné de pallier pour la majorité des fonctionnalités à l'usage d'un VPN.

7.1 Principe

On part du principe que l'on a accèes a une connexion sur un serveur ssh accessible depuis sa machine et que l'on veut acceder à un service sur son réseau interne mais que le firewall l'interdit directement pour des raisons de sécurité.

On va pouvoir grace à ssh .contourner. cette interdiction mais en toute sécurité.

Ce n'est donc pas un contournement de la sécurité.

Voici ce qui se passe quand un portable sur internet crée un tunnel sécurisé depuis internet pour accéder à un serveur FTP sur l'intranet (voir15)

On procéde en deux étapes.

On crée un tunnel ssh entre le portable et le serveur ssh librement accessible.

On utilise un client FTP .classique. pour accéder au serveur FTP qui n'est pas directement accessible et on a tout le confort .comme si on y accédait directement.

(11)

8.2 Exemple sous linux

Nous imaginons qu'un utilisateur nomade a besoin d'acceder à un serveur qui se trouve dans l'ENSEEIHT, par exemple pollux depuis son portable qui s'appelle rezo. Evidement l'adminstrateur ne tolère pas à juste titre que des connexions passent à travers internet sur cette machine.

Par contre Il peut se connecter en ssh sur la machine java depuis n'importe quelle point de l'internet.

On va donc creer un tunnel ssh entre la machine rezo et java afin de pouvoir se connecter en telnet sur pollux. Evidement il faut que le réseau entre la machine java et pollux soit sécurisé.

pour que la démonstration soit valable.

On tape donc dans une fenêtre la commande suivante

ssh -N -L2023 :pollux.enseeiht.fr :23 toto@java.enseeiht.fr

Si on a scrupuleusement suivi les directives présentées dans les chapitres précédents on ne doit recevoir aucun message. Le tunnel est en place. On remarque que le port local du tunnel est 2023 . On ne peut en effet créer de tunnel avec un numéro de port inférieur à 1024 si on n'est pas super utilisateur.

On tape alors sur la machine locale

telnet 127.0.0.1 2023

Trying 127.0.0.1...

Connected to 127.0.0.1.

Escape character is '^]'.

SunOS 5.7 login : toto

Password : *********

Last login : Mon Nov 17 17 :16 :45 from java.enseeiht.

...

On a pu donc accéder au service telnet sur une machine qui n'était pas accessible

(12)

directement et en toute sécurité.

7.3 Exemple sous windows

Nous allons utiliser la conguration précédente sauvegardée sous le nom de java et y rajouter deux tunnels.

. Un tunnel pour faire du FTP sur la machine pollux

. Un tunnel pour faire du telnet sur la machine pollux Voici les différents étapes

7.3.1 Création des tunnels

On crée les tunnels de la façon suivante :

. Il faut choisir un port local : 2021

. On choisit la destination Unemachine.enseeiht.fr :21

. On coche local

. On clique sur Add

. On répete la même opération pour le tunnel pour telnet

. On sauvegarde la conguration dans le menu Session 7.3.2 Création du tunnel

Une fois conguré on va lancer pageant. On effectue les opérations decrites auparavant. On lance alors la session java.

Le tunnel est crée. On va pouvoir l'utiliser.

7.3.3 Telnet

On lance le telnet comme ci dessous (voir 18)

Comme on le voit on se connecte au port local du tunnel. En l'occurence c'est le port 2023.

7.3.4 ftp

on va utiliser le logiciel lezilla. Celui nécéssite quand même une certaine

conguration. On va donc lancer le gestionnaire de site sur de lezilla. On obtient la fenêtre suivante : (voir 20).

On constate qu'on rentre l'adresse de l'extrémité locale du tunnel ssh comme adresse de destination. En l'occurence localhost pour la nom de machine et 2021 pour le port. On clique alors sur le bouton Avancé. On obtient alors la fenêtre suivante : (voir 21). On indique qu'on veut utiliser le mode passif pour se connecter. Tout est alors prêt.

(13)

On lance lezilla en sélectionnant le site que l'on vient de sauvegarder et on obtient la fenêtre suivante : (voir 21)

Références

Documents relatifs

Voici comment cela fonctionne : la clé publique sert au chiffrement et peut être utilisée par tout le monde pour chiffrer, mais seule la clé privée correspondante sera

Sur votre ordinateur et non dans le bash, rendez-vous dans le dossier dans lequel vous avez cloné le SDK.. Si vous n'avez pas modifié ce dossier avant d'exécuter la commande git,

Le Canton assure de son côté qu’il se pliera en quatre pour les pro- priétaires et qu’il les orientera dans le labyrinthe des subventions fédé- rales et cantonales….. Et

Upon receipt of KEXINIT packet, both client and server Calculate intersection of supported/allowed ciphers, etc Run selected key exchange algorithm. Usually Diffie Hellman D-H

Cela consiste en la génération d'un couple de clé privée/clé publique, de la même manière que pour l'authentification par échange de clés et en la diffusion de votre clé

 Par clés publiques : Si l'authentification par clé est choisie par le client, le serveur va créer un challenge et donner un accès au client si ce dernier parvient à déchiffrer

/etc/ssh/ssh_host_rsa_key.pub: ASCII text, with very long lines root@serveur:~# cat /etc/ssh/ssh_host_rsa_key. ---BEGIN RSA

Pierre dit à Paul: « j'ai deux fois l'âge que vous aviez quand j'avais l'âge que vous avez. Quand vous aurez l'âge que j'ai, la somme de nos deux âges sera égale à