nginx: SSL/TLS Hardening

Achtung! Dieser Artikel ist älter als ein Jahr. Der Inhalt ist möglicherweise nicht mehr aktuell!

Vor kurzem habe ich den Artikel Apache: Sichere SSL/TLS Settings geschrieben. Vor kurzem habe ich aber den Apache Webserver deinstalliert und verwende stattdessen nginx. Dieser Webserver hat bereits eine fast perfekte Einstellung in Bezug auf verschlüsselte Verbindungen. Ein bisschen kann man aber noch optimieren.

Kein SSL sondern nur TLS

Wie beim Apache 2 kann man auch nginx sagen, dass er kein SSL mehr akzeptieren soll. Anders als beim Apache kann man die zu verwendete TLS Version aber genauer spezifizieren. Für die maximalste Kompatibilität und trotzdem größtmögliche Sicherheit habe ich nur TLS erlaubt. Dazu habe ich in der Datei /etc/nginx/nginx.conf die Option ssl_protocols eingedampft:

Cipers einschränken

Zusätzlich wird die Anzahl der möglichen Ciphers auf ein Minimum eingeschränkt:

Jeder halbwegs aktuell Browser ist damit kompatibel. Mobile Geräte haben ebenfalls keine Probleme.

Durch die Option ssl_prefer_server_ciphers wird die Präferenz des Servers gewählt, anstelle die des Clients.

Eigene Diffie-Hellman Parameter

Anders als Apache 2.2 kann nginx schon länger eigene DH Parameter laden. Dazu muss man aber erst einmal welche Erstellen. Dieser Vorgang dauert etwas länger. Die Zeit sollte man aber investieren!

Die entsprechende Config-Option in der Konfigurationsdatei:

Fazit

Sobald man nginx neu startet kann man mit dem Tool sslscan das Ergebnis begutachten:

Further Reading


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