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.
Table of Contents
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
- Documentation officielle de SSLH : la documentation complĂšte et les options de configuration de SSLH.
- SSLH sur ArchWiki : des informations et astuces sur l’installation de SSLH pour les utilisateurs d’Arch Linux.
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.