2 votes

Tunnel SSH sur SSL

Sur l'un de mes systèmes, il y a un pare-feu qui interdit toute sortie sauf http(s)...

Certains utilisateurs doivent utiliser ssh mais ils ne peuvent pas. J'ai d'abord essayé d'exécuter ssh sur le port 443 mais sans succès.

J'ai cherché sur Google et j'ai découvert que je pouvais le faire en utilisant stunnel, qui nécessite une certaine configuration, alors comment faire cela?

4voto

Maythux Points 77506

Cette configuration se fait en deux parties. La première partie est effectuée sur le serveur SSH distant. La deuxième partie est effectuée sur la machine locale.

Instructions côté serveur :

Commencez par installer stunnel :

sudo apt-get install stunnel4

Générer le certificat SSL (pour 365 jours) :

openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 365 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem
sudo mv stunnel.pem /etc/stunnel/

Configurer stunnel pour faire un tunnel 443 (https) vers 22 (ssh) :

Créez un fichier de configuration pour répondre aux besoins de l'utilisation de SSH sur SSL.

gksu gedit /etc/stunnel/stunnel.conf

Ecrivez ceci :

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = public_ip:443
connect = 127.0.0.1:22

La configuration ci-dessus indique à stunnel où trouver le certificat que nous avons généré et où accepter et rediriger les connexions. Dans ce cas, stunnel écoutera sur l'adresse IP publique sur le port 443 (https) et redirigera les connexions là vers localhost sur le port 22 (ssh).

Pour démarrer le service stunnel, nous devrons l'activer dans /etc/default/stunnel4. Changez la ligne ENABLED de 0 à 1.

Enfin, nous pouvons démarrer le service et passer à la configuration du client :

sudo service stunnel4 start

Vous pouvez vérifier que stunnel écoute maintenant en utilisant la commande netstat :

netstat -natp | grep :443

Instructions côté client :

Commencez par installer le paquet stunnel :

sudo apt-get install stunnel4

Générer le certificat SSL (pour 365 jours) :

openssl genrsa 1024 > stunnel.key
openssl req -new -key stunnel.key -x509 -days 365 -out stunnel.crt
cat stunnel.crt stunnel.key > stunnel.pem
sudo mv stunnel.pem /etc/stunnel/

Créez un fichier de configuration :

gksu gedit /etc/stunnel/stunnel.conf

Ecrivez ceci :

pid = /var/run/stunnel.pid
cert = /etc/stunnel/stunnel.pem
[ssh] accept = 127.0.0.1:2200
connect = remote_ip:443

Pour démarrer le service stunnel, nous devrons l'activer dans /etc/default/stunnel4. Changez la ligne ENABLED de 0 à 1.

Démarrez le service.

sudo service stunnel4 start

Etablir la connexion

Avec le service stunnel maintenant en cours d'exécution à la fois sur le serveur et sur le client, nous sommes prêts à établir la connexion sécurisée. Maintenant, lorsque vous vous connectez sur votre machine locale sur le port 2200, une connexion sera établie vers l'IP distante sur le port 443, créera une connexion SSL sécurisée et se connectera au port 22 à l'autre extrémité. Vos connexions SSH cryptées sont maintenant enveloppées dans une connexion SSL cryptée utilisant le port 443.

ssh localhost -p 2200

Sources : Lien1 Lien2

2voto

Pere Cortada Points 21

stunnel est parfait pour les paramètres permanents, mais si vous voulez une solution plus improvisée, vous pouvez concaténer 2 tunnels.

Par exemple, vous voulez que l'hôte A accède au port 443 de l'hôte B mais est bloqué par le pare-feu, vous essayez donc de créer un tunnel depuis l'hôte C qui peut accéder à la fois au port 22 d'A et au port 443 de B.

ssh -R 443:B:443 root@A ne fonctionnera pas sous Ubuntu ou toute distribution qui désactive le compte root ou l'accès ssh root.

ssh -R 443:B:443 other_user@A ne fonctionnera pas car seul root peut mettre en place un port d'écoute sur A, même si l'utilisateur "other_user" a la permission sudo.

ssh -R 1443:B:443 other_user@A Permettra à A d'accéder à B:443 en utilisant 127.0.0.1:1443. C'est bien mais parfois vous ne pouvez pas changer le port (peut-être que le numéro de port est codé en dur dans une application).
Dans ce cas, vous pouvez ajouter un autre tunnel de A:443 à A:1443 en utilisant ssh -L 443:127.0.0.1:1443 127.0.0.1 en plus du tunnel A->C->B précédent.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X