Faire passer SSH via HTTPS
- Pour faire passer SSH via HTTPS, il faut ajuster à la fois le client et le serveur.
- Dans l’exemple de configuration côté client, les paramètres
ProxyCommand et ServerAliveInterval sont définis dans le fichier ~/.ssh/config.
- Le script
~/.ssh/https-tunnel.bash utilisé crée une connexion TLS avec socat tout en envoyant la méthode CONNECT dans les en-têtes.
Exemple de configuration du serveur
- Dans la configuration du serveur HTTPS Apache2, on charge
proxy_connect_module et on utilise la directive AllowCONNECT pour autoriser l’usage de la méthode HTTP CONNECT vers une cible précise.
- Côté serveur, la configuration permet d’utiliser la méthode
CONNECT depuis https-server uniquement pour l’hôte cible unique ssh-server.
Contexte
- En séjournant à l’hôpital, l’auteur voulait travailler à distance via le Wi-Fi de l’hôpital, où la plupart des types de connexion étaient bloqués.
- Le réseau de l’hôpital n’autorise que les connexions HTTP et HTTPS, et SSH est totalement bloqué.
- Exploration des moyens de faire passer SSH via HTTP ou HTTPS.
Méthodes possibles
- Le projet
sslh, qui permet d’héberger conjointement les protocoles SSH et HTTPS sur un seul port et de les répartir de façon transparente.
sslh n’encapsule pas un protocole dans un autre ; il redirige vers le vrai backend à l’aide de diverses heuristiques.
- Une méthode consistant à encapsuler complètement le protocole SSH dans un autre protocole à l’aide de la directive
ProxyCommand d’openssh.
SSH over HTTP
- Pour une tentative simple de SSH over HTTP, Apache2 est configuré pour autoriser la méthode
CONNECT vers la cible unique ssh-server:22.
- Côté client, l’adaptation se fait facilement avec
socat.
ServerAliveInterval est utilisé pour éviter que la connexion HTTP ne soit coupée lorsqu’elle reste inactive.
SSH over HTTPS
socat ne prend pas en charge les proxys HTTPS, mais il prend en charge l’encapsulation TLS.
- Il est facile d’implémenter manuellement une méthode basée sur
CONNECT.
- Le tunnel SSH over HTTPS est mis en place à l’aide du script
~/.ssh/https-tunnel.bash.
Conclusion
- La présence quasi universelle de HTTPS permet de faire transiter des données à travers des intermédiaires très restrictifs.
- La méthode
CONNECT est un hack utile pour envelopper un flux de charge utile TCP dans un flux hôte TLS.
ServerAliveInterval sert à maintenir la connexion sur des transports sous-jacents peu adaptés aux connexions inactives.
L’avis de GN⁺
- Le point le plus important de cet article est qu’il propose une solution créative pour rendre possible une connexion SSH même dans un environnement réseau restrictif.
- La façon de combiner SSH et HTTPS peut être particulièrement intéressante pour les personnes ayant des connaissances spécialisées en sécurité réseau.
- La manière de contourner les restrictions réseau via les réglages
ProxyCommand et ServerAliveInterval fournit des informations utiles aux administrateurs réseau et aux experts en sécurité.
1 commentaires
Avis Hacker News