<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=OPNsense_-_Stunnel-Plugin</id>
	<title>OPNsense - Stunnel-Plugin - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=OPNsense_-_Stunnel-Plugin"/>
	<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=OPNsense_-_Stunnel-Plugin&amp;action=history"/>
	<updated>2026-10-09T01:20:38Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in maxTechCorner</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://techcorner.max-it.de/index.php?title=OPNsense_-_Stunnel-Plugin&amp;diff=3982&amp;oldid=prev</id>
		<title>imported&gt;TechCorner-Redaktion: Verlinkung auf den Artikel OPNsense - ACME-Client für Let&#039;s Encrypt-Zertifikate ergänzt</title>
		<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=OPNsense_-_Stunnel-Plugin&amp;diff=3982&amp;oldid=prev"/>
		<updated>2026-10-08T00:00:00Z</updated>

		<summary type="html">&lt;p&gt;Verlinkung auf den Artikel OPNsense - ACME-Client für Let&amp;#039;s Encrypt-Zertifikate ergänzt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Steckbrief&lt;br /&gt;
| gilt_fuer   = OPNsense 26.1/26.7 mit Plugin os-stunnel (Plugin-Version 1.0.6)&lt;br /&gt;
| bereich     = IT-Security&lt;br /&gt;
| dauer       = ca. 15 Minuten pro Tunnel&lt;br /&gt;
| rechte      = Administrator (OPNsense-WebUI)&lt;br /&gt;
| stand       = Oktober 2026&lt;br /&gt;
}}&lt;br /&gt;
Mit dem Plugin &amp;#039;&amp;#039;&amp;#039;os-stunnel&amp;#039;&amp;#039;&amp;#039; wird OPNsense zum &amp;#039;&amp;#039;&amp;#039;TLS-Proxy&amp;#039;&amp;#039;&amp;#039;: Stunnel nimmt unverschlüsselte TCP-Verbindungen entgegen und leitet sie verschlüsselt weiter – oder umgekehrt. So lassen sich Protokolle wie &amp;#039;&amp;#039;&amp;#039;POP3, LDAP, SMTP oder IMAP nachträglich mit TLS absichern&amp;#039;&amp;#039;&amp;#039;, ohne die beteiligten Programme oder Geräte zu verändern. Typische Einsatzfälle sind ältere Anwendungen, Multifunktionsdrucker, Maschinensteuerungen oder Fachsoftware, die nur Klartextprotokolle beherrschen, aber mit Servern sprechen müssen, die heute verschlüsselte Verbindungen verlangen.&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel erklärt die Funktionsweise des Plugins, seine Einstellungen und vier praktische Anwendungsfälle.&lt;br /&gt;
&lt;br /&gt;
== Was ist Stunnel? TLS für Programme ohne TLS ==&lt;br /&gt;
[https://www.stunnel.org/ Stunnel] ist ein seit vielen Jahren etablierter Open-Source-Proxy, der beliebige TCP-Verbindungen in [[TLS]] einpackt. Er arbeitet in zwei Richtungen:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Modus !! Stunnel nimmt an … !! … und leitet weiter als !! Typischer Zweck&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Server-Modus&amp;#039;&amp;#039;&amp;#039; (Standard) || TLS-Verbindungen von Clients || Klartext an den internen Dienst || Einem alten Server einen verschlüsselten Zugang voranstellen (z. B. POP3 → POP3S)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Client-Modus&amp;#039;&amp;#039;&amp;#039; || Klartext-Verbindungen von internen Geräten || TLS an den Zielserver || Alten Clients Zugriff auf Server ermöglichen, die nur noch TLS akzeptieren (z. B. LDAP → LDAPS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann Stunnel &amp;#039;&amp;#039;&amp;#039;STARTTLS&amp;#039;&amp;#039;&amp;#039; aushandeln: Bei Protokollen wie POP3, IMAP, SMTP oder LDAP beginnt die Verbindung im Klartext auf dem Standardport und wird dann per Befehl auf TLS umgeschaltet. Stunnel übernimmt diesen Protokollschritt, wenn im Plugin das passende &amp;#039;&amp;#039;&amp;#039;Protocol&amp;#039;&amp;#039;&amp;#039; gewählt ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:OPNsense-Stunnel-Anwendungsfaelle.png|thumb|center|750px|Stunnel auf OPNsense: Im Server-Modus erhält ein alter POP3-Server einen verschlüsselten POP3S-Zugang, im Client-Modus erreicht ein Altgerät per Klartext-LDAP den Domain Controller über LDAPS.]]&lt;br /&gt;
&lt;br /&gt;
== Das Plugin os-stunnel in OPNsense ==&lt;br /&gt;
=== Installation ===&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;System → Firmware → Plugins&amp;#039;&amp;#039;&amp;#039; öffnen, nach &amp;#039;&amp;#039;stunnel&amp;#039;&amp;#039; suchen und &amp;#039;&amp;#039;&amp;#039;os-stunnel&amp;#039;&amp;#039;&amp;#039; installieren.&lt;br /&gt;
# Die Konfiguration befindet sich anschließend unter &amp;#039;&amp;#039;&amp;#039;VPN → Stunnel → Configuration&amp;#039;&amp;#039;&amp;#039;, das Protokoll unter &amp;#039;&amp;#039;&amp;#039;VPN → Stunnel → Log File&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Zertifikate vorbereiten ===&lt;br /&gt;
Jeder Tunnel benötigt ein Zertifikat aus &amp;#039;&amp;#039;&amp;#039;System → Trust&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Öffentlich erreichbare Dienste&amp;#039;&amp;#039;&amp;#039; (z. B. POP3S für Mail-Clients): ein Zertifikat einer öffentlichen CA, idealerweise automatisch per [[ACME]]/[[Let&amp;#039;s Encrypt]] über das Plugin [[OPNsense - ACME-Client für Let&amp;#039;s Encrypt-Zertifikate|os-acme-client]] bezogen. Mail-Programme vertrauen diesem Zertifikat ohne weitere Verteilung.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Interne Tunnel und gegenseitige Authentifizierung&amp;#039;&amp;#039;&amp;#039; ([[Mutual TLS]]): eine interne CA unter &amp;#039;&amp;#039;System → Trust → Authorities&amp;#039;&amp;#039; anlegen und daraus Server- und Client-Zertifikate ausstellen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Client-Modus mit Prüfung des Zielservers:&amp;#039;&amp;#039;&amp;#039; die CA des Zielservers (z. B. die Root-CA der Microsoft-Zertifizierungsstelle oder die öffentliche Root-CA des Providers) unter &amp;#039;&amp;#039;System → Trust → Authorities&amp;#039;&amp;#039; importieren.&lt;br /&gt;
&lt;br /&gt;
=== Die Einstellungen eines Tunnels ===&lt;br /&gt;
Unter &amp;#039;&amp;#039;&amp;#039;VPN → Stunnel → Configuration&amp;#039;&amp;#039;&amp;#039; wird im Reiter &amp;#039;&amp;#039;&amp;#039;Services&amp;#039;&amp;#039;&amp;#039; mit &amp;#039;&amp;#039;&amp;#039;+&amp;#039;&amp;#039;&amp;#039; ein neuer Tunnel angelegt:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feld !! Bedeutung&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;enabled&amp;#039;&amp;#039;&amp;#039; || Tunnel aktivieren.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Listen address&amp;#039;&amp;#039;&amp;#039; || Adresse, auf der Stunnel lauscht. Standard ist &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; – der sicherste Wert; Zugriffe werden dann per Destination NAT dorthin geleitet. Alternativ eine feste Schnittstellen-IP (z. B. die LAN-Adresse).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Listen port&amp;#039;&amp;#039;&amp;#039; || Port, auf dem Verbindungen angenommen werden.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Target hostname&amp;#039;&amp;#039;&amp;#039; / &amp;#039;&amp;#039;&amp;#039;Target port&amp;#039;&amp;#039;&amp;#039; || Ziel, an das Stunnel weiterleitet.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Protocol&amp;#039;&amp;#039;&amp;#039; || Optional: STARTTLS-Aushandlung für &amp;#039;&amp;#039;&amp;#039;IMAP, LDAP, NNTP, POP3&amp;#039;&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;&amp;#039;SMTP&amp;#039;&amp;#039;&amp;#039;. &amp;#039;&amp;#039;&amp;#039;Leer lassen&amp;#039;&amp;#039;&amp;#039;, wenn TLS auf einem eigenen Port läuft (POP3S 995, IMAPS 993, SMTPS 465, LDAPS 636).&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Certificate&amp;#039;&amp;#039;&amp;#039; || Eigenes Zertifikat dieses Tunnels (Pflichtfeld). Im Server-Modus das Serverzertifikat, im Client-Modus das Zertifikat, mit dem sich Stunnel ggf. gegenüber dem Ziel ausweist.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;CA to validate connections to&amp;#039;&amp;#039;&amp;#039; || Ist eine CA gewählt, akzeptiert Stunnel nur Gegenstellen mit einem Zertifikat dieser CA (&amp;lt;code&amp;gt;requireCert&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;verifyChain&amp;lt;/code&amp;gt;). Im Server-Modus heißt das: Clients &amp;#039;&amp;#039;&amp;#039;müssen&amp;#039;&amp;#039;&amp;#039; ein Client-Zertifikat vorlegen. Im Client-Modus wird das Zertifikat des Zielservers geprüft.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;enable CRL&amp;#039;&amp;#039;&amp;#039; || Sperrlisten prüfen. Fehlt eine gültige CRL, werden alle Verbindungen abgelehnt.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Client mode&amp;#039;&amp;#039;&amp;#039; || Stunnel arbeitet als TLS-Client: Klartext annehmen, verschlüsselt weiterleiten.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Ciphers&amp;#039;&amp;#039;&amp;#039; || Erlaubte Verschlüsselungsverfahren. Voreingestellt sind ausschließlich moderne AEAD-Verfahren (AES-GCM, ChaCha20-Poly1305) mit TLS 1.2 und 1.3; ältere TLS-Versionen sind fest ausgeschlossen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Description&amp;#039;&amp;#039;&amp;#039; || Sprechende Beschreibung, z. B. &amp;#039;&amp;#039;POP3S für Altserver&amp;#039;&amp;#039;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Im Reiter &amp;#039;&amp;#039;&amp;#039;General&amp;#039;&amp;#039;&amp;#039; (ebenfalls unter &amp;#039;&amp;#039;VPN → Stunnel → Configuration&amp;#039;&amp;#039;) gibt es zwei globale Optionen:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;chroot service&amp;#039;&amp;#039;&amp;#039; – Stunnel in einer abgeschotteten Umgebung starten. Sicherer, aber nach einem Neustart des Syslog-Dienstes gehen Stunnel-Logmeldungen verloren, bis Stunnel neu gestartet wird.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;enable ident protocol&amp;#039;&amp;#039;&amp;#039; – ein Ident-Dienst (RFC 1413, Port 113), über den z. B. ein Proxy erfährt, welcher Zertifikatsinhaber (CN) hinter einer Stunnel-Verbindung steckt.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsfall 1: POP3 verschlüsseln – POP3S für einen alten Mailserver ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ausgangslage:&amp;#039;&amp;#039;&amp;#039; Ein älterer interner Mailserver bzw. eine Branchenlösung (&amp;lt;code&amp;gt;192.168.10.25&amp;lt;/code&amp;gt;) stellt Postfächer nur per unverschlüsseltem &amp;#039;&amp;#039;&amp;#039;POP3 (Port 110)&amp;#039;&amp;#039;&amp;#039; bereit. Mitarbeitende sollen ihre Mails auch von unterwegs abrufen – aber Passwörter dürfen keinesfalls im Klartext über das Internet laufen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lösung:&amp;#039;&amp;#039;&amp;#039; Stunnel im &amp;#039;&amp;#039;&amp;#039;Server-Modus&amp;#039;&amp;#039;&amp;#039; bietet nach außen &amp;#039;&amp;#039;&amp;#039;POP3S auf Port 995&amp;#039;&amp;#039;&amp;#039; an und leitet intern Klartext-POP3 an den Mailserver weiter.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feld !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Listen address / Listen port || &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;995&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Target hostname / Target port || &amp;lt;code&amp;gt;192.168.10.25&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;110&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Protocol || &amp;#039;&amp;#039;leer&amp;#039;&amp;#039; (POP3S = TLS ab dem ersten Byte)&lt;br /&gt;
|-&lt;br /&gt;
| Certificate || Let’s-Encrypt-Zertifikat für &amp;lt;code&amp;gt;mail.example.com&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CA to validate connections to || &amp;#039;&amp;#039;leer&amp;#039;&amp;#039; (Mail-Clients legen kein Client-Zertifikat vor)&lt;br /&gt;
|-&lt;br /&gt;
| Client mode || aus&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Anschließend unter &amp;#039;&amp;#039;&amp;#039;Firewall → NAT → Destination NAT&amp;#039;&amp;#039;&amp;#039; eine Regel anlegen: Interface &amp;#039;&amp;#039;WAN&amp;#039;&amp;#039;, Protokoll &amp;#039;&amp;#039;TCP&amp;#039;&amp;#039;, Ziel &amp;#039;&amp;#039;WAN address&amp;#039;&amp;#039;, Port &amp;#039;&amp;#039;995&amp;#039;&amp;#039;, Weiterleitung an &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; Port &amp;lt;code&amp;gt;995&amp;lt;/code&amp;gt; (mit zugehöriger Filterregel). In Outlook, Thunderbird oder auf dem Smartphone wird dann &amp;lt;code&amp;gt;mail.example.com&amp;lt;/code&amp;gt;, Port 995, &amp;#039;&amp;#039;SSL/TLS&amp;#039;&amp;#039; eingetragen.&lt;br /&gt;
&lt;br /&gt;
Der direkte Zugriff auf Port 110 von außen bleibt gesperrt. Dasselbe Prinzip funktioniert für &amp;#039;&amp;#039;&amp;#039;IMAP → IMAPS (993)&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;SMTP-Submission → SMTPS (465)&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Stunnel schützt nur die Strecke zwischen Client und Firewall. Zwischen Firewall und Mailserver läuft weiterhin Klartext – dieser Abschnitt sollte daher in einem vertrauenswürdigen Netzsegment liegen. Mittelfristig gehört ein Mailserver, der kein TLS beherrscht, ersetzt; Stunnel ist eine saubere Brücke bis dahin.}}&lt;br /&gt;
&lt;br /&gt;
=== Variante: POP3-Abruf eines Altgeräts beim Provider ===&lt;br /&gt;
Umgekehrt kommt es oft vor, dass ein &amp;#039;&amp;#039;&amp;#039;Gerät oder eine Fachanwendung im LAN&amp;#039;&amp;#039;&amp;#039; Mails per POP3 bei einem externen Provider abholen muss, dieser aber nur noch &amp;#039;&amp;#039;&amp;#039;POP3S (995)&amp;#039;&amp;#039;&amp;#039; anbietet. Dann arbeitet Stunnel im &amp;#039;&amp;#039;&amp;#039;Client-Modus&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Listen address/port:&amp;#039;&amp;#039;&amp;#039; LAN-Adresse der Firewall, z. B. &amp;lt;code&amp;gt;192.168.10.1&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;110&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Target:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;pop.provider.de&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;995&amp;lt;/code&amp;gt;, &amp;#039;&amp;#039;&amp;#039;Client mode&amp;#039;&amp;#039;&amp;#039; aktiv, &amp;#039;&amp;#039;&amp;#039;Protocol&amp;#039;&amp;#039;&amp;#039; leer&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CA to validate connections to:&amp;#039;&amp;#039;&amp;#039; die öffentliche Root-CA des Providers (importiert unter &amp;#039;&amp;#039;System → Trust&amp;#039;&amp;#039;)&lt;br /&gt;
* Im Gerät als POP3-Server &amp;lt;code&amp;gt;192.168.10.1&amp;lt;/code&amp;gt;, Port 110, ohne Verschlüsselung eintragen und unter &amp;#039;&amp;#039;Firewall → Rules&amp;#039;&amp;#039; auf dem LAN-Interface nur diesem Gerät den Zugriff auf Port 110 der Firewall erlauben.&lt;br /&gt;
Bietet der Provider stattdessen POP3 mit STARTTLS auf Port 110 an, als Ziel Port &amp;lt;code&amp;gt;110&amp;lt;/code&amp;gt; und als &amp;#039;&amp;#039;&amp;#039;Protocol&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;POP3&amp;#039;&amp;#039; wählen.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsfall 2: LDAP verschlüsseln – Altgeräte an Active Directory anbinden ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ausgangslage:&amp;#039;&amp;#039;&amp;#039; Multifunktionsdrucker (Adressbuch, Scan-to-Mail-Anmeldung), ältere NAS-Systeme, Telefonanlagen oder Eigenentwicklungen fragen Benutzer per &amp;#039;&amp;#039;&amp;#039;LDAP auf Port 389 im Klartext&amp;#039;&amp;#039;&amp;#039; beim [[Active Directory]] ab – inklusive Passwort bei der Anmeldung (&amp;#039;&amp;#039;Simple Bind&amp;#039;&amp;#039;). Das ist doppelt problematisch: Passwörter lassen sich im Netz mitlesen, und aktuelle Domain Controller lehnen unsignierte Klartext-Anmeldungen zunehmend ab (LDAP-Signing und Channel Binding, bei neuen Windows-Server-Versionen standardmäßig verschärft). LDAPS beherrschen viele dieser Geräte nicht oder nur mit veralteten TLS-Versionen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lösung:&amp;#039;&amp;#039;&amp;#039; Stunnel im &amp;#039;&amp;#039;&amp;#039;Client-Modus&amp;#039;&amp;#039;&amp;#039; nimmt die Klartext-LDAP-Anfragen der Geräte entgegen und spricht mit dem Domain Controller ausschließlich &amp;#039;&amp;#039;&amp;#039;LDAPS (Port 636)&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feld !! Wert&lt;br /&gt;
|-&lt;br /&gt;
| Listen address / Listen port || &amp;lt;code&amp;gt;192.168.30.1&amp;lt;/code&amp;gt; (Firewall-IP im Geräte-VLAN) / &amp;lt;code&amp;gt;389&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Target hostname / Target port || &amp;lt;code&amp;gt;dc01.firma.local&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;636&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Protocol || &amp;#039;&amp;#039;leer&amp;#039;&amp;#039; (LDAPS = TLS auf eigenem Port)&lt;br /&gt;
|-&lt;br /&gt;
| Certificate || internes Zertifikat der Firewall&lt;br /&gt;
|-&lt;br /&gt;
| CA to validate connections to || Root-CA der Microsoft-Zertifizierungsstelle (AD CS), zuvor unter &amp;#039;&amp;#039;System → Trust → Authorities&amp;#039;&amp;#039; importiert&lt;br /&gt;
|-&lt;br /&gt;
| Client mode || &amp;#039;&amp;#039;&amp;#039;aktiv&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Im Gerät wird als LDAP-Server die Firewall-Adresse &amp;lt;code&amp;gt;192.168.30.1&amp;lt;/code&amp;gt;, Port 389, ohne Verschlüsselung eingetragen. Unter &amp;#039;&amp;#039;&amp;#039;Firewall → Rules&amp;#039;&amp;#039;&amp;#039; auf dem Geräte-Interface nur den betroffenen Geräten den Zugriff auf TCP 389 der Firewall erlauben.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Alternativen je nach Domain Controller:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Spricht der DC &amp;#039;&amp;#039;&amp;#039;STARTTLS auf Port 389&amp;#039;&amp;#039;&amp;#039; statt LDAPS, als Ziel Port &amp;lt;code&amp;gt;389&amp;lt;/code&amp;gt; und als &amp;#039;&amp;#039;&amp;#039;Protocol&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;LDAP&amp;#039;&amp;#039; wählen.&lt;br /&gt;
* Für Redundanz einen zweiten Tunnel (anderer Port) zu einem zweiten Domain Controller anlegen, sofern das Gerät einen Ausweichserver unterstützt.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Auch hier läuft der Abschnitt zwischen Gerät und Firewall weiterhin im Klartext. Geräte daher in ein eigenes VLAN legen, den Tunnel nur dort anbieten und für die Anbindung ein &amp;#039;&amp;#039;&amp;#039;eigenes Dienstkonto mit minimalen Leserechten&amp;#039;&amp;#039;&amp;#039; verwenden – nie ein Administratorkonto.}}&lt;br /&gt;
&lt;br /&gt;
== Anwendungsfall 3: Mailversand von Altgeräten (SMTP) ==&lt;br /&gt;
Scanner, USV-Systeme oder Überwachungssoftware versenden Benachrichtigungen oft nur per &amp;#039;&amp;#039;&amp;#039;SMTP ohne TLS&amp;#039;&amp;#039;&amp;#039;. Moderne Mailanbieter und [[Microsoft 365]]-Konnektoren nehmen solche Mails nicht mehr an.&lt;br /&gt;
* Stunnel im &amp;#039;&amp;#039;&amp;#039;Client-Modus&amp;#039;&amp;#039;&amp;#039;: Listen &amp;lt;code&amp;gt;192.168.10.1:25&amp;lt;/code&amp;gt; → Target &amp;lt;code&amp;gt;smtp.provider.de:465&amp;lt;/code&amp;gt; (SMTPS, Protocol leer) &amp;#039;&amp;#039;&amp;#039;oder&amp;#039;&amp;#039;&amp;#039; Target Port &amp;lt;code&amp;gt;587&amp;lt;/code&amp;gt; mit &amp;#039;&amp;#039;&amp;#039;Protocol&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;SMTP&amp;#039;&amp;#039; (STARTTLS).&lt;br /&gt;
* Die SMTP-Anmeldung (Benutzername/Passwort) konfiguriert weiterhin das Gerät – sie läuft dann geschützt durch den Tunnel.&lt;br /&gt;
&lt;br /&gt;
== Anwendungsfall 4: Interne Dienste mit Mutual TLS veröffentlichen ==&lt;br /&gt;
Soll ein interner TCP-Dienst ausschließlich für bestimmte &amp;#039;&amp;#039;&amp;#039;Systeme oder Standorte&amp;#039;&amp;#039;&amp;#039; erreichbar sein, sichert Stunnel im Server-Modus mit gesetzter &amp;#039;&amp;#039;&amp;#039;CA to validate connections to&amp;#039;&amp;#039;&amp;#039; ihn per &amp;#039;&amp;#039;&amp;#039;gegenseitiger Zertifikatsprüfung&amp;#039;&amp;#039;&amp;#039; ab: Nur Gegenstellen mit einem Client-Zertifikat der internen CA können überhaupt eine Verbindung aufbauen. Das klassische Beispiel aus der OPNsense-Dokumentation ist ein &amp;#039;&amp;#039;&amp;#039;HTTP-Proxy&amp;#039;&amp;#039;&amp;#039; (Squid, Port 3128), den Außendienstmitarbeitende über einen Stunnel-Client auf ihrem Notebook nutzen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
; stunnel.conf auf dem Client-Rechner&lt;br /&gt;
[proxy]&lt;br /&gt;
client = yes&lt;br /&gt;
accept = 127.0.0.1:3128&lt;br /&gt;
connect = firewall.example.com:31280&lt;br /&gt;
requireCert = yes&lt;br /&gt;
verifyChain = yes&lt;br /&gt;
cert = C:\stunnel\client.pem&lt;br /&gt;
CAfile = C:\stunnel\ca.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Die Datei &amp;lt;code&amp;gt;client.pem&amp;lt;/code&amp;gt; enthält Zertifikat und privaten Schlüssel des Clients, &amp;lt;code&amp;gt;ca.pem&amp;lt;/code&amp;gt; die interne CA. Mit dem &amp;#039;&amp;#039;ident&amp;#039;&amp;#039;-Dienst kann der Proxy die Verbindungen sogar dem Zertifikatsinhaber zuordnen.&lt;br /&gt;
&lt;br /&gt;
== Firewall-Regeln und NAT ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Lauscht Stunnel auf … !! Benötigte Regeln&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; (empfohlen für Zugriffe aus dem Internet) || &amp;#039;&amp;#039;&amp;#039;Firewall → NAT → Destination NAT&amp;#039;&amp;#039;&amp;#039;: Weiterleitung des externen Ports an &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; + zugehörige Filterregel&lt;br /&gt;
|-&lt;br /&gt;
| einer LAN-/VLAN-Adresse der Firewall || &amp;#039;&amp;#039;&amp;#039;Firewall → Rules&amp;#039;&amp;#039;&amp;#039; auf diesem Interface: Zugriff der berechtigten Quellen auf den Listen-Port der Firewall&lt;br /&gt;
|-&lt;br /&gt;
| Ausgehende Verbindungen (Client-Modus) || Verkehr der Firewall selbst ist standardmäßig erlaubt; ggf. Ziel auf vorgeschalteten Firewalls freigeben&lt;br /&gt;
|}&lt;br /&gt;
Bei Listen-Ports unter 1024 auf einer Schnittstellen-IP darauf achten, dass kein anderer Dienst der Firewall (z. B. ein Mail- oder LDAP-Plugin) denselben Port belegt.&lt;br /&gt;
&lt;br /&gt;
== Grenzen von Stunnel und Sicherheitshinweise ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Nur TCP:&amp;#039;&amp;#039;&amp;#039; UDP-Protokolle (z. B. Syslog über UDP, RADIUS, SNMP) lassen sich nicht tunneln.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ein Port pro Dienst:&amp;#039;&amp;#039;&amp;#039; Protokolle mit dynamischen Zusatzverbindungen wie FTP funktionieren nicht.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Keine Hostnamen-Prüfung im Plugin:&amp;#039;&amp;#039;&amp;#039; Im Client-Modus prüft das Plugin die Zertifikatskette gegen die gewählte CA, nicht aber, ob der Name im Zertifikat zum Zielhost passt. Deshalb möglichst eine &amp;#039;&amp;#039;&amp;#039;spezifische&amp;#039;&amp;#039;&amp;#039; CA (z. B. die eigene AD-CS-Root-CA) statt einer großen öffentlichen CA auswählen und das Ziel per fester IP oder internem DNS ansprechen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Klartext-Abschnitt bleibt:&amp;#039;&amp;#039;&amp;#039; Zwischen Altgerät/Altserver und Firewall wird nicht verschlüsselt – Segmentierung und restriktive Regeln sind Pflicht.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Zertifikate erneuern:&amp;#039;&amp;#039;&amp;#039; Bei Let’s Encrypt übernimmt &amp;#039;&amp;#039;os-acme-client&amp;#039;&amp;#039; die Verlängerung; Stunnel nach einer Erneuerung ggf. neu starten (&amp;#039;&amp;#039;VPN → Stunnel&amp;#039;&amp;#039; bzw. Dienste-Widget).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Logs prüfen:&amp;#039;&amp;#039;&amp;#039; Fehlgeschlagene Handshakes erscheinen unter &amp;#039;&amp;#039;VPN → Stunnel → Log File&amp;#039;&amp;#039; und lassen sich an ein SIEM weiterleiten, z. B. ein [https://www.max-it.de/it-services/siem-open-source/ Open-Source-SIEM auf Wazuh-Basis].&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Alternativen:&amp;#039;&amp;#039;&amp;#039; Für HTTP(S)-Dienste mit mehreren Domains, Lastverteilung oder Weiterleitung nach Hostname (SNI) ist ein [[Reverse Proxy]] wie das HAProxy-Plugin (siehe [[OPNsense - HAProxy mit Passwortauthentifizierung]]) besser geeignet. Für vollständige Netzverbindungen sind VPNs wie [[OPNsense - OpenVPN Site-to-Site und Client-VPN|OpenVPN]] oder [[OPNsense - IPsec Site-to-Site route-based|IPsec]] die richtige Wahl.&lt;br /&gt;
&lt;br /&gt;
== Fehlerbehebung ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Symptom !! Ursache und Lösung&lt;br /&gt;
|-&lt;br /&gt;
| Verbindung wird sofort geschlossen || Server-Modus mit gesetzter CA: Client legt kein Zertifikat vor – CA-Feld leeren, wenn kein Mutual TLS gewünscht ist.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;certificate verify failed&amp;#039;&amp;#039; im Log || Client-Modus: falsche oder fehlende CA für den Zielserver; Zwischenzertifikate fehlen.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;wrong version number&amp;#039;&amp;#039; / &amp;#039;&amp;#039;unknown protocol&amp;#039;&amp;#039; || STARTTLS und separater TLS-Port verwechselt: Protocol nur bei STARTTLS setzen, bei 995/993/465/636 leer lassen.&lt;br /&gt;
|-&lt;br /&gt;
| Alle Verbindungen abgelehnt nach Aktivieren von CRL || Keine gültige Sperrliste vorhanden – CRL für die CA erzeugen oder Option deaktivieren.&lt;br /&gt;
|-&lt;br /&gt;
| Keine Logmeldungen mehr || &amp;#039;&amp;#039;chroot service&amp;#039;&amp;#039; aktiv und Syslog wurde neu gestartet – Stunnel neu starten.&lt;br /&gt;
|-&lt;br /&gt;
| Altgerät verbindet sich nicht || Listen-Adresse/Port oder Firewall-Regel auf dem Geräte-Interface prüfen; manche Geräte erwarten zwingend den Standardport.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
Das Stunnel-Plugin ist ein kleines, aber sehr nützliches Werkzeug im OPNsense-Baukasten: Mit wenigen Klicks erhalten alte Server einen verschlüsselten Zugang, und Altgeräte, die nur Klartext-POP3, -LDAP oder -SMTP beherrschen, können weiter mit modernen, TLS-pflichtigen Servern arbeiten. Wichtig ist, Stunnel als das zu sehen, was es ist – eine Brücke: Der Klartext-Abschnitt gehört in ein abgeschottetes Segment, und mittelfristig sollten die Altsysteme modernisiert werden.&lt;br /&gt;
&lt;br /&gt;
== Unterstützung von m.a.x. it ==&lt;br /&gt;
Sie möchten Altgeräte sicher an Active Directory oder Mailserver anbinden, Klartextprotokolle in Ihrem Netz aufspüren und absichern oder Ihre OPNsense um TLS-Proxy-Funktionen erweitern? m.a.x. it unterstützt Sie als OPNsense-Gold-Partner mit [https://www.max-it.de/it-services/opnsense/ OPNsense-Firewall-Services von m.a.x. it] sowie mit [https://www.max-it.de/it-services/cybersecurity/ Cybersecurity-Leistungen von m.a.x. it].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[OPNsense - ACME-Client für Let&amp;#039;s Encrypt-Zertifikate]]&lt;br /&gt;
* [[OPNsense - Plugin-Liste]]&lt;br /&gt;
* [[OPNsense - HAProxy mit Passwortauthentifizierung]]&lt;br /&gt;
* [[OPNsense - OpenVPN Site-to-Site und Client-VPN]]&lt;br /&gt;
* [[TLS]]&lt;br /&gt;
* [[Mutual TLS]]&lt;br /&gt;
* [[LDAP]]&lt;br /&gt;
* [[POP3]]&lt;br /&gt;
* [[IMAP]]&lt;br /&gt;
* [[SMTP]]&lt;br /&gt;
* [[Let&amp;#039;s Encrypt]]&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [https://docs.opnsense.org/manual/how-tos/stunnel.html OPNsense-Doku – Stunnel]&lt;br /&gt;
* [https://www.stunnel.org/manual.html stunnel – offizielles Handbuch]&lt;br /&gt;
* [https://github.com/opnsense/plugins/tree/master/security/stunnel Quellcode des Plugins os-stunnel]&lt;br /&gt;
* [https://www.max-it.de/it-services/opnsense/ m.a.x. it – OPNsense-Firewall-Services]&lt;br /&gt;
&lt;br /&gt;
{{Uebermax}}&lt;br /&gt;
[[Kategorie:IT-Security]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;TechCorner-Redaktion</name></author>
	</entry>
</feed>