SSLH : Multiplexer les connections SSL et SSH sur le même port
Contents
1 Introduction
SSLH est comme un tour de magie. Il permet par exemple sur une adresse WAN sur le port 443 d'avoir du HTTPS et du SSH. Comment c'est possible ??? On peut mettre un même port d'écoute sur un même port !
Effectivement ! Il faut simplement voir SSLH comme un proxy de couche 7 capable de filtrer et différencier les trames SSL des trames SSH.
2 Installation
2.1 Debian
Sur Debian, easy move :
aptitude |
aptitude install sslh |
2.2 FreeBSD
Pour l'installation sur FreeBSD :
pkg_add |
pkg_add -vr sslh |
2.3 OpenBSD
Sur OpenBSD pour une version 1.7 :
wget http://www.rutschle.net/tech/sslh-1.7a.tar.gz tar -xzvf sslh-1.7a.tar.gz cd sslh-1.7a cc -o sslh -DLIBWRAP sslh.c -lwrap cp sslh /usr/local/sbin |
Pour les dernières versions :
wget http://www.rutschle.net/tech/sslh-1.10.tar.gz tar -xzvf sslh-1.10.tar.gz cd sslh-1.10 make make install |
Note : Sur les dernières version vous allez vous trouver ave 2 binaires : sslh-fork et sslh-select. sslh-select est pour 1 seul thread tandis que sslh-fork est multithreadé.
3 Configuration
3.1 Debian
Si vous êtes sur Debian, c'est simple, vous créez un fichier dans /etc/default/sslh avec le contenu suivant :
/etc/default/sslh |
LISTEN=ifname:443 SSH=localhost:22 SSL=localhost:443 |
- LISTEN : C'est l'IP de l'interface et le port d'écoute d'SSLH. Il faut que ce soit le port d'écoute d'entrée (WAN par exemple), celui par lequel vos clients vont passer
- SSH : L'adresse du port, ainsi que la machine correspondant à votre port SSH
- SSL : L'adresse du port, ainsi que la machine correspondant à votre port HTTPS
3.2 FreeBSD
Pour configurer SSLH, il suffit d'ajouter ces lignes dans rc.conf :
3.3 OpenBSD
Sur OpenBSD, j'ai choisis d'ajouter ces lignes dans /etc/rc.local avec ma configuration directement dans la ligne de commande :
Encore une fois, a vous d'adaptez ces lignes selon vos besoins.
3.4 pfSense
Sur pfSense, nous allons créer un fichier type init :
A vous d'adapter le début du script avec les informations souhaitées.
Puis mettre les bons droits :
chmod |
chmod +x /usr/local/etc/rc.d/sslh.sh |
4 FAQ
4.1 J'ai des processus Zombies de sslh sur OpenBSD
Il m'est arrivé d'avoir des processus zombie à chaque tentative de connexion sur le serveur SSH. Pour palier à ce problème, voici un patch pour la version 0.7 :
patch |
462a463,464 > if (fork() > 0) exit(0); /* Detach */ > 467,468d468 < if (fork() > 0) exit(0); /* Detach */ < |