Page d'accueil » comment » Comment utiliser le tunneling SSH pour accéder à des serveurs restreints et parcourir en toute sécurité

    Comment utiliser le tunneling SSH pour accéder à des serveurs restreints et parcourir en toute sécurité

    Un client SSH se connecte à un serveur Secure Shell, ce qui vous permet d'exécuter des commandes de terminal comme si vous étiez assis devant un autre ordinateur. Mais un client SSH vous permet également de «tunneler» un port entre votre système local et un serveur SSH distant..

    Il existe trois types différents de tunneling SSH, et ils sont tous utilisés à des fins différentes. Chacune implique l'utilisation d'un serveur SSH pour rediriger le trafic d'un port réseau à un autre. Le trafic est envoyé via la connexion SSH cryptée, il ne peut donc pas être surveillé ni modifié en transit..

    Vous pouvez le faire avec le ssh commande incluse sur Linux, macOS et d’autres systèmes d’exploitation de type UNIX. Sous Windows, qui n'inclut pas de commande ssh intégrée, nous vous recommandons d'utiliser l'outil gratuit PuTTY pour vous connecter aux serveurs SSH. Il prend également en charge le tunneling SSH.

    Transfert de port local: Rendre les ressources distantes accessibles sur votre système local

    La «redirection de port locale» vous permet d'accéder aux ressources du réseau local qui ne sont pas exposées à Internet. Par exemple, supposons que vous souhaitiez accéder à un serveur de base de données chez vous, à votre bureau. Pour des raisons de sécurité, ce serveur de base de données est uniquement configuré pour accepter les connexions du réseau du bureau local. Toutefois, si vous avez accès à un serveur SSH au bureau et que ce serveur permet des connexions externes au réseau du bureau, vous pouvez vous connecter à ce serveur SSH depuis votre domicile et accéder au serveur de base de données comme si vous étiez au bureau. C'est souvent le cas, car il est plus facile de sécuriser un seul serveur SSH contre les attaques que de sécuriser diverses ressources réseau..

    Pour ce faire, vous établissez une connexion SSH avec le serveur SSH et indiquez au client de transférer le trafic depuis un port spécifique de votre PC local, par exemple le port 1234 vers l'adresse du serveur de la base de données et son port sur le réseau du bureau. Ainsi, lorsque vous essayez d'accéder au serveur de base de données sur le port 1234 de votre PC actuel, «localhost», ce trafic est automatiquement «tunnelé» via la connexion SSH et envoyé au serveur de base de données. Le serveur SSH se trouve au milieu, transférant le trafic dans les deux sens. Vous pouvez utiliser n’importe quel outil de ligne de commande ou graphique pour accéder au serveur de base de données comme s’il était exécuté sur votre PC local..

    Pour utiliser le transfert local, connectez-vous au serveur SSH normalement, mais fournissez également le -L argument. La syntaxe est la suivante:

    ssh -L local_port: remote_address: remote_port [email protected]

    Par exemple, supposons que le serveur de base de données de votre bureau se situe au 192.168.1.111 sur le réseau du bureau. Vous avez accès au serveur SSH du bureau à l'adresse ssh.votreoffice.com , et votre compte d'utilisateur sur le serveur SSH est bob . Dans ce cas, votre commande ressemblerait à ceci:

    ssh -L 8888: 192.168.1.111: 1234 [email protected]

    Après avoir exécuté cette commande, vous pourrez accéder au serveur de base de données sur le port 8888 de l’hôte local. Ainsi, si le serveur de base de données offrait un accès Web, vous pouvez connecter http: // localhost: 8888 à votre navigateur Web pour y accéder. Si vous disposez d'un outil de ligne de commande nécessitant l'adresse réseau d'une base de données, vous le dirigerez vers localhost: 8888. Tout le trafic envoyé au port 8888 sur votre PC sera tunnelé à 192.168.1.111:1234 sur votre réseau de bureau.

    C'est un peu plus déroutant si vous souhaitez vous connecter à une application serveur exécutée sur le même système que le serveur SSH lui-même. Par exemple, supposons qu'un serveur SSH fonctionne sur le port 22 de votre ordinateur de bureau, mais qu'un serveur de base de données s'exécute également sur le port 1234 du même système, à la même adresse. Vous souhaitez accéder au serveur de base de données depuis votre domicile, mais le système n'accepte que les connexions SSH sur le port 22 et son pare-feu n'autorise aucune autre connexion externe..

    Dans ce cas, vous pouvez exécuter une commande semblable à celle-ci:

    ssh -L 8888: localhost: 1234 [email protected]

    Lorsque vous essayez d'accéder au serveur de base de données sur le port 8888 de votre PC actuel, le trafic est envoyé via la connexion SSH. Lorsqu'il arrive sur le système exécutant le serveur SSH, le serveur SSH l'envoie au port 1234 sur «localhost», qui est le même PC exécutant le serveur SSH lui-même. Donc “localhost” dans la commande ci-dessus signifie “localhost” du point de vue du serveur distant.

    Pour ce faire, dans l'application PuTTY sous Windows, sélectionnez Connexion> SSH> Tunnels. Sélectionnez l'option “Local”. Pour «Port source», entrez le port local. Pour “Destination”, entrez l'adresse de destination et le port sous la forme adresse_distant: port_distant.

    Par exemple, si vous souhaitez configurer le même tunnel SSH que ci-dessus, vous devez entrer 8888 comme port source et localhost: 1234 comme destination. Cliquez ensuite sur «Ajouter», puis sur «Ouvrir» pour ouvrir la connexion SSH. Vous devrez également entrer l'adresse et le port du serveur SSH lui-même sur l'écran principal de «Session» avant de vous connecter, bien sûr..

    Transfert de port distant: Rendre les ressources locales accessibles sur un système distant

    La «redirection de port à distance» est l'opposé de la redirection locale et n'est pas utilisée aussi fréquemment. Il vous permet de mettre à disposition une ressource sur votre PC local sur le serveur SSH. Par exemple, supposons que vous exécutez un serveur Web sur le PC local sur lequel vous êtes assis. Mais votre PC est derrière un pare-feu qui n'autorise pas le trafic entrant vers le logiciel serveur..

    En supposant que vous puissiez accéder à un serveur SSH distant, vous pouvez vous connecter à ce serveur SSH et utiliser le transfert de port distant. Votre client SSH indiquera au serveur de transférer un port spécifique, par exemple le port 1234 du serveur SSH, à une adresse et à un port spécifiques de votre PC ou de votre réseau local actuel. Quand quelqu'un accède au port 1234 sur le serveur SSH, ce trafic sera automatiquement «tunnelé» via la connexion SSH. Toute personne ayant accès au serveur SSH pourra accéder au serveur Web exécuté sur votre PC. C’est un moyen efficace de passer à travers les pare-feu.

    Pour utiliser le transfert à distance, utilisez le ssh commande avec le -R argument. La syntaxe est en grande partie la même que pour le transfert local:

    ssh -R remote_port: local_address: local_port [email protected]

    Supposons que vous souhaitiez qu'une application serveur écoute le port 1234 de votre PC local au port 8888 du serveur SSH distant. L'adresse du serveur SSH est ssh.votreoffice.com et votre nom d'utilisateur sur le serveur SSH est bob. Vous exécuteriez la commande suivante:

    ssh -R 8888: localhost: 1234 [email protected]

    Quelqu'un pourrait alors se connecter au serveur SSH sur le port 8888 et cette connexion serait tunnelée vers l’application serveur exécutée sur le port 1234 sur le PC local à partir duquel vous avez établi la connexion..

    Pour ce faire dans PuTTY sous Windows, sélectionnez Connexion> SSH> Tunnels. Sélectionnez l'option "Remote". Pour «Port source», entrez le port distant. Pour “Destination”, entrez l'adresse de destination et le port sous la forme adresse_local: port_local.

    Par exemple, si vous souhaitez configurer l'exemple ci-dessus, vous devez entrer 8888 comme port source et localhost: 1234 comme destination. Cliquez ensuite sur «Ajouter», puis sur «Ouvrir» pour ouvrir la connexion SSH. Vous devrez également entrer l'adresse et le port du serveur SSH lui-même sur l'écran principal de «Session» avant de vous connecter, bien sûr..

    Les utilisateurs peuvent ensuite se connecter au port 8888 sur le serveur SSH et leur trafic sera acheminé par tunnel au port 1234 sur votre système local..

    Par défaut, le serveur SSH distant écoute uniquement les connexions du même hôte. En d'autres termes, seules les personnes situées sur le même système que le serveur SSH pourront se connecter. C'est pour des raisons de sécurité. Vous devez activer l'option «GatewayPorts» dans sshd_config sur le serveur SSH distant si vous souhaitez remplacer ce comportement..

    Redirection de port dynamique: utilisez votre serveur SSH en tant que proxy

    Il existe également une «redirection de port dynamique», qui fonctionne de la même manière qu'un proxy ou un VPN. Le client SSH créera un proxy SOCKS que vous pourrez configurer avec les applications. Tout le trafic envoyé via le proxy serait envoyé via le serveur SSH. Ceci est similaire au transfert local: il prend le trafic local envoyé à un port spécifique de votre PC et l'envoie via la connexion SSH à un emplacement distant..

    Par exemple, supposons que vous utilisez un réseau Wi-Fi public. Vous voulez naviguer en toute sécurité sans être surveillé. Si vous avez accès à un serveur SSH chez vous, vous pouvez vous y connecter et utiliser le transfert de port dynamique. Le client SSH créera un proxy SOCKS sur votre PC. Tout le trafic envoyé à ce proxy sera envoyé via la connexion du serveur SSH. Aucune personne surveillant le réseau Wi-Fi public ne pourra surveiller votre navigation ou censurer les sites Web auxquels vous pouvez accéder. Du point de vue des sites Web que vous visitez, ce sera comme si vous étiez assis devant votre PC à la maison. Cela signifie également que vous pouvez utiliser cette astuce pour accéder à des sites Web exclusivement américains lorsque vous êtes en dehors des États-Unis, à condition bien sûr d'avoir accès à un serveur SSH aux États-Unis..

    Autre exemple, vous souhaiterez peut-être accéder à une application de serveur multimédia que vous avez sur votre réseau domestique. Pour des raisons de sécurité, seul un serveur SSH peut être exposé à Internet. Vous n'autorisez pas les connexions entrantes d'Internet vers votre application de serveur multimédia. Vous pouvez configurer le transfert de port dynamique, configurer un navigateur Web pour utiliser le proxy SOCKS, puis accéder aux serveurs exécutés sur votre réseau domestique via le navigateur Web comme si vous vous trouviez devant votre système SSH à domicile. Par exemple, si votre serveur multimédia est situé sur le port 192.168.1.123 de votre réseau domestique, vous pouvez brancher l'adresse. 192.168.1.123 dans n'importe quelle application utilisant le proxy SOCKS et vous accéderiez au serveur de médias comme si vous étiez sur votre réseau domestique.

    Pour utiliser le transfert dynamique, exécutez la commande ssh avec le -ré argument, comme si:

    ssh -D local_port [email protected]

    Par exemple, supposons que vous ayez accès à un serveur SSH à ssh.yourhome.com et votre nom d'utilisateur sur le serveur SSH est bob . Vous souhaitez utiliser le transfert dynamique pour ouvrir un proxy SOCKS sur le port 8888 du PC actuel. Vous exécuteriez la commande suivante:

    ssh -D 8888 [email protected]

    Vous pouvez ensuite configurer un navigateur Web ou une autre application pour utiliser votre adresse IP locale (127.0.01) et le port 8888. Tout le trafic provenant de cette application serait redirigé via le tunnel..

    Pour ce faire dans PuTTY sous Windows, sélectionnez Connexion> SSH> Tunnels. Sélectionnez l'option “Dynamique”. Pour «Port source», entrez le port local..

    Par exemple, si vous voulez créer un proxy SOCKS sur le port 8888, vous devez entrer 8888 en tant que port source. Cliquez ensuite sur «Ajouter», puis sur «Ouvrir» pour ouvrir la connexion SSH. Vous devrez également entrer l'adresse et le port du serveur SSH lui-même sur l'écran principal de «Session» avant de vous connecter, bien sûr..

    Vous pouvez ensuite configurer une application pour accéder au proxy SOCKS sur votre PC local (c'est-à-dire l'adresse IP 127.0.0.1, qui pointe vers votre PC local) et spécifier le port correct..

    Par exemple, vous pouvez configurer Firefox pour utiliser le proxy SOCKS. Ceci est particulièrement utile car Firefox peut avoir ses propres paramètres de proxy et ne doit pas nécessairement utiliser de paramètres de proxy à l'échelle du système. Firefox enverra son trafic via le tunnel SSH, alors que d'autres applications utiliseront votre connexion Internet normalement.

    Lorsque vous effectuez cette opération dans Firefox, sélectionnez «Configuration manuelle du proxy», entrez «127.0.0.1» dans la case de l'hôte SOCKS, puis entrez le port dynamique dans la case «Port». Laissez les zones Proxy HTTP, Proxy SSL et Proxy FTP vides.

    Le tunnel restera actif et ouvert aussi longtemps que la connexion de session SSH sera ouverte. Lorsque vous mettez fin à votre session SSH et que vous vous déconnectez d'un serveur, le tunnel est également fermé. Reconnectez-vous simplement avec la commande appropriée (ou les options appropriées dans PuTTY) pour rouvrir le tunnel..