SSLH : Faire cohabiter un serveur Web et SSH sur le même port
SSLH est un outil qui permet de multiplexer le port 443 afin notamment de contourner certains firewalls qui bloquent le port SSH. Typiquement, en HTTP c’est le client qui communique en premier quand pour le protocole SSH c’est le serveur qui envoie le premier message. SSLH utilise ces différences de fonctionnement via des sondes (pour XMPP, OpenVPN…) afin de fournir cette fonctionnalité de multiplexage. Dans mon cas, je veux partager le port 443 avec un serveur Apache.
Dans un premier temps, il faut indiquer à Apache de ne plus écouter sur le port 443 mais le 1443. Il faut changer tous les VirtualHost dans les fichiers /etc/apache2/sites-enabled en remplaçant :
<VirtualHost *:443>
en
<VirtualHost *:1443>
Et adapter de la même façon le fichiers /etc/apache2/ports.conf :
Listen 80 <IfModule ssl_module> Listen 1443 </IfModule> <IfModule mod_gnutls.c> Listen 1443 </IfModule>
Voici pour la configuration d’Apache, pour un autre service, le principe est identique. Il faut bien entendu penser à redémarrer le service pour que le changement soit pris en compte.
Pour l’installation d’SSLH, un simple apt-get suffit vu que le package se trouve dans les repos officiels. Il reste à adapter la configuration du fichier /etc/default/sslh afin de passer le démarrage à yes, indiquer les ports et surtout l’adresse IP locale des ports SSH/Apache :
RUN=yes # binary to use: forked (sslh) or single-thread (sslh-select) version # systemd users: don't forget to modify /lib/systemd/system/sslh.service DAEMON=/usr/sbin/sslh DAEMON_OPTS="--user sslh --listen MON_IP_PUBLIQUE:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:1443 --pidfile /var/run/sslh/sslh.pid"
Un redémarrage du service sslh pour prise en compte, il est possible de tester pour vérifier. Dans les logs, vous devriez obtenir quelque chose du genre :
Jan 1 19:44:32 private systemd[1]: Stopped SSL/SSH multiplexer. Jan 1 19:44:32 private systemd[1]: Started SSL/SSH multiplexer. Jan 1 19:44:32 private sslh[19856]: sslh-fork 1.17-2 started Jan 1 19:44:34 private sslh[19856]: connection from gnagnagna.abo.wanadoo.fr:52342 to website.domain.tld:https forwarded from localhost:50964 to localhost:1443