Tunnels SSH : Configuration et cas d'utilisation pratiques ⋆ ALexHost SRL

Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!.

Utilisez le code à la caisse :

Skills
10.12.2024

Tunnels SSH : Configuration et cas d’utilisation pratiques

Secure Shell (SSH) est un protocole très répandu qui permet une communication sécurisée et cryptée entre ordinateurs. Au-delà de son utilisation traditionnelle pour se connecter à des systèmes distants, SSH offre également de puissantes capacités de tunneling, qui vous permettent de transférer en toute sécurité le trafic entre les réseaux et les systèmes. Cette technique est connue sous le nom de tunnel SSH et peut s’avérer précieuse pour divers cas d’utilisation pratiques, tels que l’accès à des services restreints ou le contournement de pare-feux.

Dans cet article, nous verrons comment fonctionnent les tunnels SSH, comment les configurer et comment les utiliser pour différents scénarios dans des applications réelles.

Qu’est-ce qu’un tunnel SSH ?

Un tunnel SSH est une méthode de transmission de données arbitraires via une connexion SSH cryptée entre deux systèmes. Essentiellement, il vous permet d’acheminer en toute sécurité le trafic réseau d’une machine à l’autre en créant un tunnel à travers lequel les données voyagent.

Les tunnels SSH peuvent être utilisés de trois manières principales :

  1. Transfert de port local
  2. Redirection de port à distance
  3. Redirection de port dynamique

Chacune de ces méthodes a ses propres cas d’utilisation, et nous les aborderons en détail ci-dessous.

1. Transfert de port local

Le transfert de port local est la forme la plus couramment utilisée de tunnel SSH. Elle permet de transférer le trafic d’un port local de votre machine vers un service distant via une connexion SSH.

Fonctionnement de la redirection de port local

Lorsque vous créez un tunnel SSH local, le trafic envoyé vers un port spécifique de votre machine locale est transféré vers le serveur SSH, qui l’envoie ensuite vers la destination souhaitée (par exemple, une base de données ou un serveur web).

Exemple de cas d’utilisation : Accès à une base de données distante

Imaginez que vous ayez besoin d’accéder à une base de données sur un serveur distant, mais que le port de la base de données soit bloqué par un pare-feu. Au lieu d’ouvrir le port publiquement, vous pouvez utiliser le transfert de port local pour accéder à la base de données en toute sécurité.

Commande pour le transfert de port local
ssh -L 5432:localhost:5432 user@remote-server

Dans cet exemple :

  • -L 5432:localhost:5432 : Spécifie le transfert de port local. Le premier 5432 est le port de votre machine locale, localhost:5432 fait référence à la base de données distante.
  • user@remote-server : Se connecte au serveur SSH distant.

Vous pouvez désormais accéder à la base de données distante depuis votre machine locale en vous connectant à localhost:5432.

2. Transfert de port à distance

Le transfert de port à distance vous permet de transférer le trafic d’un serveur distant vers une machine locale. Cette fonction est utile lorsque vous souhaitez exposer un service fonctionnant sur votre machine locale à un serveur distant ou à ses utilisateurs.

Comment fonctionne la redirection de port à distance ?

Avec la redirection de port à distance, tout le trafic qui atteint un port spécifié sur la machine distante sera redirigé vers un port de votre machine locale. Cette configuration est souvent utilisée lorsque vous devez exposer au serveur distant un service qui n’est accessible que sur votre réseau local.

Exemple de cas d’utilisation : exposition d’une application Web locale à un serveur distant

Imaginez que vous développez une application web localement sur votre machine et que vous voulez la montrer à un collègue sur un serveur distant. Au lieu de déployer l’application, vous pouvez utiliser la redirection de port à distance pour permettre l’accès à votre application locale.

Commande pour le transfert de port à distance
ssh -R 8080:localhost:3000 user@remote-server

Dans cet exemple :

  • -R 8080:localhost:3000 : spécifie le transfert de port à distance. Le port 8080 de la machine distante sera transféré vers localhost:3000 sur votre machine locale, où l’application web est exécutée.
  • user@remote-server : Se connecte au serveur SSH distant.

Désormais, n’importe qui sur le serveur distant peut accéder à votre application web via http://remote-server:8080.

3. Redirection dynamique des ports

La redirection dynamique de port transforme votre client SSH en serveur proxy SOCKS, ce qui vous permet d’acheminer le trafic de votre machine locale vers n’importe quelle destination via le tunnel SSH. Cette fonction est particulièrement utile lorsque vous souhaitez faire passer l’ensemble du trafic (comme la navigation sur le web) par une connexion sécurisée.

