SSL-Verschlüsselung mit sslscan testen

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.

Warning

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.

Verwandte Artikel