Cryptez tout trafic d'application client-serveur sur Windows avec Stunnel

/fr/images/install-stunnel-on-windows.png

L’outil Stunnel peut être utilisé comme service proxy pour créer un tunnel TLS sécurisé pour les applications réseau client-serveur qui ne prennent pas en charge le cryptage eux-mêmes. Dans certains cas, il est préférable d’utiliser cet outil pour sécuriser l’accès à distance à une seule application (service) plutôt que d’implémenter une solution VPN complète.

Le

Étourdissement

Le service peut être exécuté en mode serveur ou client. En mode client, Stunnel reçoit le trafic de l’application client, le chiffre, puis l’envoie au serveur. Le trafic est décrypté sur le

Side de serveur Stunnel

puis envoyé à l’application ou service cible. L’important est que l’administrateur

n’a pas besoin de modifier le client ni la partie serveur de l’application.

Certificats

peut être utilisé pour l’authentification du client. Stunnel est pris en charge pour les fenêtres et les Linux.

Voyons comment utiliser Stunnel pour créer un accès sécurisé entre le client et le serveur. Dans cet exemple, le serveur est un hôte Windows avec un serveur Web IIS exécutant un site HTTP non crypté. La tâche consiste à restreindre l’accès à ce site Web à des clients avec une authentification de certificat et à permettre le cryptage du trafic.

Configuration du serveur Stunnel sur Windows

Téléchargez l’installateur Stunnel pour Windows depuis https://www.stunnel.org/downloads.html et installez-le avec les paramètres par défaut, y compris `OpenSSL ‘.

/fr/images/install-stunnel-on-windows.png

L’étape suivante consiste à générer des clés et des certificats pour le CA, le serveur et les clients. Ouvrez une invite de commande et accédez au répertoire:

CD" C: \ Program Files (x86) \ Stunnel \ bin "

Générer une clé CA:

OpenSSL Genpkey-Algorithm RSA-Out Ca.Key

Dans ce cas, nous n’utilisons pas de phrase de mot de passe pour protéger la clé privée du certificat.

Créer un certificat CA:

OpenSSL req-new-x509-key ca.key-ut CA.crt-subj" /o=woshubltd/ou=it/cn=ca\_webserver1.com "

Ajoutez des informations sur le certificat dans le champ Subj pour une identification facile.

Créez une clé privée pour le serveur:

OpenSSL GenPkey-Algorithm RSA-Out Server.Key

Créer une demande de signature de certificat (CSR):

OpenSSL req-key server.key-new-out server.csr

Utilisez le Root CA pour signer le certificat de serveur.

OpenSSL x509-req-in server.csr-ca CA.Crt-Cakey CA.Key-CacReateSeRerial-out Server.Crt-Days 365-Subj" /o=Woshubltd/ou=it/cn=server\_webserver1.com " `’'

Maintenant, créez une clé privée pour le client:

OpenSSL GenPkey-Algorithm RSA-Out Client.Key

Générer une demande de certificat client:

OpenSSL req-key client.key-new-out client.csr

Signer le certificat client:

OpenSSL x509-req-in client.csr-ca CA.Crt-Cakey CA.Key-CacreateSeRerial-out Client.Crt-Days 365-Subj" /o=Woshubltd/ou=it/cn=Client1\_webserver1.com " `''

Sur le serveur Web, copiez les fichiers CA.crt, server.crt et server.key dans le dossier C: \ Program Files (x86) \ Stunnel \ config.

/fr/images/generate-stunnel-certificates.png

Modifiez le fichier Stunnel.conf (vous pouvez effacer les paramètres par défaut) et ajouter la configuration suivante:


