Stunnel

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Encapsulation SSL/TLS
Paquet stunnel4
Cas type SSH sur port 443 (HTTPS)
Voir aussi SSH tunnelling · HTTP tunneling

stunnel encapsule une connexion TCP dans une couche SSL/TLS. Un usage courant consiste à faire passer du SSH sur le port 443 (celui du HTTPS) pour traverser un pare-feu qui n'autorise que le web. La configuration se fait en deux parties : côté serveur SSH distant, puis côté machine locale.

On peut aussi rediriger un port au niveau du pare-feu (valeur d'exemple à remplacer) :

iptables -t nat -A PREROUTING -p tcp -s 203.0.113.7 --dport 443 -j REDIRECT --to-port 22

Côté serveur

sudo apt-get install stunnel4

# certificat SSL auto-signé (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 /etc/stunnel/stunnel.conf pour écouter en 443 et rediriger vers le SSH local :

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

Activer le service dans /etc/default/stunnel4 (ENABLED=1) puis démarrer :

sudo service stunnel4 start
netstat -natp | grep :443      # vérifier l'écoute

Côté client

Installer stunnel4 et générer un certificat de la même manière, puis configurer l'écoute locale qui pointe vers le serveur distant :

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

Activer puis démarrer le service, et établir la connexion : le port local 2200 mène, à travers SSL sur 443, jusqu'au port 22 distant.

sudo service stunnel4 start
ssh localhost -p 2200

Voir aussi