Exemple : sécurisation du traffic grâce à un tunnel SSH

Une solution pour palier à ce problème, est de mettre en place un tunnel SSH entre le serveur FTP, et le client. L'option -L de ssh permet d'encapsuler les connexions effectuées sur les sockets sur un port donné dans le flux SSH, en direction d'un autre port sur la machine distante.

Le schéma suivant montre comment s'établie une connexion FTP sécurisée avec SSH entre une machine du LAN et un serveur FTP distant. Pour cet exemple pratique, nous disposons de deux machines sur le LAN, ``cerise'', sur laquelle on désire lancer le client FTP et ``groseille'' sur laquelle nous allons lancer un client ssh configuré pour rediriger les connexions arrivants sur le port 2100 vers ``abricot'' (encapsulées dans le flux SSH). Cette dernière héberge un serveur FTP séparé de notre LAN par Internet. Notons que nous devons disposer d'un compte utilisateur sur chacune des machines. Néanmoins, il n'est pas nécessaire d'avoir un accès super utilisateur sur les machines, sauf dans le cas ou l'on désire travailler avec des ports TCP supérieurs à 1000.

\includegraphics[width=120mm]{images/connexion_ftp_sur_un_tunnel_ssh.eps}

La commande qui permet d'établir la connexion SSH entre ``groseille'' et ``abricot'' est la suivante :

[18:37:13][jam@groseille] ~\$ ssh -g -L 2100:abricot:21 abricot -N
Password:

L'option -N permet de pas donner de prompt après la connexion à SSH.
L'option -g permet d'autoriser les connexion d'autres machines, différentes de celle qui établie la connexion, à utiliser le canal sécurisé.
Enfin, l'option -L indique que le données arrivant sur le port 2100 de la machine locale doivent être envoyées sur le port 21 d'abricot en passant par la connexion SSH.
Dès lors, les données reçues sur le port 2100 de la machine sur laquelle est lancée la commande SSH (client) seront intégrées dans le flux sécurisé, puis débalées et déchiffrées à l'autre bout sur la machine qui héberge le service SSH.

Désormais, le fait de se connecter à groseille sur le port 2100 va devenir équivalent pour l'utilisateur à se connecter au serveur FTP d'abricot, mis à part le fait que les données sont cryptées.

[18:37:49][jam@cerise] ~\$ ftp groseille 2100
Connected to 127.0.0.1.
220 ProFTPD 1.2.9 Server (Debian) [abricot]
Name (127.0.0.1:jam):

voici le flux qu'on l'on peut maintenant sniffer sur le réseau :

interface: eth1 (192.168.0.0/255.255.255.0)
#
T 192.168.0.17:33387 -> 217.167.120.138:22 [AP]
  .&.j;...`.zR.*.)}....?.6~.....kRmL..&.!;AL....LK
#
T 217.167.120.138:22 -> 192.168.0.17:33387 [AP]
  .<T.ye..-.v.Q.Q.!...:Z...r........1.<+3...j.=...6>P....G....j~.P_a....5.F.1
  ....<
##
T 192.168.0.17:33387 -> 217.167.120.138:22 [AP]
  .3..L........n.pI6SvGx........:...].......J..iT...X.=v.>n....-.]
#
T 217.167.120.138:22 -> 192.168.0.17:33387 [AP]
  X..r..B..1Y....P4..q"......]..GK\.....ldS...D...3.6...!..bu....}
##
T 192.168.0.17:33387 -> 217.167.120.138:22 [AP]
  ...d!.J..K.W..S.F..$"T...}P..b.H.....mD!..<..?..
#
T 217.167.120.138:22 -> 192.168.0.17:33387 [AP]
  vq...|...,.....g....$.J\..9dLr..!..v..#.t...Ui.}......m=..[....0
#

Donc les trames n'apparaissent plus en clair sur le réseau contrairement à ce que nous avions vu lors d'une connexion FTP non sécurisée.

root 2004-05-04