Erreichen Sie im SSLlabs-Test die Note A+!
10.06.2016 | Petra Alm
Heutige Anleitung ist denjenigen gewidmet, die ihre Server selbst verwalten und für die SSL/TLS Protokolle die beste Einstellung gewinnen wollen. Ob Sie auf die höchste Absicherung achten oder das Niveau A+ nur aus Wettbewerbslust erreichen wollen, unsere Anleitung wird für Sie von Nutzen sein. Der SSLlabs Test stellt den bekanntesten SSL/TLS-Test dar und somit wird er als Autorität anerkannt. Die regelmäßigen Leser unseres Magazins sind mit ihm allerdings sehr gut bekannt.
In dieser Anleitung beschäftigen wir uns nur mit dem Webserver Apache. Weitere populäre Server werden folgen.
Ungeeignete Ausgangskonfiguration
Die SSL/TLS-Ausgangskonfiguration auf Debian ist in dem Test mit der Note C bewertet. Der Vorbehalt betrifft das Protokoll SSLv3, das auf dem Internet aus Sicherheitsgründen nicht mehr verwendet wird.
Hauptprobleme der veralteten Ausgangskonfiguration:
- eingeschaltetes SSLv3-Protokoll
- eingeschaltete RC4-Verschlüsselung
- Forward Secrecy wird nicht unterstützt
Falls wir die Ausgangskonfiguration ändern, bekommen wir die Note A. Dank der Unterstützung von HTTP Strict Transport Security können wir sogar A+ erreichen.
Weg zur besseren Absicherung
Die Lösung der oben genannten Probleme wird unsere Absicherung verbessern. Die Parameter können entweder für den ganzen Server (mod_ssl) oder nur für konkrete Webs (virtuelle Hosts) eingestellt werden.
SSLv3-Protokoll ausschalten
Das veraltete SSLv3-Protokoll kann man sehr einfach ausschalten, entweder auf allen VHosts oder auf dem ganzen Server. Allen Besuchern unseres Webs sollte die Unterstützung von drei TLS-Protokollen ausreichen. Die älteren SSLv2- und SSLv3-Protokolle werden aus Sicherheitsgründen nicht mehr verwendet.
Editieren Sie in /etc/apache2/mods-available/ssl.conf:
SSLProtocol all -SSLv2 -SSLv3
RC4-Verschlüsselung ausschalten
Die RC4-Verschlüsselung wird als heikel angesehen, weil sie einen Vektor der Verletzbarkeit (Vulnerabilität) BEAST darstellt. Heutzutage wird sie auf Servern nur wegen der Kompatibilität mit Internet Explorer und Windows XP verwendet. Falls RC4 auf dem Server verboten wird, werden veraltete Versionen vom Internet Explorer mit der Verbindung zum Web aus dem Windows XP-System Probleme haben. Trotz der Gefährdung der Kompatibilität ist es aber empfehlenswert, die RC4-Verschlüsselung auszuschalten.
Um die unerwünschte Verschlüsselung zu verbieten, müssen wir vor sie nur ein Ausrufezeichen setzen; der Server wird sie weiter nicht verwenden. Die Reihenfolge der Verschlüsselungen gibt an, welche von ihnen der Server beim Handshake bevorzugen soll.
Editieren Sie in /etc/apache2/mods-available/ssl.conf:
SSLCipherSuite ... !RC4
Forward Secrecy
Forward Secrecy schützt übertragene Daten vor einer späteren Entschlüsselung (zum Beispiel nach der Entwendung von private key). Die Voraussetzung für eine funktionierende Forward Secrecy stellen zwei Diffie-Hellman Algorithmen für den Schlüssel-Austausch dar, DHE und ECDHE.
Mehr Informationen über Forward Secrecy finden Sie in dem folgenden Artikel: SSL Labs: Deploying Forward Secrecy. Falls Sie die Problematik nicht studieren wollen, können Sie nur die folgende Reihenfolge der Verschlüsselungen in Ihre Konfiguration einstellen:
Editieren Sie in /etc/apache2/mods-available/ssl.conf:
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"
Zusätzliches Plus
Nach den oben beschriebenen Verbesserungen sollte Ihr Server mit der Note A bewertet werden. Um das Bonusplus zu gewinnen, müssen Sie HTTP Strict Transport Security einstellen.
Einstellung von HTTP Strict Transport Security (HSTS)
HTTP Strict Transport Security (HSTS) erhöht die Sicherheit von der Verbindung des Benutzers zum Server dadurch, dass es als einziges Kommunikationsprotokoll nur HTTPS zulässt. Der Angreifer kann somit weder das Niveau der Verschlüsselung herabsetzen (downgrade-Angriff), noch unverschlüsselte HTTP verwenden.
Editieren Sie die Konfigurationsdatei Apache (/etc/apache2/sites-enabled/website.conf oder /etc/apache2/httpd.confein) und fügen Sie die folgende Befehlszeile dem VirtualHost zu:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomain
Für die richtige Funktion von HSTS ist noch notwendig, headers (sudo a2enmod headers) einzuschalten. Nach der Einstellung starten Sie das Apache neu.
Besuchen Sie unseren Referenzserver
Wir haben für Sie ein kurzes informatives Web BesteSSL vorbereitet, auf dem die oben gelieferten Hinweise wiederholt sind und dessen Server die auch bereits behandelte Einstellung A+ erreicht. Sie können sich von unserer Konfiguration inspirieren lassen, aber vor allem können Sie auf dem Web Ihre Domain anhand des SSLlabs-Tests überprüfen.
Vielleicht haben Sie bemerkt, dass die Note aus vier einzelnen Bewertungen besteht, die verschiedene Merkmale der Absicherung betreffen. Es wird das Zertifikat allein bewertet, die Einstellung der SSL/TLS Protokolle, die Einstellung des Schlüsselaustausches und die Größe der eingestellten Verschlüsselungen. Da SSLlabs die Methoden der Bewertung in einem selbständigen Dokument detailliert beschreibt, werden wir sie nicht mehr behandeln.
Das Web BesteSSL kann bei Key Exchange nicht 100% erreichen; die Ursache liegt in der Anwesenheit vom Bug im Apache (Bug #1219804 - Support custom DH parameter file in apache 2.4). Dieses Problem kann Apache 2.4 lösen und auf unserem Web wird den Mangel die Aktualisierung auf die neue Version von Debian beseitigen. Danach wird Apache einen höheren Wert von dem Diffie-Hellman Parameter anerkennen, also höheren als den gegenwärtigen von der Tiefe 1024b.
Weitere Eigenschaften, die SSLlabs-Test erwähnt (LS_FALLBACK_SCSV und Public Key Pinning (HPKP)), sind deutlich fortgeschrittener und gehen über den Rahmen unseres Artikels hinaus. Für die Unterstützung von TLS_FALLBACK_SCSV genügt es, eine moderne Version von OpenSSL zu besitzen. Falls Ihr Server diese Funktion nicht unterstützt, updaten Sie den Packen mit OpenSSL. Hinweise für die Einstellung von HPKP finden Sie in dem Artikel HTTP Public Key Pinning Extension HPKP for Apache, NGINX and Lighttpd.
Bemerkung: Die Kompatibilität unseres Referenzservers mit Browsern ist wegen der Jagd nach 100% sehr aggressiv eingestellt. Er verwendet zum Beispiel nur das Protokoll TLS 1.2, welches für mehrere veraltete Browser ein Problem darstellt. Deshalb ist die Referenzeinstellung für ein veröffentlichtes Web, das auch von älteren Browsern und Handys oder Tablets besucht wird, nicht geeignet. Schwierigkeiten gibt es auch mit Androids, samt der Version 4.3., mit Internet-Explorer 6-8 und Java.
Für eine adäquate Kompatibilität sind TLS 1.0 und TLS 1.1 Protokolle notwendig. Viele Browser (vor allem Mobilgeräte) unterstützen die neueste TLS-Version seltsamerweise nicht. Mit dem Support von TLS 1.0 und 1.1 wird sich zu Ihrem Server nur IE 6 in Kombination mit Win XP nicht verbinden, weil er die RC4-Unterstützung erfordert (TLS 1.0 ist in dem Ausganszustand im IE 6 ausgeschaltet).
Eine komplette Übersicht der Unterstützung von SSL/TLS in verschiedenen Browsern finden Sie auf Wikipedia: Transport Layer Security
Spezialistin für TLS-Zertifikate
DigiCert TLS/SSL Professional
e-mail: info(at)sslmarket.de