SSL/TLS Implementierung von Servern lokal testen

veröffentlicht am 15.02.2022
geschrieben von Finn Kumkar
Wie man die SSL/TLS Implementierung von Servern lokal mit nmap und openssl testet.
Transportverschlüsselung
Um Daten sicher zwischen einem Server und dem Browser auszutauschen, wird das Internetkommunikationsprotokoll HTTPS (HyperText Transfer Protocol Secure) verwendet. Vereinfacht gesagt, werden durch den Einsatz von HTTPS die Daten zwischen dem Server und dem Browser verschlüsselt.
Hierzu wird das eigentliche HTTP-Protokoll mit dem Verschlüsselungsprotokoll TLS (Transport Layer Security) abgesichert. Die Verwendung des Vorgängerprotokolls SSL (Secure Sockets Layer) ist seit 2015 offiziell als unsicher eingestuft worden.
Damit eine Transportverschlüsselung als sicher gilt, muss die SSL/TLS-Implementierung korrekt konfiguriert sein.
Öffentliche Server testen
Es gibt eine Vielzahl an Möglichkeiten diese Sicherheit der Transportverschlüsselung von öffentlichen Servern zu überprüfen. Ein populärer Service hierfür ist:
Oder wenn der Server nicht am Standard-Port 443 für HTTPS-Verbindungen läuft:
Lokale Server testen
Aber was tut man, wenn man einen Server lokal testen muss? Beispielsweise, weil man ihn gerade erst konfiguriert, oder wenn man einen unbekannten Server überprüfen möchte, bevor man ihn ans öffentliche Internet hängt.
Hierzu bieten sich zwei praktische Kommandozeilen Tools an: Mit nmap
kann man sich schnell einen Überblick über die erlaubten Protokolle und Cipher einer SSL/TLS-Implementierung verschaffen. Mit openssl
kann man überprüfen, ob eine sicher und/oder unsichere Verbindung zum Server möglich ist.
Überblick mit nmap verschaffen
Einen Server der lokal unter https://127.0.0.1:55555
läuft kann man wie folgt testen:
nmap --script ssl-enum-ciphers -p 55555 127.0.0.1
Das Ergebnis ist eine Auflistung aller Protokolle und erlaubte Cipher der SSL/TLS Implementierung. Interessant sind hier vor allem folgende Ergebnisse (in der Ausgabe hervorgehoben):
- Das Protokoll (SSLv3 ist offziell unsicher und TLSv1.0 sowie TLSv1.1 sind deprecated).
- Der
warnings
Bereich enthält mögliche Angriffsvektoren. - Der
least strength
Wert ist der am schlechtesten bewertete Cipher (nach Qualys SSL Labs SSL Server Rating Guide).
Diesen Server sollte man so nicht ans Internet hängen.
|
|
Spezifisches Protokoll mit openssl testen
Ob ein Server wirklich die Kommunikation über ein unsicheres Protokol TLSv1.0
anbietet, kann man mit dem OpenSSL SSL/TLS Client und seinen Optionen wie folgt testen:
openssl s_client -connect 127.0.0.1:55555 -tls1
Das Ergebnis ist die Debug-Ausgabe einer Verbindung vom OpenSSL SSL/TLS Client zum Server.
|
|
HTTPS Request mit openssl
Wenn die Verbindung mit openssl
erfolgreich war, kann man einen HTTP-Request gegen den Server senden. Wir können beispielsweise das favicon von stadtwerk.org über eine sichere TLSv1.3
-Verbindung wie folgt herunterladen:
openssl s_client -tls1_3 -crlf -quiet -connect stadtwerk.org:443 <<eof
GET /favicon-32x32.png HTTP/1.1
Connection: close
Host: stadtwerk.org
eof
Das Ergebnis verrät uns, dass da jemand von stadt.werk mit Adobe Photoshop CC 2019 (Macintosh)
kreativ war 😉
|
|