Catégories
Sysadmin

SSLH combiner HTTPS / SSH / OpenVPN / Tinc / XMPP en un port 443

SSLH est un reverse proxy SSL capable d’orienter le trafic reçu sur un port donné vers de multiples instances telles que SSH, HTTPS, OpenVPN, Tinc, XMPP. Ce puissant outil sert à contourner les restrictions des firewalls qui ne laisseraient passer que le port HTTPS 443 par exemple.

L’outil SSLH est fort pratique car il permet de combiner sur un même port deux services tels que SSH et HTTP/SSL.

Le problème des firewalls filtrants

Le constat est simple, beaucoup d’entreprises filtrent leurs accès internet et laissent passer la consultation HTTPS port 443 mais que très rarement le port 22 SSH. Si l’on souhaite se connecter à des machines en SSH à l’extérieur d’un réseau filtré, on peut vouloir utiliser un VPNSSL port 443 ou un accès SSH port 22. SSLH va permettre de combiner ces deux accès sur un même port réseau. Il va agir comme un reverse proxy et sans décrypter le flux va être capable d’identifier si il s’agit de flux HTTPS ou SSH.

Spécificité des clients basés sur SSL

Pour cela il va se baser sur la différence entre les deux protocoles, lorsqu’un client web se connecte à un serveur web il va demander que le serveur lui livre la page, le client parle donc en premier. Lorsqu’un client SSH se connecte à un serveur SSH, le client va attendre que le serveur se présente avant d’envoyer des informations.

SSLH va donc attendre pendant un temps paramétrable et agir simplement de la sorte :
– si le client communique il est mis en relation avec le serveur HTTPS
– si le client ne communique pas il est mis en relation avec le serveur SSH

Ces deux protocoles gérés sont déjà un beau pied de nez à tout RSSI qui laisse passer un flux HTTPS et qui pense que l’on fait uniquement du surf web avec. Mais si l’on souhaite mettre d’autres services que l’accès distant à des terminaux ou à un site web SSL, les dernières versions de SSLH permettent la prise en charge des logiciels OpenVPN, Tinc et XMPP.

En effet ces flux utilisent SSL et ont aussi leurs particularités :
– le client OpenVPN envoie la séquence 0x00, 0x0D et 0x38
– le client Tinc commence par un « 0 »
– le client XMPP commence par un paquet qui contient la chaine « jabber »

C’est donc pas moins de 5 protocoles (HTTPS, SSH, OpenVPN, Tinc, XMPP) différents qui pourront être combinés sur un seul et même port réseau tel un reverse proxy.