SSL bzw. TLS spielen beim Verschlüsseln von Datenverbindungen eine wichtige Rolle. In den vergangenen Monaten sind immer wieder Angriffe auf diese Verschlüsselung vorgestellt wurden. Jedoch können solche Angriffe durch die Wahl einer neueren Version des Protokolls und durch eine geeignetere Cipher Suite stark erschwert bzw. sogar verhindert werden. Letzteres kann jedoch nie mit Sicherheit gesagt werden.
Die Betreiber von zum Beispiel Web- oder Mailservern, die ihren Dienst über eine mit SSL verschlüsselte Verbindung bereitstellen, sollte bei der Konfiguration darauf achten, dass als unsicher geltende Protokollversionen und Cipher Suiten möglichst nicht zum Einsatz kommen.
Achtung!
Bevor zum Beispiel die Unterstützung von SSLv3 und einiger als unsicher geltenden Cipher Suiten deaktiviert wird, sollte unbedingt geprüft werden, ob die Nutzer anschließend noch Zugriff auf den Dienst haben. So unterstützen einige Browser TLS 1.2 zum Beispiel noch nicht.
Neben Diensten wie dem SSL Server Test von Qualys gibt es Tools wie sslscan, mit denen nicht nur Webserver sondern auch andere Dienste wie Mail über IMAP und weitere getestet werden können. Zusätzlich bieten diese Tools die Möglichkeit Server und Dienste zu testen, die nicht über das Internet erreichbar sind und es müssen keine Daten an externe Anbieter preisgegeben werden. Wer jedoch einen öffentlichen Web-Shop oder ähnliches betreibt kann sich fast sicher sein, dass einige seiner Kunden die Server über einen SSL Tester bereits getestet haben.
An dieser Stelle soll das Tool sslscan etwas näher vorgestellt werden. Die ursprüngliche Version steht über die Projektseite auf sourceforge.net als Download bereit. Eine Version mit weiteren Funktionen steht über ein sslscan repository auf github zur Verfügung.
Da alle Versionen leider aus dem Jahr 2009 bzw. 2011 stammen werden nur SSLv2, SSLv3 und TLS 1.0 unterstützt. Es besteht jedoch die Möglichkeit das Tool in wenigen Schritten um die Unterstützung von TLS 1.1 und TLS 1.2 zu erweitern.
Das folgende Beispiel zeigt die Ausgabe der Hilfe. Verwendet wurde hier die Version 1.8.2, welche mit den meisten Linux Distributionen mitgeliefert wird.
$ sslscan --help
_
___ ___| |___ ___ __ _ _ __
/ __/ __| / __|/ __/ _` | '_ \
\__ \__ \ \__ \ (_| (_| | | | |
|___/___/_|___/\___\__,_|_| |_|
Version 1.8.2
http://www.titania.co.uk
Copyright Ian Ventura-Whiting 2009
SSLScan is a fast SSL port scanner. SSLScan connects to SSL
ports and determines what ciphers are supported, which are
the servers prefered ciphers, which SSL protocols are
supported and returns the SSL certificate. Client
certificates / private key can be configured and output is
to text / XML.
Command:
sslscan [Options] [host:port | host]
Options:
--targets=<file> A file containing a list of hosts to
check. Hosts can be supplied with
ports (i.e. host:port).
--no-failed List only accepted ciphers (default
is to listing all ciphers).
--ssl2 Only check SSLv2 ciphers.
--ssl3 Only check SSLv3 ciphers.
--tls1 Only check TLSv1 ciphers.
--pk=<file> A file containing the private key or
a PKCS#12 file containing a private
key/certificate pair (as produced by
MSIE and Netscape).
--pkpass=<password> The password for the private key or
PKCS#12 file.
--certs=<file> A file containing PEM/ASN1 formatted
client certificates.
--starttls If a STARTTLS is required to kick an
SMTP service into action.
--http Test a HTTP connection.
--bugs Enable SSL implementation bug work-
arounds.
--xml=<file> Output results to an XML file.
--version Display the program version.
--help Display the help text you are now
reading.
Example:
sslscan 127.0.0.1
Das folgende Beispiel zeigt gekürzt das Ergebnis eines Scans.
$ sslscan --no-failed 127.0.0.1
_
___ ___| |___ ___ __ _ _ __
/ __/ __| / __|/ __/ _` | '_ \
\__ \__ \ \__ \ (_| (_| | | | |
|___/___/_|___/\___\__,_|_| |_|
Version 1.8.2
http://www.titania.co.uk
Copyright Ian Ventura-Whiting 2009
Testing SSL server 127.0.0.1 on port 443
Supported Server Cipher(s):
Accepted SSLv3 256 bits ECDHE-RSA-AES256-SHA
Accepted SSLv3 256 bits DHE-RSA-AES256-SHA
Accepted SSLv3 256 bits DHE-RSA-CAMELLIA256-SHA
Accepted SSLv3 256 bits AES256-SHA
Accepted SSLv3 256 bits CAMELLIA256-SHA
Accepted SSLv3 168 bits ECDHE-RSA-DES-CBC3-SHA
Accepted SSLv3 168 bits EDH-RSA-DES-CBC3-SHA
Accepted SSLv3 168 bits DES-CBC3-SHA
Accepted SSLv3 128 bits ECDHE-RSA-AES128-SHA
Accepted SSLv3 128 bits DHE-RSA-AES128-SHA
Accepted SSLv3 128 bits DHE-RSA-CAMELLIA128-SHA
Accepted SSLv3 128 bits AES128-SHA
Accepted SSLv3 128 bits CAMELLIA128-SHA
Accepted TLSv1 256 bits ECDHE-RSA-AES256-SHA
Accepted TLSv1 256 bits DHE-RSA-AES256-SHA
Accepted TLSv1 256 bits DHE-RSA-CAMELLIA256-SHA
Accepted TLSv1 256 bits AES256-SHA
Accepted TLSv1 256 bits CAMELLIA256-SHA
Accepted TLSv1 168 bits ECDHE-RSA-DES-CBC3-SHA
Accepted TLSv1 168 bits EDH-RSA-DES-CBC3-SHA
Accepted TLSv1 168 bits DES-CBC3-SHA
Accepted TLSv1 128 bits ECDHE-RSA-AES128-SHA
Accepted TLSv1 128 bits DHE-RSA-AES128-SHA
Accepted TLSv1 128 bits DHE-RSA-CAMELLIA128-SHA
Accepted TLSv1 128 bits AES128-SHA
Accepted TLSv1 128 bits CAMELLIA128-SHA
Prefered Server Cipher(s):
SSLv3 256 bits ECDHE-RSA-AES256-SHA
TLSv1 256 bits ECDHE-RSA-AES256-SHA
SSL Certificate:
Version: 2
[...]
Fazit
Das Tool kann dabei Helfen die SSL-Verschlüsselung eines Dienstes genauer zu untersuchen und erlaubt dem Administrator diese weiter zu verbessern. Leider werden TLS 1.1 und TLS 1.2 im Moment nicht unterstützt. Diese Funktion lässt sich jedoch durch ein paar Zeilen C-Code erweitern.
Es bleibt zu hoffen das in naher Zukunft die Unterstützung für TLS 1.1 und TLS 1.2 nachgerüstet wird.
Update(2013-12-08): Auf github gibt es einen neuen Fork, in den bereits einige Neuerungen eingeflossen sind. Seit Version 1.10 wird auch TLS 1.1 und TLS 1.2 unterstützt.
Links
- Artikel auf heise.de: Erneuter Krypto-Angriff auf SSL/TLS-Verschlüsselung (deutsch)
- Artikel auf heise.de: TLS stolpert über die "Glückliche 13" (deutsch)
- Wikipedia: Transport Layer Security (deutsch)