Un tunnel SSH peut être utilisé pour sécuriser la communication entre un client et un serveur qui ne peut être sécurisée autrement ; par exemple, lorsque tout ou partie du code source de l'application n'est pas disponible ou qu'il est jugé trop coûteux de le modifier pour ajouter une communication cryptée.
D'après les questions que j'ai pu voir ces derniers mois, le processus de configuration et d'utilisation d'un tunnel SSH n'est pas bien compris. Je vais tenter de l'expliquer ci-dessous.
Permettez-moi tout d'abord de décrire la méthode non sécurisée existante : certaines applications sur un poste de travail se connectent à un service fonctionnant sur VOS et écoutant un certain port, appelons-le 12345. Il s'agit de la ligne verte de la figure 1 qui va du poste de travail à VOS. Les données envoyées via cette connexion ne sont pas cryptées, de sorte que toute personne ayant accès à un réseau traversé par la connexion peut potentiellement capturer et lire les données.
Pour sécuriser cette communication, la première chose à configurer est la connexion SSH qui servira de tunnel. Celle-ci relie le poste de travail au port sur lequel le service SSH exécuté sur VOS est à l'écoute, le port 22 étant le port par défaut (ligne rouge dans la figure 1). Le client SSH sur le poste de travail doit être configuré de manière à ne pas demander au service SSH sur VOS de configurer un pseudo-terminal, sinon vous vous retrouverez avec une session de connexion et non un tunnel. La configuration d'un tunnel SSH n'empêchera pas quelqu'un de capturer les données, mais celles-ci seront cryptées.
Le client SSH sur le poste de travail doit également être configuré avec deux informations supplémentaires. Tout d'abord, le port sur le poste de travail qui servira d'entrée au tunnel pour le client de l'application, appelons-le port 24680, mais n'importe quel port inutilisé peut être utilisé. Ensuite, l'adresse IP et le port auxquels le service SSH sur VOS se connectera lorsqu'une connexion sera établie via le tunnel. Dans notre exemple, l'adresse IP serait 127.0.0.1 et le port serait 12345. La configuration exacte dépendra du client.
L'application cliente exécutée sur le poste de travail doit désormais être configurée pour se connecter à l'hôte local du poste de travail (127.0.0.1) et au port d'entrée du tunnel, 24680. Aucune modification n'est apportée au service d'application exécuté sur VOS, qui doit toujours être en cours d'exécution et à l'écoute sur le port 12345. Les étapes sont les suivantes :
1) Démarrez ou vérifiez que le service d'application est en cours d'exécution sur VOS
2) Démarrez ou vérifiez que le service SSH (sshd) est en cours d'exécution sur VOS
3) Démarrez le client SSH sur le poste de travail et configurez la connexion tunnel (ligne rouge)
4) Démarrez le client d'application sur le poste de travail et connectez-le au port d'entrée du tunnel SSH (ligne bleue)
5) Le processus sshd sur VOS établit automatiquement une connexion avec le service d'application fonctionnant sur VOS (ligne orange)
