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

2 pensées sur “SSLH : Faire cohabiter un serveur Web et SSH sur le même port

  • 17 janvier 2018 à 15 h 54 min
    Permalink

    Euh ! les deux premières cases de code m’apparaissent vides ???
    Firefox 57.0.4 sur Ubuntu 16.04 LTS 64bits

    Répondre
    • 20 janvier 2018 à 20 h 31 min
      Permalink

      Merci pour le signalement, c’est corrigé.

      Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.