Stunnel
| 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
- SSH tunnelling — redirections de ports natives à SSH
- HTTP tunneling — encapsulation dans du HTTP
- SSH securiser — durcissement du serveur SSH