next up previous contents Next: DNS et résolution de Up: TCP et UDP. Previous: Le fichier /etc/services.   Table des matières  

27.5 Cryptage et redirection TCP.

Le flux de données TCP peut être aisément reconstruit par toute personne qui écoute sur le support physique (le câble, par exemple) et qui arrive à visualiser votre trafic réseau. En fait, TCP est connu pour être un service peu sûr en soi. Le but est donc de chiffrer (ou crypter) les données de manière à ce que tout message capté par un tiers soit illisible. Quelles doivent être les propriétés d'un flux chiffré?

  1. Il devrait garantir que le client se connectant effectue vraiment cette opération sur le serveur en question. En d'autres termes, il devrait authentifier le serveur pour assurer que ce dernier n'est pas un cheval de Troie (ou Trojan, en anglais).
  2. Il devrait éviter que des parties des données soient lisibles par un pirate. Toutes données lues par une tierce personne devraient apparaître sous forme chiffrée.
  3. Il devrait être impossible pour quelqu'un qui a capté le message de modifier le trafic des données sans se faire repérer.
Deux paquets permettent de rencontrer aisément ces objectifs. Supposons que nous voulions utiliser POP3 (Post Office Protocol permet à la station de travail d'un utilisateur d'accéder au courrier depuis un serveur de courrier) pour rechercher du courriel provenant d'une autre machine. Premièrement, nous pouvons vérifier que POP3 est en cours d'exécution en se connectant au serveur POP3 lui-même. Lancez un telnet sur le port 110 (qui est le service POP3):

telnet localhost 110 
Connected to localhost.localdomain. 
Escape character is '^]' 
+OK POP3 localhost.localdomain v7.64 server ready 
QUIT 
+OK Sayonara 
connexion closed by foreign host


Pour rencontrer la première contrainte, nous allons utiliser le paquet OpenSSH. Nous pouvons initialiser et exécuter le démon sshd (Secure Shell daemon) s'il ne l'est pas déjà. Les commandes suivantes peuvent être appliquées au serveur POP3:

ssh-keygen -b 1024 -f /etc/ssh/ssh_host_key -q -N '' 
ssh-keygen -d -f /etc/ssh/ssh_host_dsa_key -q -N '' 
sshd 


Pour créer un canal chiffré comme indiqué à la figure 10, nous utiliserons le programme de connexion client ssh d'une manière un peu spéciale. Nous souhaitons le faire écouter sur un port TCP particulier et ensuite, crypter puis rediriger tout le trafic vers le port TCP distant du serveur.


Figure 10:
Redirection entre deux machines.
Image frwrdbtwn


Cette technique est connue sous le nom de redirection de port chiffré (encrypted port forwarding). Sur la machine cliente, nous sélectionnons un port quelconque mais inutilisé. Dans le cas présent, il s'agit de 12345:

ssh -C -c arcfour -N -n -2 -L 12345:<pop3-server.doma.in>:110 \                                <pop3-server.doma.in> -l <user> -v


<user> est le nom d'un compte shell courant sur le serveur POP3. Finalement, toujours sur la machine cliente, nous effectuons:

telnet localhost 12345 
Connected to localhost.localdomain 
Escape character is '^]' 
+OK POP3 localhost.localdomain v7.64 server ready 
QUIT 
+OK Sayonara 
connexion closed by foreign host


Nous obtenons un résultat identique à celui qui précède. En effet, en ce qui concerne le serveur, la connexion POP3 provient d'un client sur la machine serveur elle-même (qui ne sait pas que cette connexion a pour origine sshd) qui est en train d'effectuer une redirection à partit d'un client ssh. L'option -C compresse toutes les données (ce qui est utile dans le cas des connexions à bas débit). Notez également qu'en général, vous ne devriez utiliser aucun chiffrement avec arcfour et le protocole SSH 2 (option -2).

La seconde méthode repose sur le programme forward du paquet mirrordir. Ce programme possède un protocole de chiffrement unique qui agit similairement à OpenSSH bien qu'il n'ait pas été testé de manière approfondie par la communauté (il ne devrait donc être utilisé qu'avec précaution). Sur une machine agissant comme serveur, tapez simplement secure-mcserv. Sur la machine cliente:

forward <user>@<pop3-server.doma.in> <pop3-server.dom.in>:110 \

                                         12345 -secure -z -K 1024



et ensuite lancez telnet pour effectuer un test comme précédemment.

Avec la redirection, vous pouvez utiliser tout client POP3 comme vous le feriez normalement. Cependant, veillez à attribuer localhost à votre machine hôte et 12345 comme adresse de port pour votre client POP3.

Cet exemple peut, naturellement, être transposé à presque tous les services. Avec certains de ceux-ci qui effectuent des opérations spéciales comme la création de connexion de retour TCP sur un client (c'est le cas avec FTP, par exemple), cela ne fonctionnera pas.


next up previous contents Next: DNS et résolution de Up: TCP et UDP. Previous: Le fichier /etc/services.   Table des matières  
1-01-2006