weidner: Stunnel
Stunnel ist ein Grundbaustein, um Netzanwendungen, die nicht von vornherein mit kryptographischer Datenübertragung ausgestattet sind, über unsichere Kanäle zu tunneln. Ein mit stunnel geschützter Kanal sieht dann in etwa so aus wie hier am Beispiel eines LDAP-Servers:
Rechner LDAP-Server
+----------+ +----------+
| login | | |
|(pam_ldap)| | slapd |
| I | | I 389 |
| I 389 | 636 | I |
| stunnel=================stunnel |
+----------+ +----------+
Der Benutzer meldet sich am Rechner an, login verwendet für die Authentisierung das Modul pam_ldap und ist für eine Anfrage an 127.0.0.1:389 konfiguriert. Darauf ist stunnel im Client-Modus gebunden, das die Verbindung zum LDAP-Server, Port 636 aufbaut. An diesem Port wartet ein weiterer stunnel-Dämon, der die Verbindung an 127.0.0.1:389 weiterreicht. Die Anfrage von pam_ldap kommt damit unverändert aber verschlüsselt über das Netz zum LDAP-Server.
Es ist dabei auch möglich, verschlüsselte Kanäle zu verschiedenen Servern einzurichten, indem man weitere stunnel-Prozesse an 127.0.0.2:389, 127.0.0.3:389 usw. bindet.
Ich verwende unter RedHat folgendes Start-Script /etc/rc.d/init.d/stunnel, in dem die Parameter für jeden stunnel-Prozess eingetragen werden müssen.
#!/bin/sh
#
# stunnel This shell script takes care of starting and stopping
# various stunnels.
#
# chkconfig: 2345 20 80
# description: starts and stops stunnel - a SSL/TLS wrapper
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/stunnel ] || exit 0
# LDAPS="-p /var/openssl/certs/ldap.pem -d 636 -r ldap -s ca"
HTTPS="-p /var/openssl/certs/stunnel.pem -d 443 -r http -s ca"
LDAPSC="-c -r 192.168.0.3:636 -d 127.0.0.1:389"
# See how we were called.
case "$1" in
start)
# Start daemons.
echo -n "Starting stunnel: "
#
# only the *first* may be started with 'daemon'
#
daemon /usr/sbin/stunnel $HTTPS
/usr/sbin/stunnel $LDAPSC
echo
touch /var/lock/subsys/stunnel
;;
stop)
# Stop daemons.
echo -n "Shutting down stunnel: "
killproc stunnel
echo
rm -f /var/lock/subsys/stunnel
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: stunnel {start|stop|restart}"
exit 1
esac
exit 0
=endIn dem Beispiel sind für LDAP sowohl die Client-, als auch die Server-Parameter angegeben. Eins davon brauch im Normalfall nur aktivieren.