Dissimulation avec sslh

sslh est un outil qui permet de trier et répartir différent type de flux arrivant sur un même port.

Par exemple: ssh et http sur le port 443.

J’ai testé l’installation depuis les dépôts debian et raspbian.

installation

apt install sslh

Configuration

Coté sslh

Le fichier de configuration est disponible dans /etc/default/sslh

il faut placer sslh en amont du serveur web (nginx). donc en écoute sur le port 443 et rediriger le flux sur un autre port pour le serveur web par exemple 2443.

Nous obtenons donc :

# Default options for sslh initscript
# sourced by /etc/init.d/sslh

# Disabled by default, to force yourself
# to read the configuration:
# - /usr/share/doc/sslh/README.Debian (quick start)
# - /usr/share/doc/sslh/README, at "Configuration" section
# - sslh(8) via "man sslh" for more configuration details.
# Once configuration ready, you *must* set RUN to yes here
# and try to start sslh (standalone mode only)

RUN=no

# 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 0.0.0.0:443 --ssh 127.0.0.1:22 --ssl 127.0.0.1:2443 --pidfile /var/run/sslh/sslh.pid"

Je n’ai pas passé RUN=yes pour la bonne et simple raison que je ne lance pas l’outil manuellement mais avec systemctl.

Coté nginx

Il faut passer tout les Listen 443 en Listen 2443. Pour cela j’ai utilisé sed :

cd /etc/nginx/site-avalaible
sed -i 's/443/2443/g' *

et voila !

Utilisation

On redémarre simplement les services pour que les modifications de configuration soit pris en compte.

systemctl restart sslh ; systemctl restart nginx

et c’est tout…

Faites attention si vous étes hors d’un accès ssh classique et si vous utilisé des outils tel que shellinabox, une erreur peux rompre la liaison. Des outils tel que screen, byobu ou tmux sont a même de maintenir la connexion lors du redémarrage. Dans le cas d’une rupture de lien ssh reste dispo sur le port que vous avec configuré (défaut 22)