Verschlüsselter Tunnel für einen Dienst
Praktische Funktionsweise:
Rechner A Rechner B
Dienst A -> stunnel --------> stunnel -> Dienst B
Koniguration
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.