Recherche de site Web

Comment créer un tunnel SSH ou une redirection de port sous Linux


Le tunneling SSH (également appelé redirection de port SSH) consiste simplement à acheminer le trafic du réseau local via SSH vers des hôtes distants. Cela implique que toutes vos connexions sont sécurisées par cryptage. Il fournit un moyen simple de configurer un VPN (Virtual Private Network) de base, utile pour se connecter à des réseaux privés sur des réseaux publics non sécurisés comme Internet.

Vous pouvez également être utilisé pour exposer des serveurs locaux derrière des NAT et des pare-feu à Internet via des tunnels sécurisés, comme implémenté dans ngrok.

Les sessions SSH permettent le tunneling des connexions réseau par défaut et il existe trois types de redirection de port SSH : local, à distance et dynamique redirection de port.

Dans cet article, nous montrerons comment configurer rapidement et facilement le tunneling SSH ou les différents types de redirection de port sous Linux.

Environnement de test :

Pour les besoins de cet article, nous utilisons la configuration suivante :

  1. Hôte local : 192.168.43.31
  2. Hôte distant : VPS Linode CentOS 7 avec le nom d'hôte server1.example.com.

Habituellement, vous pouvez vous connecter en toute sécurité à un serveur distant à l'aide de SSH comme suit. Dans cet exemple, j'ai configuré une connexion SSH sans mot de passe entre mes hôtes locaux et distants, de sorte qu'il n'a pas demandé le mot de passe de l'utilisateur administrateur.

ssh [email   

Redirection de port SSH local

Ce type de redirection de port vous permet de vous connecter depuis votre ordinateur local à un serveur distant. En supposant que vous soyez derrière un pare-feu restrictif ou empêché par un pare-feu sortant d'accéder à une application exécutée sur le port 3000 de votre serveur distant.

Vous pouvez transférer un port local (par exemple 8080) que vous pouvez ensuite utiliser pour accéder à l'application localement comme suit. L'indicateur -L définit le port transmis à l'hôte distant et au port distant.

ssh [email  -L 8080:server1.example.com:3000

Ajouter l'indicateur -N signifie ne pas exécuter de commande à distance, vous n'obtiendrez pas de shell dans ce cas.

ssh -N [email  -L 8080:server1.example.com:3000

Le commutateur -f demande à ssh de s'exécuter en arrière-plan.

ssh -f -N [email  -L 8080:server1.example.com:3000

Maintenant, sur votre machine locale, ouvrez un navigateur, au lieu d'accéder à l'application distante en utilisant l'adresse server1.example.com:3000, vous pouvez simplement utiliser localhost:8080 ou 192.168.43.31:8080, comme indiqué dans la capture d'écran ci-dessous.

Redirection de port SSH à distance

La redirection de port distant vous permet de vous connecter depuis votre machine distante à l'ordinateur local. Par défaut, SSH n'autorise pas la redirection de port distant. Vous pouvez l'activer à l'aide de la directive GatewayPorts dans votre fichier de configuration principal SSHD /etc/ssh/sshd_config sur l'hôte distant.

Ouvrez le fichier pour le modifier à l'aide de votre éditeur de ligne de commande préféré.

sudo vim /etc/ssh/sshd_config 

Recherchez la directive requise, décommentez-la et définissez sa valeur sur oui, comme indiqué dans la capture d'écran.

GatewayPorts yes

Enregistrez les modifications et quittez. Ensuite, vous devez redémarrer sshd pour appliquer la récente modification que vous avez apportée.

sudo systemctl restart sshd
OR
sudo service sshd restart 

Exécutez ensuite la commande suivante pour transférer le port 5000 de la machine distante vers le port 3000 de la machine locale.

ssh -f -N [email  -R 5000:localhost:3000

Une fois que vous avez compris cette méthode de tunneling, vous pouvez facilement et en toute sécurité exposer un serveur de développement local, en particulier derrière des NAT et des pare-feu, à Internet via des tunnels sécurisés. Des tunnels tels que Ngrok, pagekite, localtunnel et bien d'autres fonctionnent de la même manière.

Redirection de port SSH dynamique

Il s'agit du troisième type de redirection de port. Contrairement à la redirection de port locale et à distance qui permet la communication avec un seul port, elle rend possible une gamme complète de communications TCP sur une gamme de ports. La redirection de port dynamique configure votre machine en tant que serveur proxy SOCKS qui écoute sur le port 1080, par défaut.

Pour commencer, SOCKS est un protocole Internet qui définit comment un client peut se connecter à un serveur via un serveur proxy (SSH dans ce cas). Vous pouvez activer la redirection de port dynamique à l'aide de l'option -D.

La commande suivante démarrera un proxy SOCKS sur le port 1080 vous permettant de vous connecter à l'hôte distant.

ssh -f -N -D 1080 [email 

Désormais, vous pouvez faire en sorte que les applications de votre machine utilisent ce serveur proxy SSH en modifiant leurs paramètres et en les configurant pour l'utiliser, pour vous connecter à votre serveur distant. Notez que le proxy SOCKS cessera de fonctionner après la fermeture de votre session SSH.

Lire aussi : 5 façons de maintenir les sessions SSH à distance en cours d'exécution après la fermeture de SSH

Résumé

Dans cet article, nous avons expliqué les différents types de redirection de port d'une machine à une autre, pour tunneliser le trafic via la connexion SSH sécurisée. C’est l’une des très nombreuses utilisations de SSH. Vous pouvez ajouter votre voix à ce guide via le formulaire de commentaires ci-dessous.

Attention : La redirection de port SSH présente des inconvénients considérables, elle peut être utilisée à mauvais escient : elle peut être utilisée pour contourner les programmes de surveillance du réseau et de filtrage du trafic (ou les pare-feu). Les attaquants peuvent l'utiliser pour des activités malveillantes. Dans notre prochain article, nous montrerons comment désactiver la redirection de port local SSH. Rester connecté!