GNU/Linux >> Tutoriels Linux >  >> Linux

Tunnellisation et proxy SSH

Présentation :

SSH, également connu sous le nom de Secure Shell ou Secure Socket Shell, est un protocole réseau qui offre aux utilisateurs, en particulier aux administrateurs système, un moyen sécurisé d'accéder à un ordinateur via un réseau non sécurisé.

Secure Shell fournit une authentification forte par mot de passe et par clé publique, ainsi que des communications de données cryptées entre deux ordinateurs se connectant sur un réseau ouvert, tel qu'Internet.

Le tunneling SSH est une méthode de transport de données réseau arbitraires via une connexion SSH cryptée. Il peut être utilisé pour de nombreuses raisons, principalement pour ajouter un chiffrement aux applications héritées, pour être utilisé comme réseau privé virtuel et pour accéder aux services intranet à travers les pare-feu. Il fournit également un moyen de sécuriser le trafic de données d'une application donnée à l'aide de la redirection de port, en tunnelant essentiellement n'importe quel port TCP/IP sur SSH. Cela signifie que le trafic de données d'application est dirigé vers une connexion SSH cryptée afin qu'il ne puisse pas être écouté ou intercepté pendant son transit.

Prérequis :

  1. Serveur SSH à l'écoute des connexions SSH, (X11Forwarding doit être activé, vous pouvez le vérifier dans le fichier de configuration sshd)
  2. Client SSH pour transférer le trafic d'un port d'écoute local, via le serveur SSH, vers le serveur d'application
  3. Serveur de destination offrant des services (http, vnc, etc.)

Le serveur SSH et le serveur de destination peuvent être sur la même machine ou sur des machines différentes accessibles via le réseau. Le diagramme ci-dessous illustre le serveur SSH et les serveurs d'applications sont sur une machine différente et connectés sur le réseau et la machine cliente accède au serveur SSH via Internet.

Créons une configuration dans laquelle le client souhaite se connecter à un service qui n'utilise pas le chiffrement de manière native, mais ne souhaite pas que le trafic soit envoyé en clair via Internet. L'environnement pour ce scénario est comme ci-dessous.

Serveur SSH :SSH écoute sur le port 22 à l'adresse IP 192.168.1.1

Serveur de destination :le service VNC écoute sur le port 5900 à l'adresse IP 192.168.1.2

Machine client :clients SSH et VNC installés

Créer un tunnel avec PuTTY :

  1. Ouvrir l'interface utilisateur du client PuTTY
  2. Dans la fenêtre Session, sous "Options de base pour votre session PuTTY", saisissez l'adresse IP et le port d'écoute du serveur SSH, comme indiqué dans l'image ci-dessous :

3. Dans le volet de gauche, sélectionnez Connexion->SSH->Tunnel

4. Sous "Options contrôlant le transfert de port SSH", entrez les paramètres suivants.

5. Port source :choisissez un port arbitraire, non utilisé sur votre client; l'exemple utilise 1590.

6. Destination :adresse IP et port d'écoute du serveur de destination, 192.168.1.2:5900.

7. Laissez les boutons radio "Local" et "Auto" sélectionnés.

8. Cliquez sur "Ajouter" pour enregistrer ces paramètres.

9. Cliquez sur "Ouvrir" pour créer le tunnel SSH. Entrez votre nom d'utilisateur et votre mot de passe pour le serveur SSH lorsque vous y êtes invité.

Création d'un tunnel SSH à l'aide d'OPENSSH :

Le tunnel SSH peut être créé à l'aide de la commande ci-dessous à l'aide du client OPENSSH.

ssh -L 1590:192.168.1.2:5900 192.168.1.1

Ici -L 1590 indique le port local

192.168.1.2:5900 indique l'IP et le port du serveur de destination

192.168.1.1 Indique l'adresse IP du serveur SSH

Après avoir entré la commande, connectez-vous en utilisant vos informations d'identification au serveur SSH.

Connexion au service VNC à l'aide du tunnel SSH :

Après une connexion réussie au serveur SSH, configurez votre client VNC pour vous connecter au serveur de destination à l'aide du port local.

Utilisez l'adresse de bouclage locale 127.0.0.1 et le port 1590

L'exemple a montré le tunneling pour le port VNC, les mêmes paramètres peuvent être utilisés pour accéder à n'importe quel service en modifiant les ports et les adresses IP.

Tunneling inversé SSH :

Le tunneling inverse est en quelque sorte le même, mais dans ce cas, le serveur de destination peut utiliser le tunnel pour accéder aux services hébergés sur le réseau source ou sur la machine elle-même.

Prenons un exemple,

Supposons que vous ayez un serveur sur un réseau distant derrière un pare-feu et que seul SSH (port 22) soit ouvert du réseau distant vers votre réseau, mais que vous souhaitiez accéder à un service http s'exécutant sur le port 80 hébergé sur votre machine Linux.

Pour des scénarios comme celui-ci, le tunneling inversé est pratique, voyons ci-dessous comment le faire en toute sécurité et facilement.

Utilisez la commande ci-dessous sur votre Linux Box où votre service http est hébergé…

ssh -R 180:localhost:80 [email protected]

-R 180:localhost est le port distant et l'IP/hostname (sera utilisé par le serveur distant pour accéder au service http)

Et [email protected] est l'adresse IP et le nom d'utilisateur du serveur distant à partir duquel vous souhaitez accéder à votre service Web

Après avoir entré la commande login avec les informations d'identification,

Vous pouvez maintenant accéder à votre serveur Web à partir du serveur distant.

Il existe de nombreux scénarios dans lesquels le tunneling SSH et le tunneling inversé peuvent également être utilisés pour accéder à l'inaccessible 🙂 avec la facilité et la sécurité de ssh derrière.


Linux
  1. Comment configurer le tunnel SSH

  2. Comment télécharger et charger des fichiers via SSH

  3. Comment installer et configurer le serveur sftp dans Ubuntu 20.04

  4. Ssh - Que font exactement les options `serveraliveinterval` et `clientaliveinterval` dans Sshd_config?

  5. Autorisations SSH et répertoire personnel ?

ScanSSH - Serveur SSH rapide et scanner proxy ouvert

Serveur SSH

Comment installer et activer le serveur SSH sur Debian 10

Comment générer et utiliser une clé SSH avec PuTTY

Comment SSH au serveur via Linux

Problèmes de serveur courants et solutions