Sicheres TLS für alle Serverdienste

TLS Interposer Logo

Quelle: netfuture.ch

Spätestens seit „Heartbleed“ und „Poodle“ sollte klar sein, dass die Verwendung von SSL/TLS nicht automatisch „sicher“ bedeutet. Eine sichere Verschlüsselung für Serverdienste erfordert einerseits aktuelle SSL-Bibliotheken (etwa eine aktuelle Version von OpenSSL ohne „Heartbleed“-Bug) als auch eine sichere Konfiguration der jeweiligen Software (Apache, Dovecot, Postfix usw.).

„Poodle“ hat gezeigt, dass SSL 3 nicht mehr als sicher anzusehen ist und man statt dessen mindestens TLS 1.0, besser 1.1 oder 1.2 verwenden sollte. Auch die Auswahl der Cipher-Suites beeinflusst die Sicherheit. Nicht jede erlaubt Forward Secrecy (womit das nachträgliche Entschlüsseln mitgeschnittener Daten verhindert wird) und manche sind generell unsicher und sollten nicht mehr verwendet werden.

Bei den meisten Webservern, wie Apache oder Nginx ist es relativ einfach, die Konfiguration anzupassen, um das zu erreichen. Daneben hat man aber oft noch weitere Dienste im Einsatz, wie Mailserver (Dovecot, Postfix) oder wie bei mir auch ein XMPP/Jabber-Server auf Basis von ejabberd. Nicht jeder dieser Dienste erlaubt die Anpassung der SSL/TLS-Konfiguration. Mitunter ist es in der verwendeten Version nicht möglich und ein Update auf eine aktuellere Version kommt aus verschiedenen Gründen nicht in Frage.

Für solche Fälle bietet sich „TLS Interposer“ an. Dabei handelt es sich um eine Bibliothek für Linux (die Quellen dazu sind auch auf Github verfügbar), die Aufrufe der OpenSSL-Bibliothek über eine Zwischenschicht anpasst und damit eine sicherere Konfiguration ermöglicht, auch wenn der jeweilige Serverdienst das von sich aus nicht anbietet.

Installation

Die Installation erfolgt am einfachsten über die Quellen auf Github, hier am Beispiel unter Ubuntu Linux (eventuell muss vorher der Git-Client mit sudo apt-get install git installiert werden):

git clone https://github.com/Netfuture/tlsinterposer
cd tlsinterposer
sudo make install

Danach steht die Bibliothek unter /usr/local/lib/libtlsinterposer.so zur Verfügung und kann bei Bedarf über die Umgebungsvariable LD_PRELOAD bei den jeweiligen Diensten eingebunden werden. Zusätzlich kann man bei Bedarf mit TLS_INTERPOSER_CIPHERS die Liste der Cipher Suites angeben, die für diesen Dienst verwendet werden sollen.

Beispiel: ejabberd

Auf der Websites des Anbieters findet man verschiedene Beispiele für den praktischen Einsatz. Ich habe es mit meinem XMPP-Server – ejabberd – ausprobiert, der in der verwendeten Version noch keine Anpassung der SSL/TLS-Konfiguration erlaubt.

Vor der Verwendung von „TLS Interposer“ wurden von ejabberd keine Cipher Suites für Forward Secrecy unterstützt und außerdem die unsichere Cipher Suite DES-CBC3-SHA. SSL 3 war ebenfalls noch aktiv.

ejabberd Cipher Suites ohne “TLS Interposer”

Nach der Integration von „TLS Interposer“ entsprechend der Anleitung sieht es deutlich besser aus.

Konkret wurden folgende Zeilen am Ende der Datei /etc/default/ejabberd ergänzt:

export LD_PRELOAD=/usr/local/lib/libtlsinterposer.so
export TLS_INTERPOSER_CIPHERS='EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS'

Es wird mindestens TLS 1.0 vorausgesetzt und es werden nur noch Cipher Suites mit Forward Secrecy verwendet, mit Ausnahme von RC4-SHA, dass bewusst aktiv gelassen wurde, da einige ältere Clients die DHE- und ECDHE-Suites nicht unterstützen:

ejabberd Cipher Suites mit “TLS Interposer”

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.