sslh : https et ssh sur un même port

sslh : ssl/ssh multiplexer
site officiel sslh : rutschle.net

sslh est un proxy de couche 7 capable de filtrer et différencier les trames.

Il sait traiter des connections de type HTTP, HTTPS, SSH, OpenVPN, tinc, XMPP ou n’importe quel protocole que l’on peut vérifier avec une expression régulière. Le tout sur le même port.

But :
Pouvoir se connecter en SSH en utilisant le port 443 tout en pouvant servir des pages Web en HTTPS, avec une seule adresse IP.
L’idée est de pouvoir ce connecter sur son serveur en SSH depuis n’importe quel réseau, le port 443 étant rarement bloqué.

Contexte :
Je souhaite ici pouvoir accéder à ma jail ‘ssh’ via un ‘ssh monip -p 443′ tout en gardant sur mon autre jail le port 443 pour le http sécurisé.

sslh

On vois sur le schéma ci-dessus qu’il est impossible de ce connecter via le réseau ‘orange’ en ssh sur le port 22 (Le réseau orange étant un réseau filtré ne laissant sortir que le http/https/dns).

Prérequis :

  • installer le paquet net/sslh
  • avoir un sshd
  • avoir un apache sur le port 443
  • quelques règles pf

Configuration :

# cat /etc/rc.conf
#Enable sslh
sslh_enable="YES"
sslh_mode="select"                 # select (single-thread) ou fork 
sslh_listening="x.x.x.x:443"       # mon ip publique
sslh_sshtarget="192.168.0.1:222"   # ip de mon serveur ssh
sslh_ssltarget="192.168.0.2:443"   # ip de mon serveur https
sslh_sshtimeout="4"                # time out bascule https/ssh
    • sslh_listening : l’adresse sur laquelle écoute sslh
    • sslh_sshtarget : l’adresse et port vers qui renvoyer les requêtes ssh
    • sslh_sshtarget : l’adresse et port vers qui renvoyer les requêtes https

Lancement du daemon :

# /usr/local/etc/sslh start

pf.conf coté hôte :

# cat /etc/pf.conf
[...]
nat on $if_publique from $jail_network to !$jail_network -> $ipublique
rdr on $if_publique proto tcp from any to $ipublique port 80 -> $jailhttp port 80
[...]
pass in quick proto tcp from any to ($if) port 443
pass in on $if proto tcp from any to $jailhttp port 80

Bilan positif :

  • Deux services accessible à travers d’un seul port.
  • Deux point d’entre ssh distinct sur une seule IP publique (22/443).

Bilan négatif :

  • L’IP source de visite dans les logs https d’apache est remplacée par celle de l’hôte.
This entry was posted in unix and tagged , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

ERROR: si-captcha.php plugin says GD image support not detected in PHP!

Contact your web host and ask them why GD image support is not enabled for PHP.

ERROR: si-captcha.php plugin says imagepng function not detected in PHP!

Contact your web host and ask them why imagepng function is not enabled for PHP.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>