Inverser le sens d’une connexion TCP IP via SSH Port Foward

Inverser une connexion TCP IP permet notamment d’imaginer des architectures de connexion différentes entre une DMZ et un réseau interne.

Un exemple avec un site web publique qui aurais besoin de se connecter ponctuellement à un backoffice sur un réseau interne (ERP par exemple).

DMZ > Firewall > Serveur

Avec l’inversion; il est possible de s’abstenir d’ouvrir un port entrant depuis la DMZ vers le réseau interne.

DMZ > Relais < Firewall < Serveur

En effet, au lieu de se connecter directement au serveur cible depuis la DMZ; on va passer par un serveur relais. Ce serveur relais diffusera le service du réseau interne via un tunnel SSH sortant.

Pour parfaire la technique; il est à noter que le pont SSH peut évidemment très facilement n’être ouvert que pendant une synchronisation. Dans cette éventualité; il s’agit de prévoir l’absence du service du côté client (try/retry). Permettant de lancer la synchronisation dès disponibilité du service (initiée depuis le réseau interne).

Mise en œuvre avec SSH Port Fowarding

Configuration du serveur relais

En guise de machine relais; un simple Linux avec serveur SSH suffit.

Ajouter (ou modifier) le paramètre suivant dans le fichier /etc/ssh/sshd_config

GatewayPorts yes

Penser à relancer le service sshd après cette modification.

Cela permet d’autoriser l’accès depuis l’extérieur du serveur relais aux services partagés via le port fowarding.

Configuration du SSH Port Fowarding

Sur la machine qui porte le service à diffuser (ou un autre ayant accès à la ressource) :

ssh -R [Futur port du service sur le serveur relais]:[IP interne du service]:[Port interne du service] [utilisateur serveur relais]@[IP du serveur relais]

Et voilà le tunnel est ouverte et le restera le temps de la connexion SSH.

Ouverture

Il est également possible d’utiliser cette technique pour contourner des restrictions systèmes – attention: je ne peux que vous encourager à ne l’utiliser que légitimement ! -.

De façon classique; pour diffuser un service sur internet, il suffit de procéder à une redirection de port sur le routeur de votre opérateur.

Client > Routeur > Serveur

Si vous n’avez pas accès à l’administration du routeur; il vous reste possible de mettre en place la même logique décrite ci-dessus pour publier votre service.

Client > Relais < Routeur < Serveur

Sources

Documentation : SSH port forwarding – Example, command, server config