Apache: Sichere SSL/TLS Settings
Wednesday, July 15 2015 · Lesezeit: 3 Minuten · 490 Wörter · Tags: Apache2ssltls Achtung! Dieser Artikel ist älter als ein Jahr. Der Inhalt ist möglicherweise nicht mehr aktuell!FREAK, BEAST, Heartbleed, POODLE und sonstige Angriffe auf Crypto und Server wurde vor etwas längerer Zeit bekannt und drehten dementsprechende Runden. Ich habe in der Zwischenzeit den Überblick über die ganzen Fixes dafür verloren. Heute habe ich mich hingesetzt und meinen Apache Server auf den aktuellen Stand gebracht.
Test-Tools
Für die Validierung der Einstellungen gibt es ein paar Tools, die man benutzen kann.
„SSL-Server Test“ von ssllabs.com
Dieses online Tool analysiert verschiedene Aspekte der Verbindung. Darunter fallen zum Beispiel:
- Die Qualität des Zertifikates
- Größe des Public Keys
- Verwendeter Algorithmus
- Ablaufdatum
- Die Zertifikatskette
- Unterstützte Protokolle
- Erlaubte Chiffren
- Kompatibilität mit Browsern oder Endgeräten
- SNI
- usw usw
Am Ende des Tests bekommt man dann das Zeugnis.
sslscan für Terminal-Liebhaber
Dieses Tool ist die abgespeckte Version des Online Tools und zeigt die verfügbaren Chiffren an. Der Vorteil ist, dass das Tool wesentlich schneller ist als das Online Tool, aber es gibt keinerlei Wertung über die Qualität ab.
Ist-Zustand
Bevor ich meine Änderungen durchgeführt habe, habe ich folgende Tests laufen lassen:
Der Test meint eigentlich, dass mein Zertifikat wertlos ist. Das kommt daher, dass keine offizielle CA es ausgestellt hat. Unter dem großen Roten T wird aber darauf hingewiesen, dass die Bewertung eigentlich die Note B wäre, wenn man den Trust-Umstand außer Acht lässt. Die Note B ist quast das Mittelfeld – Es ist nicht das schlechteste, aber auch nicht das Beste.
Die Ausgabe von sslscan zeigt, dass sehr viele Chiffren zur Verfügung stehen:
Wie man hier schön sehen kann wird neben dem angreifbaren Protokoll SSLv3 noch RC4 als Chiffre angeboten.
Fixes für Apache
Die SSL/TLS-Einstellungen sind global und werden über die Datei /etc/apache2/mods-enabled/ssl.conf geregelt.
Veraltete Protokolle abschalten
SSLv3 und SSLv2 sind veraltet und sollten entfernt werden (POODLE). Stattdessen sollte man TLSv1.x verwenden. Alle drei TLS Protokollvarianten werden bei Apache mit dem Tag TLSv1 angegeben. Es gibt keine Möglichkeit explizit TLSv1.3 als Protokoll anzugeben.
Der entsprechende Eintrag:
Damit hat man schon mal die Hälfte der Arbeit erledigt.
Chiffren aussortieren
Nach den Protokollen werden unsichere Chiffren wie zum Beispiel RC4 aussortiert. Bei den Chiffren habe ich mich auf ein paar beschränkt. Diese sind weit verbreitet und von jedem halbwegs aktuellen Clients unterstützt. Einfaches Diffie-Hellman wird explizit verboten, da man bei Apache 2.2 keine eigenen Gruppen angeben kann.
Die Angabe in der Config-Datei ist wie folgt eine einzige Zeile:
Chiffren wie RC4, MD5, DES oder EXPORT (Logjam-Attacke) werden explizit verhindert. Zudem kann man noch ein bisschen an der Chiffrenpräferenz schrauben. Normalerweise nutzt der Server die Chiffre, die vom Client präferiert wird. Mit dieser Einstellung:
kann man jedoch sagen, dass die Chiffrenpräferenz des Servers verwendet wird. In seltenen Fällen führ das zu Inkompatibilität.
Resultat
Das Resultat: Eigentlich eine A-Bewertung, aber durch das „nicht vertrauenswürdige Zertifikat“ wieder nur ein T. An der Sicherheit der Verbindung an sich kann man nun aber erst mal nicht mehr meckern.
Die verfügbaren Chiffren sind auf ein Minimum zusammengeschrumpft:
Nun heißt es auf die nächste Lücke warten und diesmal mit dem Patchen dran bleiben.
Du hast einen Kommentar, einen Wunsch oder eine Verbesserung? Schreib mir doch eine E-Mail! Die Infos dazu stehen hier.
🖇️ = Link zu anderer Webseite
🔐 = Webseite nutzt HTTPS (verschlüsselter Transportweg) Zurück