SSLyze - SSL Server Einstellungen per Kommandozeile überprüfen
Posted by Guenny onDie richtigen SSL/TLS Einstellungen für Server zu finden ist nicht immer leicht. Eine etablierte Prüfvariante wird von SSL Labs gestellt. Auf deren Webseite können Server auf Herz und Nieren geprüft werden und bekommen im Optimalfall ein A+ Rating, wenn Techniken wie beispielsweise HTTP Strict Transport Security aktiv sind.
Seit kurzen stellt Qualys mit ssllabs-scan ein Tool auf Github zur Verfügung, welches einen Server Test via Kommandozeile erlaubt. Das Tool basiert auf der vorhandenen Technik und greift somit auch immer auf die Qualys Server zurück.
Als Alternative bietet sich das ebenfalls etablierte Phyton Script SSLyze an. Anders als ssllabs-scan unterstützt der SSL Scanner bereits SMTP, XMPP, LDAP, POP, IMAP, RDP und FTP und steht auch für Windows Nutzer zur Verfügung.
SSLyze unter Ubuntu Server 14.04, 16.04, 20.04 LTS verwenden
Installation
sudo apt install python-pip
pip install --upgrade setuptools
pip install sslyze
pip install --upgrade setuptools
pip install --upgrade sslyze
python -m sslyze --regular www.yahoo.com:443 www.google.com "[2607:f8b0:400a:807::2004]:443"
Alle Funktionen anzeigen
./sslyze.py --help
Usage: sslyze.py [options] target1.com target2.com:443 etc...
Normaler Scan
Prüfung auf die Protokolle SSLv2.0, SSLv3.0, TLS1.0/1.1/1.2 Heartbleed, CipherSuites und andere Einstellungen.
Die reguläre Methode fast quasi eine Befehlskette zusammen "--sslv2 --sslv3 --tlsv1 --reneg --resum --certinfo=basic --hide_rejected_ciphers --http_get"
python -m sslyze --regular url.de:443
REGISTERING AVAILABLE PLUGINS
-----------------------------
PluginSessionRenegotiation
PluginCompression
PluginSessionResumption
PluginHSTS
PluginOpenSSLCipherSuites
PluginChromeSha1Deprecation
PluginCertInfo
PluginHeartbleed
CHECKING HOST(S) AVAILABILITY
-----------------------------
url.de:443 => 127.0.0.1:443
SCAN RESULTS FOR url.DE:443 - 127.0.0.1:443
---------------------------------------------------
Deflate Compression:
OK - Compression disabled
Session Renegotiation:
Client-initiated Renegotiations: OK - Rejected
Secure Renegotiation: OK - Supported
OpenSSL Heartbleed:
OK - Not vulnerable to Heartbleed
Session Resumption:
With Session IDs: OK - Supported (5 successful, 0 failed, 0 errors, 5 total attempts).
With TLS Session Tickets: OK - Supported
Certificate - Content:
SHA1 Fingerprint: xxxxxxxxxxxxxxxx
Common Name: url.com
Issuer: url Internet xxxxxxxxx G2
Serial Number: xxxxxxxxxxxxx
Not Before:
Not After:
Signature Algorithm: sha1WithRSAEncryption
Key Size: 2048 bit
Exponent: xxxxxx (0x10001)
X509v3 Subject Alternative Name:
* Certificate - Trust:
Hostname Validation: FAILED - Certificate does NOT match url.de
"Mozilla NSS - 08/2014" CA Store: OK - Certificate is trusted
"Microsoft - 08/2014" CA Store: OK - Certificate is trusted
"Apple - OS X 10.9.4" CA Store: OK - Certificate is trusted
"Java 6 - Update 65" CA Store: OK - Certificate is trusted
Certificate Chain Received: ['url.com', ']
Certificate - OCSP Stapling:
NOT SUPPORTED - Server did not send back an OCSP response.
SSLV2 Cipher Suites:
Server rejected all cipher suites.
...........
Mit dem Zusatz "--hide_rejected_ciphers" lassen sich abgelehnte CipherSuites ausblenden, was die Übersicht erhöht.
Scan auf SHA-1
Eine ebenso praktische Scanvariante ist der Test auf SHA-1.
Die Hasfunktion SHA-1 wird beispielsweise von Google Chrome inzwischen als unsicher gemeldet.
python -m sslyze --chrome_sha1 url.de:443
REGISTERING AVAILABLE PLUGINS
-----------------------------
PluginSessionRenegotiation
PluginCompression
PluginSessionResumption
PluginHSTS
PluginOpenSSLCipherSuites
PluginChromeSha1Deprecation
PluginCertInfo
PluginHeartbleed
CHECKING HOST(S) AVAILABILITY
-----------------------------
url.de:443 => xxxxxxxxx:443
SCAN RESULTS FOR url.DE:443 - xxxxxxxx:443
------------------------------------------------
Google Chrome SHA-1 Deprecation Status:
OK - Certificate chain does not contain any SHA-1 certificate.
Prüfung auf HTTP Strict Transport Security HSTS Unterstützung
Auch das bereits oben erwähnte HSTS lässt sich überprüfen.
python -m sslyze --hsts url.de:443
Test auf StartTLS für SMTP oder XMPP Server
Gleiches gilt für XMPP oder SMTP Server.
python -m sslyze --starttls=smtp url
python -m sslyze --starttls=xmpp url
Zu den genannten Befehlen gibt es noch zig weitere Möglichkeiten SSL Server auf Konfiguration zu testen. Hier sei für alle Funktionen auf die Hilfe verwiesen, welche alle Befehle auflistet und erklärt. (Die Scanausgaben wurden zugunsten der Übersicht gekürzt).
Fazit
Anders als SSL Lab zeigt SSLyze kein Ranking und macht keine Überprüfung auf Browserunterstützung, dafür werden mehr Protokolle unterstützt. Je nach Einsatzgebiet werden wohl beide Tools benötigt. Auf einem Server ohne Browser und Co bietet sich SSLyze natürlich an.
Das Tool ist auf gängigen Linux Distributionen wie Kali Linux, die für Pentesting und andere Sicherheitschecks verwendet werden, mit an Bord.
Eine Übersicht, auf welche Wege SSL/TLS Cipher Suites gestetet werden können, bietet Oswap.
Trackbacks
Trackback specific URI for this entryThis link is not meant to be clicked. It contains the trackback URI for this entry. You can use this URI to send ping- & trackbacks from your own blog to this entry. To copy the link, right click and select "Copy Shortcut" in Internet Explorer or "Copy Link Location" in Mozilla.
No Trackbacks
Comments
Display comments as Linear | ThreadedNo comments