Charly Kühnast kann sich noch gut an die Zeit erinnern, als das Einbinden und die Funktionsprüfungen eines SSL-Zertifikats eine einfache Sache war. Jetzt hat er ein Shellskript gefunden, das trotz des Wirrwarrs an Schlüsselprotokollen und Ciphers klare Auskünfte erteilt.
Es ist absehbar, dass Webserver mit SSL-Zertifikat die Regel werden. Im selben Maße steigt die Verantwortung der Admins, zu überblicken, welche SSL- und TLS-Einstellungen auf welchen Servern noch up to date sind. Ich lasse mir dabei von Testssl.sh helfen, denn das Shellskript ist ein Tausendsassa. So löst
testssl -U https://Server
Scantests auf gängige Sicherheitslücken wie Heartbleed, Poodle und Crime aus (Listing 1). Jede Testoption kann ich auch einzeln auslösen. Um zu erfahren, ob ein Server anfällig für Logjam ist, genügt:
Listing 1
testssl -U https://Server
01 Service detected: HTTP 02 Testing vulnerabilities 03 04 Heartbleed (CVE-2014-0160) not vulnerable (OK) (timed out) 05 CCS (CVE-2014-0224) not vulnerable (OK) 06 Secure Renegotiation (CVE-2009-3555) not vulnerable (OK) 07 Secure Client-Initiated Renegotiation not vulnerable (OK) 08 CRIME, TLS (CVE-2012-4929) not vulnerable (OK) 09 [...]
testssl.sh --logjam Adresse
Mit »testssl -P Adresse« prüfe ich, ob der Server seine Ciphers in einer definierten Reihenfolge (von stark zu schwach) anbietet, denn das sollte er. Testssl.sh zeigt das stärkste Verschlüsselungsverfahren, das er aushandeln konnte (Listing 2). Mit »testssl.sh -Y Adresse« finde ich zusätzlich heraus, ob der Server HTTP/2 unterstützt. Der antwortet dann vielleicht mit:
Listing 2
testssl -P <I>Adresse<I>
01 Testing server preferences 02 03 Has server cipher order? yes (OK) 04 Negotiated protocol TLSv1.2 05 Negotiated cipher ECDHE-RSA-AES256-GCM-SHA384, 256 bit ECDH 06 Cipher order 07 [Eine längliche Liste der angebotenen Ciphers]
Service detected: HTTP HTTP2/ALPN http/1.1 (offered)
Die Tests sind nicht auf HTTPS beschränkt. Einen Mailserver teste ich mit
testssl.sh --starttls smtp Adresse
und bekomme genauso gute Analysen wie beim Webprotokoll – in diesem besonders ausführlich, denn wenn ich keine Parameter angebe, prüft sich Testssl.sh einmal durchs ganze Regal (Abbildung 1).
Ach so: Aha
Zum Schluss ein Tipp vom Testssl-Entwickler: Wer zusätzlich das Tool »aha« [2] installiert, kriegt die Konsolenausgabe ganz einfach in HTML gewandelt:
testssl.sh Adresse | aha > /Pfad/servertest.html
In ein kleines Shellskript gewickelt, checke ich so schnell per Cron einmal wöchentlich den TLS- und SSL-Status meiner Server.
Infos
- Testssl.sh: https://github.com/drwetter/testssl.sh
- Aha: https://github.com/theZiz/aha und in den Repositories vieler Distributionen






