Configurer stunnel

stunnel

 

Le programme stunnel permet de chiffrer des connexions TCP en SSL (Secure Sockets Layer). Il peut donc aussi aider à passer les règles firewall. On peut par exemple, passer une connexion VPN dans stunnel  tant que le protocol utilisé est en TCP. Voici un exemple de configuration :

Installation et configuration serveur (Debian/Ubuntu)

Installation sous Debian/Ubuntu

apt install stunnel

Après avoir installé le programme stunnel, nous allons configurer le service permettant de chiffrer le flux.

Pour cela, créer un fichier de configuration

touch /etc/stunnel/services.conf

Editer le fichier /etc/stunnel/services.conf puis ajouter les lignes suivantes :

cert = /etc/stunnel/stunnel.pem ;Certificat que l'on va générer plus tard
CAfile = /etc/stunnel/stunnel.pem ;CA du Certificat que l'on va générer plus tard
verify = 3 ;Type de vérification du certificat (voir la doc pour plus détails)

;Définition des Services
[Telnet]
accept = Mon_IP_Public:Numero_De_Port ;Le numéro port du routeur sur le quel on souhaite envoyer le trafic
connect = 127.0.0.1:23 ;Adresse IP et port du service aux quel on souhaite se connecter (dans cette exemple ça sera telnet)

Lancer stunnel sur le serveur

systemctl restart stunnel4.service

Ne pas oublier de vérifier que le firewall accepte les connexions sur l’ip et le port qui ont été configurés.

 

Installation et configuration client (Debian/Ubuntu/Windows)

Debian/Ubuntu Client

apt install stunnel

créer un fichier de configuration

touch /etc/stunnel/services.conf

Editer le fichier /etc/stunnel/services.conf puis ajouter les lignes suivantes :

client = yes ;Indique qu'il s'agit du client
cert = /etc/stunnel/stunnel.pem ;Certificat que l'on va générer plus tard
CAfile = /etc/stunnel/stunnel.pem ;CA du Certificat que l'on va générer plus tard
verify = 3 ;Type de vérification du certificat (voir la doc pour plus détails)

##Définition des Services##
[Telnet] ;Nom du Service
accept = 127.0.0.1:23 ;Adresse et port sur lesquels le client telnet se connectera sur la machine cliente afin de passer dans le tunnel
connect = Mon_IP_Public:Numero_De_Port ;L'addresse IP et le numéro port du routeur sur le quel on souhaite envoyer le trafic

 

Windows

Télécharger stunnel

Lancer l’installeur puis suivre les instructions de l’assistant d’installation

Créer un fichier de configuration C:\Program Files (x86)\stunnel\config\services.conf

Puis ajouter les lignes suivantes :

client = yes
cert = stunnel.pem
CAfile = stunnel.pem
verify = 3

;##Définition des Services##
[Telnet]
accept = 127.0.0.1:45000
connect = Mon_IP_Public:Numero_De_Port

Génération des certificats

Il faut au préalable avoir installé OpenSSL

Création de l’arborescence

mkdir CA
cd CA
mkdir newcerts private
echo '01' > serial
touch index.txt

Création du fichier de configuration openssl.cnf

[ req ]
default_bits = 4096 # Size of keys
default_keyfile = key.pem # name of generated keys
default_md = sha512 # message digest algorithm
string_mask = nombstr # permitted characters
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
# Ces valeurs apparaitront au Prompt
#---------------------- ----------------------------------
0.organizationName = Remplir-a-votre-convenance
organizationalUnitName = Remplir-a-votre-convenance
emailAddress = Remplir-a-votre-convenance
emailAddress_max = 40
localityName = Remplir-a-votre-convenance
stateOrProvinceName = Remplir-a-votre-convenance
countryName = Remplir-a-votre-convenance
countryName_min = 2
countryName_max = 2
commonName = FQDN-ou-Adresse-IP-de-votre-server
commonName_max = 64

# Valeurs par défaut que l'on peut modifier.
#------------------------------ ------------------------------
0.organizationName_default = Remplir-a-votre-convenance
localityName_default = Remplir-a-votre-convenance
stateOrProvinceName_default = Remplir-a-votre-convenance
countryName_default = Remplir-a-votre-convenance

[ v3_ca ]
basicConstraints = CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always,issuer:always

Génération du CA root

openssl req -new -x509 -extensions v3_ca -keyout private/cakey.pem -out cacert.pem -days 3650 -config ./openssl.cnf

Vérification des paramètres

openssl x509 -in cacert.pem -noout -text
openssl x509 -in cacert.pem -noout -dates
openssl x509 -in cacert.pem -noout -purpose

Génération du certificat que l’on va placer sur le client et le serveur

openssl req -new -days 365 -nodes -config openssl.cnf -out stunnel.pem -x509 -keyout stunnel.pem

Afin de tester la connexion, lancer un client telnet puis saisir les paramètres correspondants à la configuration. dans notre cas il s’agit de 127.0.0.1:45000.

Voici un exemple de log sur le client :

021.07.27 10:49:38 LOG5[2]: Service [Telnet] accepted connection from 127.0.0.1:9716
2021.07.27 10:49:38 LOG5[2]: s_connect: connected Mon_IP_Public:Numero_De_Port
2021.07.27 10:49:38 LOG5[2]: Service [Telnet] connected remote server from 10.8.8.1:9717
2021.07.27 10:49:38 LOG5[2]: Certificate accepted at depth=0: O=TZA, L=City, ST=STATE, C=CO
2021.07.27 10:49:41 LOG5[3]: Service [Telnet] accepted connection from 127.0.0.1:9719
2021.07.27 10:49:41 LOG5[3]: s_connect: connected Mon_IP_Public:Numero_De_Port
2021.07.27 10:49:41 LOG5[3]: Service [Telnet] connected remote server from 10.8.8.1:9720

 

 

About Author


AMG

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.