Es gibt viele Gelegenheiten, bei denen man die Sicherheit und Verschlüsselung von Server-Verbindungen testen möchte (oder sollte). Bietet der neue Web-Server wirklich nur sichere Ciphers an? Welche genau? Oder sind noch unsichere Hash-Algorithmen erlaubt? Sind bekannte Sicherheitslücken wirklich alle geschlossen?
Eine tolle, weil einfache Lösung bietet Qualys mit den SSL Labs SSL-Test unter https://www.ssllabs.com/ssltest/.
Natürlich muss man der Firma vertrauen (und sollte auch immer den Haken bei "Do not show the results on the boards" setzen).
Es gibt noch ein anderes, prinzipielles Problem: Da der Dienst von außen auf den Server zugreifen können muss, geht es nur mit aus dem Internet erreichbaren Servern. Und dazu beschränkt sich der Dienst selbst auf Web-Server, also HTTPS als Protokoll. Für interne Server, SMTP-, POP3- und IMAP-Server braucht man zwingend eine andere Lösung.
OpenSSL von der OpenSSL Software Foundation ist ein großartiges, flexibles und kostenlos nutzbares Werkzeug für alles rund um SSL und TLS. Die zugrunde liegende Bibliothek wird auch von vielen Servern und Programmen genutzt und gilt als sehr ausgereift.
Was habe ich daran wieder zu meckern? Für Otto-Normal-Admin sind die gefühlt zig Programme und Hunderte von Kommandozeilen-Optionen kaum beherrschbar.
Aber es geht auch einfacher: mit testssl.sh: "testssl.sh is a free command line tool which checks a server's service on any port for the support of TLS/SSL ciphers, protocols as well as recent cryptographic flaws and more."
Zu den wichtigsten Vorteilen zählen
- die klare, einfach verständliche Ausgabe: rot ist schlecht, grün ist gut, gelb kann man sich noch mal ansehen.
- Es lässt sich einfach unter verschiedenen Betriebssystemen installieren und nutzen - oder man nimmt gleich das Dockerfile.
- Man kann flexibel jeden Dienst testen, der SSL/TLS nutzt - auch solche, die per STARTTLS erst dazu aufgefordert werden müssen.
Wenn git installiert ist, besteht die Installation aus einer Zeile:
git clone --depth 1 https://github.com/drwetter/testssl.sh.git
Klone nach 'testssl.sh' ...
remote: Enumerating objects: 84, done.
remote: Counting objects: 100% (84/84), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 84 (delta 12), reused 18 (delta 3), pack-reused 0
Entpacke Objekte: 100% (84/84), Fertig.
Der Test eines Web-Servers sieht im einfachsten Fall so aus:
cd testssl.sh/
./testssl.sh www.meine-domaene.de
Und einen SMTP-Server, der auf Port 25 lauscht und nach STARTTLS verschlüsselt kommuniziert mit:
./testssl.sh -t smtp smtp.meine-domaene.de:25
Ich verzichte hier bewusst darauf, die Ausgaben aufzulisten. Wenn man sie nicht einschränkt, sind sie etwas zu länglich für einen Blog-Eintrag. Aber weil es so einfach ist, gilt: selbst ausprobieren!
Dabei hilft auch die ausführliche Anleitung - Linux-typisch eine manpage, die auch einige Beispiele auflistet.