Fonctionnement du transfert dynamique de port

Avec la redirection dynamique de port, le client SSH écoute sur un port local et redirige tout le trafic sortant vers le serveur SSH. Cette configuration vous permet d’utiliser le serveur SSH comme proxy pour votre connexion internet, en contournant les pare-feu et en sécurisant le trafic.

Exemple de cas d’utilisation : contourner les restrictions du réseau

Imaginez que vous êtes sur un réseau Wi-Fi public et que certains sites web ou services sont bloqués. Vous pouvez utiliser la redirection dynamique de port pour contourner ces restrictions et accéder à l’internet en toute sécurité via votre serveur SSH.

Commande pour la redirection dynamique de port
ssh -D 8080 user@remote-server

Dans cet exemple :

  • -D 8080 : Spécifie la redirection dynamique des ports. Votre machine locale agira comme un proxy SOCKS sur le port 8080.
  • user@remote-server : Se connecte au serveur SSH distant.

Une fois le tunnel activé, vous pouvez configurer votre navigateur ou toute autre application pour qu’elle utilise localhost:8080 comme proxy SOCKS, ce qui vous permet d’acheminer en toute sécurité l’ensemble du trafic via le serveur distant.

Configuration des tunnels SSH à l’aide d’un fichier de configuration

Si vous utilisez fréquemment des tunnels SSH, vous pouvez simplifier le processus en créant un fichier de configuration SSH. Le fichier de configuration vous permet de définir des raccourcis pour vos connexions SSH et vos paramètres de transfert de port, ce qui facilite la configuration des tunnels sans avoir à saisir de longues commandes à chaque fois.

Exemple de fichier de configuration SSH

Ajoutez la configuration suivante à ~/.ssh/config :

Host remote-db HostName remote-server User user LocalForward 5432 localhost:5432

Vous pouvez maintenant configurer une redirection de port local vers la base de données distante à l’aide de just :

ssh remote-db

Exemples pratiques de tunnel SSH

1. Sécuriser le trafic Web grâce à un proxy SOCKS

Si vous travaillez dans un environnement restreint et que vous devez accéder à des sites web bloqués, vous pouvez configurer la redirection dynamique de port pour acheminer l’ensemble de votre trafic via un serveur SSH sécurisé.

ssh -D 9090 user@ssh-server

Configurez ensuite votre navigateur pour qu’il utilise localhost:9090 comme proxy SOCKS.

2. Accès à un service interne distant

Supposons que vous ayez besoin d’accéder à un service interne qui n’est disponible que sur un réseau privé distant. Vous pouvez utiliser la redirection de port local pour vous connecter en toute sécurité à ce service à partir de votre machine locale.

ssh -L 8080:service-interne:80 user@remote-server

Cela vous permettra d’accéder au service interne à l’adresse http://localhost:8080.

3. Exposer un serveur de développement local

Si vous souhaitez partager un serveur de développement local avec des collègues sur un serveur distant, utilisez la redirection de port à distance :

ssh -R 4000:localhost:3000 user@remote-server

Les collègues du serveur distant peuvent désormais accéder à votre application locale à l’adresse http://remote-server:4000.

Considérations relatives à la sécurité

Bien que les tunnels SSH offrent des canaux de communication sécurisés et cryptés, il est important de respecter les meilleures pratiques en matière de sécurité :

  • Utiliser une authentification forte : Utilisez toujours des mots de passe forts ou une authentification basée sur une clé SSH pour sécuriser votre serveur SSH.
  • Limitez l’accès aux ports transférés : Limitez l’accès aux ports transférés à l’aide de règles de pare-feu ou de configurations SSH afin d’empêcher tout accès non autorisé.
  • Surveillez les connexions SSH : Surveillez régulièrement les journaux de connexion SSH afin de détecter toute activité inhabituelle ou tentative d’accès non autorisé.

Conclusion

Le tunnel SSH est un outil polyvalent qui offre des moyens sécurisés de transférer le trafic et d’accéder à des services à travers les réseaux. Que vous cherchiez à accéder à des services restreints, à contourner des pare-feu ou à exposer des ressources internes en toute sécurité, les tunnels SSH constituent une solution puissante et flexible. En maîtrisant le transfert de port local, distant et dynamique, vous pouvez renforcer la sécurité de votre réseau et étendre votre capacité à accéder à des systèmes distants et à les gérer efficacement.

Testez vos compétences sur tous nos services d'hébergement et bénéficiez de 15% de réduction!.

Utilisez le code à la caisse :

Skills