; Write logs to stunnel.logdebug = infooutput = stunnel.log; Strong encryption settings. We assume that both devices have modern CPUs that support AES hardware acceleration. If such encryption settings cause server performance degradation under heavy traffic, you can simplify them.options = CIPHER_SERVER_PREFERENCEoptions = NO_SSLv2options = NO_SSLv3options = NO_TLSv1sslVersion = TLSv1.2sslVersion = TLSv1.3ciphers = ECDHE-RSA-AES256-GCM-SHA384; names (paths) to certificate filescert = server.crtkey = server.keyCAfile = ca.crt; This section contains the configuration of the service that the client will access via Stunnel.ITPoral; This is the IP address and port on which the Stunnel instance should listen for connections.accept = 192.168.158.144:443; or accept = 443; The IP address and port of the service to which the connection should be redirected. In our case, this is a local HTTP site.connect = 127.0.0.1:80; or connect = 80; Always check the remote computer's client certificate. Clients without a certificate will not be able to connect to the service.verify=2

Ouvrez le port spécifié dans le pare-feu de Windows Defender pour permettre des connexions entrantes. Vous pouvez créer une règle de pare-feu avec PowerShell.

New-NetfireWallrule-DisplayName" ITPORAL\_STUNNEL\_443 "-Direction INBOUND-Localport 443-Protocol TCP-Action Autoriser

Bloquer les connexions externes au port TCP non sécurisé 80 au niveau du routeur ou du pare-feu.

Exécutez «Stunnel.exe» et vérifiez les journaux de l’interface graphique pour vous assurer que votre configuration ne contient pas d’erreurs. L’interface graphique permet à READ REAUT-RE-REAUX le fichier de configuration et à afficher immédiatement les journaux d’erreur, ce qui facilite le débogage.

1 /fr/images/stunnel-server-connection-log-on-windows.png

Fermez l’interface graphique Stunnel.exe en cliquant sur terminer dans le menu, puis démarrez Stunnel en tant que service Windows. Exécutez la commande:

" C: \ Program Files (x86) \ Stunnel \ bin \ Stunnel.exe "-install" C: \ Program Files (x86) \ Stunnel \ Config \ Stunnel.Conf " `

Le service d’emballage Stunnel TLS sera créé. Démarrez-le:

«Emballage de service de démarrage»

Le processus Stunnel écoute le port 443 une fois qu’il est démarré.

/fr/images/install-stunnel-tls-wrapper-service-on-windows.png

Exemple de configuration du client Stunnel sur Windows

Ensuite, installez Stunnel à partir de la même distribution sur l’appareil Windows client. Copiez ensuite les fichiers CA.crt, client.crt et client.key du serveur vers le dossier C: \ Program Files (x86) \ Stunnel \ config.

Ajoutez ce qui suit au fichier de configuration Stunnel.Conf:


ITPoral; Run Stunnel in the client mode.client = yes; Specify the IP address and TCP port through which your service will be accessible to your clients.accept = localhost:8080; the address of the stunnel server to redirect connections toconnect = 192.168.158.144:443; certificate pathsCAfile = ca.crtcert = client.crtkey = client.key; Certificates must be checked explicitly when establishing a connection.verify=2

Enregistrez le fichier de configuration. Tout d’abord, exécutez Stunnel manuellement et vérifiez les journaux pour les erreurs. Maintenant, lorsque vous accédez à l’adresse «LocalHost: 8080» à partir du navigateur, Stunnel redirigera la connexion vers le serveur distant.

/fr/images/stunnel-redirect-traffic-by-creating-a-secure-tls.png

Pour plus de commodité, vous pouvez combiner des certificats et des clés en un seul fichier. Par exemple:

Get-Content Client.key, client.crt | Set-content client.pem

Dans ce cas, spécifiez uniquement les éléments suivants dans le fichier de configuration Stunnel:


cert = client1.pem

Si tout fonctionne correctement, vous pouvez exécuter Stunnel sur un client en tant que service.

`stunnel.exe-stall '

/fr/images/stunnel-exe-install-run-client-on-windows.png

Pour révoquer les certificats (par exemple, les compromis), ajoutez l’option CRLPATH à la configuration du serveur Stunnel. Spécifiez le chemin d’accès au dossier où les certificats révoqués (listes de révocation des certificats) au format PEM sont stockés.

Vous pouvez également utiliser l’option Capath pour spécifier l’emplacement du dossier contenant les certificats autorisés.

  • ️⃣ Lien source:

https://www.stunnel.org/downloads.html, créez une règle de pare-feu avec PowerShell,