SSLH : Multiplexeur de Protocoles sur un Port Unique

SSLH est un logiciel qui permet de multiplexer plusieurs protocoles sur un mĂȘme port rĂ©seau, typiquement le port 443. Cette fonctionnalitĂ© est particuliĂšrement utile pour contourner les restrictions de pare-feu, en permettant de faire passer Ă  la fois le trafic HTTPS, SSH, OpenVPN, et d’autres protocoles Ă  travers un seul et mĂȘme port.

Pourquoi Utiliser SSLH ?

SSLH est idĂ©al dans les situations oĂč le port 443 (utilisĂ© par HTTPS) est le seul port ouvert, et oĂč vous souhaitez Ă©galement utiliser d’autres services, comme SSH ou OpenVPN, sur ce mĂȘme port sans modifier la configuration de votre pare-feu ou des rĂšgles de sĂ©curitĂ© du rĂ©seau.

Fonctionnement de SSLH

SSLH agit comme un proxy en Ă©coutant sur le port configurĂ© (gĂ©nĂ©ralement 443). Lorsqu’une connexion arrive, SSLH analyse le dĂ©but de la communication et dĂ©termine de quel protocole il s’agit, puis redirige le trafic vers le service appropriĂ©.

Schéma de Fonctionnement

Voici un schéma ASCII illustrant le fonctionnement de SSLH avec SSH et HTTPS :

                +------+         22+---------+
                |      |--SSH----->| OPENSSH |
             443|      |           +---------+
-- SSH/HTTPS -->| SSLH |         
                |      |       4443+---------+
                |      |--HTTPS--->| APACHE  |
                +------+           +---------+

Protocoles Supportés

SSLH supporte plusieurs protocoles :

  • HTTPS (HTTP sĂ©curisĂ©)
  • SSH (Secure Shell)
  • OpenVPN
  • XMPP
  • AnyConnect
  • Et bien d’autres via des rĂšgles personnalisables.

Installation de SSLH

Sous Debian/Ubuntu

Pour installer SSLH sur un systĂšme basĂ© sur Debian ou Ubuntu, il vous suffit d’exĂ©cuter la commande suivante :

sudo apt update
sudo apt install sslh

Sous CentOS/RHEL

Sur CentOS ou RHEL, vous pouvez installer SSLH en utilisant EPEL :

sudo yum install epel-release
sudo yum install sslh

Compilation Manuelle

Si vous préférez compiler SSLH à partir des sources, voici les étapes à suivre :

git clone https://github.com/yrutschle/sslh.git
cd sslh
make
sudo make install

Configuration de SSLH

La configuration de SSLH se trouve typiquement dans le fichier /etc/sslh.cfg. Voici un exemple de configuration pour rediriger les connexions en fonction des protocoles :

verbose: true;
foreground: true;
listen:
(
    { host: "0.0.0.0"; port: "443"; }
);
protocols:
(
    { name: "ssh"; host: "127.0.0.1"; port: "22"; },
    { name: "https"; host: "127.0.0.1"; port: "8443"; },
    { name: "openvpn"; host: "127.0.0.1"; port: "1194"; },
    { name: "xmpp"; host: "127.0.0.1"; port: "5222"; }
);

Explications

  • listen : dĂ©finit l’adresse et le port sur lesquels SSLH Ă©coute les connexions entrantes.
  • protocols : dĂ©finit les rĂšgles de routage en fonction du protocole dĂ©tectĂ©.

Configuration avec systemd

Pour garantir que SSLH dĂ©marre automatiquement avec votre systĂšme, vous pouvez utiliser le service systemd fourni avec SSLH. Voici les commandes pour l’activer et le dĂ©marrer :

sudo systemctl enable sslh
sudo systemctl start sslh

Debugging et Journalisation

Pour voir les logs et diagnostiquer les problÚmes, vous pouvez vérifier le fichier de log associé à SSLH ou exécuter SSLH en mode verbeux :

sudo journalctl -u sslh

SSLH et Sécurité

Bien que SSLH soit un outil puissant, il est essentiel de s’assurer que les services qu’il redirige sont correctement sĂ©curisĂ©s. Assurez-vous que votre service SSH est bien configurĂ© avec des clĂ©s d’authentification et que votre service HTTPS utilise des certificats SSL/TLS Ă  jour.

Liens et Ressources Utiles

Conclusion

SSLH est une solution élégante pour utiliser plusieurs services sur un port unique. En multipliant les protocoles sur un seul port, vous pouvez contourner certaines restrictions de pare-feu tout en maintenant un haut niveau de sécurité et de flexibilité. Avec sa configuration simple et son support étendu pour de nombreux protocoles, SSLH est un outil incontournable pour les administrateurs réseau.