Compilation, Installation et Configuration de SSLH.

iscsi jpeg

Joindre son serveur SSH sur le port 443 peut être utile, en particulier si vous êtes connecté derrière un routeur firewall qui fait du zèle.

Problème votre serveur Web utilise déjà ce port pour les connexions SSL ? SSLH a la solution.

SSLH est multiplexeur SSL/SSH, c'est lui qui va se chargera d'écouter sur votre port 443 (tcp) et de rediriger les requêtes qu'il reçoit vers le service approprié.

Dans notre exemple SSLH va être installé sur une machine CentOS 5.4, et aiguillera nos requêtes vers OpenSSH ou Apache.

Compilation

Pour la compilation c'est du classique, un seul fichier source (sslh.c) et un Makefile. Seul subtilité ici nous désirons installer le binaire généré dans "/srv".

# wget http://www.rutschle.net/tech/sslh-1.7a.tar.gz
# tar xvzf sslh-1.7a.tar.gz
# cd sslh-1.7a
# make PREFIX=/srv # PREFIX à modifier selon votre besoin. (/usr/local par défaut)
# make install

Installation du script d'init

Un script d'init pour CentOS est fournit avec l'archive de SSLH (scripts/etc.rc.d.init.d.sslh.centos), cependant se script est un peu buggé c'est pour cela que je vous propose d'installer ma propre modification de ce script.

# wget http://www.system-linux.eu/public/scripts/sslh -O "/etc/init.d/sslh"
# chmod 755 /etc/init.d/sslh
# chkconfig --add sslh

Configuration

La configuration de SSLH se fait via les arguments qui lui son passé sur ligne de commande. J'ai donc décidé de les conserver dans le script d'init. (même si cela n'est habituellement pas conseillé)

On édite donc le script d'init.

# vi /etc/init.d/sslh

Cette ligne précisément:

...

OPTIONS="-p 0.0.0.0:443 -l 127.0.0.1:8443 -s 127.0.0.1:22 -P $PIDFILE"

...

-p 0.0.0.0:443 :SSLH sera en écoute sur le port 443.

-l 127.0.0.1:8443 :SSLH redirigera les requêtes HTTPS en local sur le port 8443.

-s 127.0.0.1:22 :SSLH redirigera les requêtes SSH en local sur le port 22.

Configuration de Apache

Il faut maintenant changer le port d'écoute de Apache pour qu'il utilise désormais le port 8443 pour les connexions HTTPS.

Nous disposons d'un serveur Apache compiler par nos soins. Il utilise le fichier "conf/extra/httpd-ssl.conf" pour définir le port de connexion HTTPS. Si vous ne disposez pas de se fichier il vous faut chercher où ce situe cette configuration. (probablement dans le httpd.conf)

 
# grep -lr "Listen 443" *

Un fois trouvé on édite ce fichier pour remplacer:

Listen 443

par:

Listen 8443

Enfin nous devons changer la configuration de nos vhosts comme par exemple:

<VirtualHost *:8443>
...
  SSLEngine on
  SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  SSLCertificateFile "/etc/chose/..."
  SSLCertificateKeyFile "/etc/truc/..."

</VirtualHost *:8443>

Pour que nos modification soit prise en compte on redémarre le service httpd.

# service httpd restart

On démarre aussi tôt SSLH

# service sslh start

Créaction d'un fichier de log pour SSLH

SSLH envoi ses logs de connexion par le protocole syslog. Pour plus de lisibilité nous allons donc configurer notre démon syslog pour qui dirige les logs de sslh dans un fichier dédié.

Nous utilisons rsyslog et voici notre filtre:

# echo "# sslh log file" >> /etc/rsyslog.conf
# echo -e ":programname, isequal, "sslh"		 /var/log/sslh.log" >> /etc/rsyslog.conf

Puis on relance le démon rsyslog:

# service rsyslog restart

Si vous avez un grand nombre de connexion SSL/SSH il peux être intéressent d'effectuer une rotation sur ce fichier:

echo "/var/log/sslh {
    weekly
    notifempty
    missingok
}" > /etc/logrotate.d/sslh

Et si tous se passe bien, vous devriez trouver dans vos logs quelque chose comme suit.

# tail /var/log/sslh.log
Mar 17 00:38:22 csbjix sslh[21726]: connection from x.x.x.x:42395 forwarded to SSL
Mar 17 16:45:27 csbjix sslh[21726]: connection from y.y.y.y:16112 forwarded to SSH

Amusez vous bien !

NB: Cette article fait suite à la découverte de SSLH sur le site de notre ami bloggeur, Billux13. Si vous utilisez Debian et Lighttpd je vous invite a consulter son article.

Vus : 953
Publié par System Linux : 211