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.