15

SSLH: HTTPS et SSH sur le même port!

Nous avons vu dans cet article: https://memo-linux.com/ssh-acces-travail-maison/ comment accéder à son serveur de la maison derrière un proxy au travail, en passant par le port 443
Mais voilà, si notre serveur fait aussi office de serveur web avec HTTPS, qui lui aussi utilise le port 443, votre serveur apache est dans les choux :(
Cependant une solution existe! j’aime le monde de linux car il y toujours une solution :)
Nous allons donc voir comment faire, avec SSLH:

Installation de SSLH:

apt-get install sslh

Configuration d’Apache
Avant de configurer SSLH, il faut modifier légèrement la configuration d’Apache afin de libérer le port 443.
Dans le fichier de configuration de votre serveur ‘/etc/apache2/ports.conf’, remplacez la ligne :

Listen 443

en

Listen 2443

Dans cet exemple, j’utilise le port 2443 mais vous pouvez en utiliser un autre. Utilisez le même dans la configuration des vhost et de sslh.
Faite de même avec la ligne suivante, dans tout les fichiers de configuration de Virtual host s’ils utilisent HTTPS :

<VirtualHost 127.0.0.1:2443>

Rechargez la configuration de Apache :

/etc/init.d/apache reload

Configuration SSLH
Editez le fichier /etc/default/sslh:

nano /etc/default/sslh

Configurez le selon le nouveau port utilisé par Apache, et ajoutez ‘RUN=yes’ en bas de fichier :

DAEMON_OPTS="-u sslh -p 0.0.0.0:443 -s 127.0.0.1:22 -l 127.0.0.1:2443 -P /var/run/sslh.pid"
RUN=yes

Démarrez ensuite SSLH grâce à :

/etc/init.d/sslh start

Vous pouvez désormais vous connecter en SSH au serveur via le port 443 et le site sécurisé fonctionne toujours.

Évidemment, faut penser à configurer sa/son box/routeur pour la redirection du port 443
port 443 -> 192.168.0.10:443

Enjoy! :)

Partager l'article :





fred

"Dire que l'on s'en fiche du droit à la vie privée sous prétexte qu'on a rien à cacher, c'est comme déclarer que l'on se fiche du droit à la liberté d'expression sous prétexte qu'on a rien à dire." Edward Snowden

15 commentaires

  1. Je viens à l’instant de tester cet outil qui semble à première vue très bien . Je viens de tester la partie SSL qui est correctement redirigée.
    cependant, un export des variables de $_SERVER[] en PHP donne ceci(entre autres) :

    [SERVER_ADDR] => 127.0.0.1 (ca encore je peux me débrouiller avec les noms DNS ..)
    [SERVER_PORT] => 443 (étrange, j’ai configuré 2443, et je vois bien 2443 dans netstat)
    [REMOTE_ADDR] => 127.0.0.1 (impossible de voir d’où provient mon visiteur !)

    donc un petit bémol si on veut faire de la géolocalisation, ou loguer les attaques sur le site …

  2. Salut Nabla,

    pour récupérer les adresses IP des clients, installe le paquet libapache2-mod-rpaf.

  3. Bonjour,
    Merci pour l’astuce, ceci dit je n’arrive pas encore à la faire fonctionner. Le paquet était déjà installé, donc peut être quelque chose à configurer.

  4. Bonjour Nabla,
    fais un essai en ajoutant la ligne suivante dans le fichier de configuration d’Apache /etc/apache2/apache.conf

    [code lang= »shell »]
    LogFormat "%{X-Forwarded-for}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" cached
    [/code]

  5. Petite question : Pourquoi modifier le port de apache et pas de ss(l)h directement ?!

  6. Car c’est sslh qui écoute sur le port 443 ouvert sur internet, qui va orienter soit vers le serveur web sur le port 2443 ou vers le serveur ssh sur le port 22.

  7. Quand on est con, on est con :)

    Merci pour cet éclaircissement nécessaire du Lundi matin …. C’était pourtant évident (après le café :p)

  8. Mais nooon! c’est peut être tout simplement mal expliqué dans l’article :-)
    Et bon café!

  9. Oui enfin, il suffit de laisser la conf par défaut et de faire une redirection de port via la box pour obtenir le même résultat. Néanmoins, sympa ce soft, je garde sous le coude.

  10. si en sortie les deux services ne sont accéssibles que sur le port 443, comment fais-tu juste avec ta box ? :-)

    La situation de départ, c’est que le post client se trouve dans un réseau entreprise ou seul les ports 80 et 443 du proxy sont authorisés et il doit pouvoir accéder à son serveur SSH via le port 443 et sur cette même machine se trouve un serveur web accéssible sur le port 443.

  11. Bonjour,
    Virtual host dont il est ici fait mention est un fichier de configuration ou une directive du fichier/etc/apache2/ports.conf ?
    J’avoue que ce n’est pas clair pour moi, uniquement ce passage « Dans cet exemple, j’utilise le port 2443 mais vous pouvez en utiliser un autre. Utilisez le même dans la configuration des vhost et de sslh.
    Faite de même avec la ligne suivante, dans tout les fichiers de configuration de Virtual host s’ils utilisent HTTPS : ».

    Merci bien si je pouvais avoir un éclaircissement sur ce point qui lèverait toute ambiguïté.

    En tout cas, bravo pour ce tuto en français car ils ne « courent pas les rues » sur le sujet de SSLH alors qu’ils sont légions pour SSH et SSL.

    Valorisa

  12. Bonjour Valorisa,
    pour faire simple : si sur ton serveur Apache tu as créé des accès en https sur le port 443, il faut les changer pour un autre port d’écoute, exemple : 2443. Pour ce faire, il faut modifier 2 fichiers :
    /etc/apache2/ports.conf
    et tout les fichiers correspondant à tes serveurs web dans le répertoire /etc/apache2/site-enabled/.
    Le port 443 doit être uniquement configuré pour SSLH.

  13. Très pratique, avec de l’IPv6 on peut ruser et mettre 2 adresses publiques directement sur la machine (héhé du coup 2 ports 443 !) et utiliser sslh en IPv4.
    Petite coquille c’est HTTPS et non HTTS ;)

  14. pas mal le coup de l’IPv6 !
    merci pour la coquille, c’est corrigé :-)

Laisser un commentaire

Votre adresse e-mail 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.