DeStunneltool kan worden gebruikt als proxyservice om een veilige TLS-tunnel te creëren voor client-server-netwerkapps die zelf geen codering ondersteunen. In sommige gevallen verdient het de voorkeur om deze tool te gebruiken om de toegang op afstand tot een enkele app (dienst) te beveiligen in plaats van een volledige VPN-oplossing te implementeren.
DeStunnelservice kan worden uitgevoerd in server- of clientmodus. In de clientmodus ontvangt Stunnel verkeer van de client-app, codeert het en stuurt het vervolgens naar de server. Verkeer wordt gedecodeerd op deStunnel serverzijdeen vervolgens verzonden naar de doel-app of -service. Het belangrijkste is dat de beheerderhoeft het client- of servergedeelte van de app niet te wijzigen.Certificatenkan worden gebruikt voor clientauthenticatie. Stunnel wordt ondersteund voor zowel Windows als Linux.
Laten we eens kijken hoe we stunnel kunnen gebruiken om veilige toegang tussen de client en de server te creëren. In dit voorbeeld is de server een Windows-host met een IIS-webserver waarop een niet-gecodeerde HTTP-site draait. De taak is om de toegang tot deze website te beperken voor clients met certificaatauthenticatie en om verkeersversleuteling in te schakelen.
Stunnel Server configureren op Windows
Download het Stunnel-installatieprogramma voor Windows vanhttps://www.stunnel.org/downloads.htmlen installeer het met de standaardinstellingen, inclusiefopenssl.

De volgende stap is het genereren van sleutels en certificaten voor de CA, server en clients. Open een opdrachtprompt en navigeer naar de map:
cd "c:Program Files (x86)stunnelbin"
CA-sleutel genereren:
openssl genpkey -algorithm RSA -out ca.key
In dit geval gebruiken we geen wachtwoordzin om de privésleutel van het certificaat te beschermen.
Maak een CA-certificaat:
openssl req -new -x509 -key ca.key -out ca.crt -subj "/O=woshubLTD/OU=IT/CN=CA_webserver1.com"
Voeg informatie over het certificaat toe in hetonderwveld voor gemakkelijke identificatie.
Maak een privésleutel voor de server:
openssl genpkey -algorithm RSA -out server.key
Maak een certificaatondertekeningsverzoek (CSR):
openssl req -key server.key -new -out server.csr
Gebruik de root-CA om het servercertificaat te ondertekenen.
Aanbevolen lees:Netwerkmonitor: netwerkverkeer op Windows vastleggen en analyseren
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -subj "/O=woshubLTD/OU=IT/CN=server_webserver1.com"
Maak nu een privésleutel voor de client:
openssl genpkey -algorithm RSA -out client.key
Genereer een aanvraag voor een clientcertificaat:
openssl req -key client.key -new -out client.csr
Onderteken het clientcertificaat:
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365 -subj "/O=woshubLTD/OU=IT/CN=client1_webserver1.com"
Kopieer op de webserver hetca.crt, server.crt, Enserver.sleutelbestanden naar deC:Program Files (x86)stunnelconfigmap.


Bewerk het bestand stunnel.conf (u kunt de standaardinstellingen wissen) en voeg de volgende configuratie toe:
; Write logs to stunnel.log debug = info output = 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_PREFERENCE options = NO_SSLv2 options = NO_SSLv3 options = NO_TLSv1 sslVersion = TLSv1.2 sslVersion = TLSv1.3 ciphers = ECDHE-RSA-AES256-GCM-SHA384 ; names (paths) to certificate files cert = server.crt key = server.key CAfile = 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
Zorg ervoor dat deaccepterenregel bevat een poortnummer dat niet door een ander Windows-proces wordt gebruikt.
Open de opgegeven poort in Windows Defender Firewall om inkomende verbindingen toe te staan. U kunt een firewallregel maken met PowerShell.
New-NetFirewallRule -DisplayName "ITPoral_stunnel_443" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow
Blokkeer externe verbindingen met de onveilige TCP-poort 80 op router- of firewallniveau.
LoopStunnel.exeen controleer de GUI-logboeken om er zeker van te zijn dat uw configuratie geen fouten bevat. Dankzij de grafische interface kan het configuratiebestand snel opnieuw worden gelezen en kunnen de foutlogboeken onmiddellijk worden bekeken, wat het debuggen eenvoudiger maakt.
1

Sluit de GUI van stunnel.exe door op Beëindigen in het menu te klikken en start stunnel vervolgens als een Windows-service. Voer de opdracht uit:
"C:Program Files (x86)stunnelbinstunnel.exe" -install "C:Program Files (x86)stunnelconfigstunnel.conf"
DeStunnel TLS-wikkelaardienst zal worden gecreëerd. Begin ermee:
Start-Service wrapper
Het stunnel-proces luistert op poort 443 zodra het is gestart.


Stunnel Client-configuratievoorbeeld op Windows
Installeer vervolgens stunnel vanuit dezelfde distributie op declient Windows-apparaat. Kopieer vervolgens deca. krt,klant.crt, Enklant.sleutelbestanden van de server naar deC:Program Files (x86)stunnelconfigmap.
Voeg het volgende toe aan het configuratiebestand 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 to connect = 192.168.158.144:443 ; certificate paths CAfile = ca.crt cert = client.crt key = client.key ; Certificates must be checked explicitly when establishing a connection. verify=2
Sla het configuratiebestand op. Voer Stunnel eerst handmatig uit en controleer de logboeken op fouten. Wanneer u nu toegang krijgt tot het adreslocalhost:8080vanuit de browser zal Stunnel de verbinding omleiden naar de externe server.


Voor uw gemak kunt u certificaten en sleutels combineren in één bestand. Bijvoorbeeld:
Get-Content client.key, client.crt | Set-Content client.pem
Geef in dit geval alleen het volgende op in het stunnel-configuratiebestand:
cert = client1.pem
Als alles naar behoren werkt, kunt u stunnel als service op een client uitvoeren.
stunnel.exe -install


Om certificaten (bijvoorbeeld gecompromitteerde certificaten) in te trekken, voegt u deCRLpadoptie voor de stunnel-serverconfiguratie. Geef het pad op naar de map waar de ingetrokken certificaten (Certificate Revocation Lists) in PEM-indeling zijn opgeslagen.
Je kunt ook gebruik maken van deCApadoptie om de locatie op te geven van de map die de toegestane certificaten bevat.












