Installation d'un serveur Stunnel sur Debian Lenny

1. Installez le paquet (la version proposée par Lenny est la 4.22) :

aptitude install stunnel4

2. Le cas échéant, définissez un sous-domaine sur votre serveur DNS et associez-lui un certificat numérique. Ce certificat sera utilisé par Stunnel pour établir une connexion SSL avec le client. Vous pouvez définir un certificat de serveur autosigné ou créer un certificat d'autorité de certification (CA), puis l'utiliser pour signer des certificats de serveur et de client. Pour en savoir plus, voir ce document.

Ici, je crée une clé de serveur, que je signe ensuite avec mon certificat de CA en utilisant un fichier de configuration OpenSSL :

openssl req -new -nodes \
  -out stunnel.exemple.fr-req.pem 
  -keyout stunnel.exemple.fr-key.pem 
  -days 1825 -config ./openssl.cnf

openssl ca -out stunnel.exemple-fr-cert.pem \
  -days 1825 -config ./openssl.cnf \
  -infiles stunnel.exemple.fr-req.pem

3. Modifiez le fichier de configuration de Stunnel (/etc/stunnel/stunnel.conf) :

Indiquez le chemin des fichiers du certificat et de la clé privée :

cert = /etc/stunnel/stunnel.exemple.fr-cert.pem
key = /etc/stunnel/stunnel.exemple.fr-key.pem

Activez le débogage et l'affichage d'info dans un fichier journal, ça aide à diagnostiquer :

debug = 7
output = /var/log/stunnel4/stunnel.log

Définissez un ou plusieurs services, au format ci-dessous, et désactivez les services inutiles :

[Nom]
accept  = ip:port
connect = ip:port

accept : interface et port auxquels Stunnel écoute. connect : adresse IP et port vers lesquels les connexions sont renvoyées. Si l'adresse IP n'est pas précisée, c'est l'adresse 127.0.0.1 qui est utilisée.

Activez le démarrage du serveur dans le fichier /etc/default/stunnel4 :

ENABLED=1

Démarrez le serveur et vérifiez qu'il écoute sur les ports définis avec les paramètres accept :

/etc/init.d/stunnel4 start
tail -10 /var/log/stunnel4/stunnel.log
...
netstat -tan | grep LISTEN
...

Filtrage des connexions avec TCP Wrapper

La version de Stunnel proposée dans Debian Lenny est compatible avec TCP Wrapper. Pour sécuriser l'accès au serveur Stunnel, on peut donc définir les adresses IP/domaines autorisés et interdits dans /etc/hosts.allow et /etc/hosts.deny :

Dans /etc/hosts.deny :

ALL: ALL

Dans /etc/hosts.allow :

service: .exemple.fr

Ici service doit correspondre au nom d'un service défini dans /etc/stunnel/stunnel.conf. Pour en savoir plus, voir la FAQ de Stunnel.

Installation de Stunnel sur Windows 2000

Récupérez la dernière version de Stunnel sur le site du projet. Le programme d'installation pour Windows installe l'exécutable et les bibliothèques OpenSSL nécessaires. J'ai testé avec la version 4.29.

Modifiez le fichier de configuration (menu Démarrer > stunnel > Edit stunnel.conf). Ce fichier est utilisé en mode client comme en mode serveur.

  • Désactivez les services inutiles en fin de fichier.
  • Activez le mode client (client = yes).

Vous pouvez lancer manuellement Stunnel (menu Démarrer > stunnel > Run Stunnel) ou l'installer comme service Windows (menu Démarrer > stunnel > Service install).

Pour suivre ce qui se passe : lancez Stunnel, cliquez avec le bouton droit sur l'icône qui apparaît dans la barre des tâches, puis choisissez Log. La fenêtre qui apparaît présente les messages du journal des connexions.

Documentation