* Kann verschlüsselte Tunnel herstelln
* oder für Dienste SSL-Verschlüsselung zur Verfügung stellen die normalerweise keine SSL-/TLS-Unterstützung haben
* Dokumentationen: https://www.stunnel.org/docs.html
====== Verschlüsselter Tunnel für einen Dienst ======
* die Verbindung wird aufgebaut sobald ein Dienst sich mit dem Sender-Stunnel verbindet
* vorher gibt es keine Verbindung zwischen dem Client-Stunnel und dem Server-Stunnel
* wird die Verbindung zu stunnel abgebaut wird auch die Verbindung zwischen den stunnel-Instanzen abgebaut
* stunnel läuft dabei auf Sender und Empfänger weiter und der Sender wartet auf eine bei ihm eingehende Verbindung
Praktische Funktionsweise:
Rechner A Rechner B
Dienst A -> stunnel --------> stunnel -> Dienst B
===== Koniguration =====
* Die Konfigurationsdateien liegen in /etc/stunnel
* der Name ist beliebig, muss aber auf .conf enden
* Jede Konfigurationsdatei kann eine oder mehrere Sektionen haben ("[Bezeichnung]")
Client:
[rsyslog]
client=yes
accept=520
connect=otest6.lab:231
* client: Definiert diese Seite als Client, das was unter connect steht wird genutzt um den Tunnel per ssl aufzubauen
* accept: Auf welchem Port wird auf die (unverschlüsselte, die des Services der verschlüsselt werden soll) eingehende Verbindung gewartet -> in diesem Fall auf dem Port den tcp rsyslog verwendet um Daten an einen entfernten Syslog zu senden (der syslog hat in diesem Fall 127.0.0.1 als Zieladdresse)
* connect: Die Addresse wohin der verschlüsselte Tunnel aufgebaut werden soll (das ist in dem Fall so, weil client=yes ist)
Server:
[rsyslog]
accept=231
connect=127.0.0.1:514
cert=/etc/certs/client2.cert
key=/etc/certs/client2.key
* Da kein client=yes Parameter vorhanden ist, wird generell davon ausgegangen, dass es sich um eine Serverdefinition handelt
* accept: Definiert auf welchem Port(s) auf den SSL-Verbindungsaufbau gewartet wird
* connect: Definiert wohin sich verbunden wird (unverschlüsselt) wenn auf dem Port unter accept eine verschlüsselte Verbindung eingeht -> im obigen Fall wird sich mit dem lokalen rsyslog verbunden
* cert: Definiert das zu verwendende Zertifikat (bzw. optional die gesamte Chain)
* key: Definiert den privaten Schlüessel des Servers der für SSL verwendet werden soll
Oben stehende Konfiguration ist nicht sonderlich sicher, es gibt keine Authenfizierung des Clients gegenüber dem Server und umgekehrt - das lässt sich aber in stunnel einrichten. \\
Auch wartet der Client-Syslog-Server auf allen (auch den öffentlichen) Interfaces auf eine unverschlüsselte eingehende Verbindung.