1. Home
  2. Linux
  3. Apache - MySQL - PHP
  4. Starke SSL-Security im Apache2

Starke SSL-Security im Apache2

Die unten aufgeführten Ciphers können in Ihre Apache-Konfiguration kopiert werden. Sie bieten starke SSL-Sicherheit für alle modernen Browser und erreichen ein A+ im SSL Labs Test. Kurz gesagt wird eine starke Cipher-Suite mit aktivierter Forward Secrecy konfiguriert, SSLv2, SSLv3, TLSv1, TLSv1.1 werden deaktiviert, HTTP Strict Transport Security und X-Frame-Deny-Header werden hinzugefügt und OCSP Stapling wird aktiviert.

Erstellen Sie eine Konfigurationsdatei ssl-ciphers.conf im Pfad /etc/apache2/conf-available/ mit folgendem Inhalt:

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
# Requires Apache 2.4.36 & OpenSSL 1.1.1
SSLProtocol -all +TLSv1.3 +TLSv1.2
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
# Older versions
# SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off

Die Einstellungen im Detail

  • Die Konfiguration SSLCipherSuite EECDH+AESGCM:EDH+AESGCM für Apache oder einen anderen Webserver wählt starke Verschlüsselungsalgorithmen für die sichere Übertragung von Daten. EECDH+AESGCM gibt an, dass Elliptic Curve Diffie-Hellman (ECDH) Schlüsselaustausch mit AES GCM Verschlüsselung bevorzugt wird. Dies ermöglicht Forward Secrecy und verwendet einen der sichersten verfügbaren Verschlüsselungsmethoden. EDH+AESGCM ist ähnlich, verwendet aber den traditionellen Diffie-Hellman Schlüsselaustausch. Beide sichern die Datenübertragung effektiv gegen Lauschangriffe ab.
  • Die Konfiguration SSLProtocol -all +TLSv1.3 +TLSv1.2 deaktiviert alle Protokolle außer TLS 1.2 und TLS 1.3. Das bedeutet, ältere und weniger sichere Protokolle wie SSLv3, TLS 1.0 und TLS 1.1 werden nicht zugelassen. Diese Einstellung verbessert die Sicherheit, indem sie nur die Verwendung der neuesten und als sicher geltenden Protokolle erlaubt.
  • Die Konfiguration SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1 spezifiziert die Reihenfolge und Auswahl der elliptischen Kurven, die für den Schlüsselaustausch während der SSL/TLS-Handshake-Phase verwendet werden sollen. X25519 steht dabei für eine sehr effiziente Kurve, die für hohe Sicherheit bei schneller Performance sorgt. Die anderen genannten Kurven, secp521r1, secp384r1 und prime256v1, bieten unterschiedliche Sicherheitsniveaus und Kompatibilität, wobei secp521r1 die höchste Sicherheit bietet. Diese Einstellung optimiert die Sicherheit und Kompatibilität der SSL/TLS-Verbindungen.
  • Die Einstellung SSLHonorCipherOrder On bewirkt, dass der Server die Reihenfolge der Cipher Suites, die in der SSLCipherSuite Direktive angegeben sind, bestimmt. Das bedeutet, der Server bevorzugt seine eigene Cipher Suite-Liste über die vom Client vorgeschlagene Liste, was die Sicherheit erhöhen kann, indem sicherere Verschlüsselungsmethoden bevorzugt werden.
  • Die Anweisung Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" konfiguriert den HSTS-Header so, dass Browser für zwei Jahre (63072000 Sekunden) ausschließlich sichere HTTPS-Verbindungen zu der Domain und allen ihren Subdomains nutzen. Das preload-Attribut signalisiert die Bereitschaft, die Domain in die HSTS-Preload-Liste aufnehmen zu lassen, was eine noch stärkere Sicherheitsgarantie bietet, indem es die Nutzung von HTTPS erzwingt, bevor der Browser überhaupt eine Verbindung mit dem Server aufbaut.
  • Die Direktive Header always set X-Frame-Options DENY teilt Webbrowsern mit, dass die Einbettung der Seite in Frames auf anderen Websites vollständig untersagt ist. Dies schützt vor Clickjacking-Angriffen, bei denen Angreifer die echte Seite in einem unsichtbaren Frame überlagern, um Benutzereingaben abzufangen.
  • Die Direktive Header always set X-Content-Type-Options nosniff teilt Browsern mit, dass sie nicht versuchen sollen, den MIME-Typ einer Antwort zu erraten. Stattdessen sollten sie strikt den im Content-Type-Header angegebenen Typ verwenden. Dies verhindert, dass die Seite anfällig für Angriffe ist, bei denen schädlicher Code über scheinbar harmlose Dateitypen eingeschleust wird.
  • Die Einstellung SSLCompression off deaktiviert die SSL/TLS-Kompression für die Verbindung. Dies ist eine Sicherheitsmaßnahme, um die Anfälligkeit gegenüber Angriffen wie CRIME zu reduzieren, die die Kompression ausnutzen, um sensible Daten wie Session-Cookies zu stehlen.
  • Die Einstellung SSLUseStapling on aktiviert das OCSP-Stapling im Server, was bedeutet, dass der Server den OCSP-Status eines Zertifikats prüft und diesen Status in der ersten Verbindungshandshake-Phase an den Client übermittelt. Dies verbessert die Leistung und die Privatsphäre, da der Client nicht selbst den Zertifikatsstatus beim Zertifizierungsstellen-Server abfragen muss. Der Client kann diesem Vorgang durch Prüfmechanismen innerhalb des OCSP-Stapling-Verfahrens vertrauen. Die OCSP-Antwort, die der Server bereitstellt, ist von der Zertifizierungsstelle (CA) digital signiert. Diese Signatur ermöglicht es dem Client, die Echtheit und Korrektheit der OCSP-Antwort zu verifizieren. Ein Server kann also nicht einfach eine falsche Antwort vorlegen, ohne dass dies erkannt würde, da er nicht über den privaten Schlüssel der CA verfügt, um gültige Signaturen zu erstellen.
  • Die Einstellung SSLStaplingCache "shmcb:logs/stapling-cache(150000)" konfiguriert den Cache-Speicherort und die Größe für OCSP-Stapling-Antworten. shmcb bezieht sich auf den Shared Memory Cache, logs/stapling-cache ist der Pfad zum Cache, und (150000) legt die Größe des Caches in Bytes fest. Diese Konfiguration hilft dabei, die Effizienz der SSL/TLS-Verbindung zu verbessern, indem sie verhindert, dass der Server wiederholt OCSP-Anfragen für das gleiche Zertifikat stellen muss.
  • Die Einstellung SSLSessionTickets Off deaktiviert die Nutzung von TLS-Session-Tickets für die Wiederaufnahme von Sessions. Dies erhöht die Sicherheit, da Session-Tickets, wenn sie kompromittiert werden, einem Angreifer ermöglichen könnten, frühere verschlüsselte Kommunikation zu entschlüsseln, falls der Ticket-Schlüssel erlangt wird.

Obwohl diese Einstellungen von Experten sorgfältig ausgewählt wurden, um die Sicherheit der SSL-Verschlüsselung auf Webservern zu erhöhen, sollten Sie sie zunächst sorgfältig testen und für die Verwendung in Ihrer Webanwendung analysieren. Einstellungen wie die Aktivierung von HSTS erzwingen beispielsweise eine permanente Entscheidung für die Verwendung von HTTPS ohne die Möglichkeit, zu HTTP zurückzukehren.

Aktivierung der Konfiguration

$ sudo a2enconf ssl-ciphers

Überprüfen der Syntax

$ sudo apache2ctl configtest
Syntax OK

Laden der Konfiguration

$ sudo systemctl restart apache2
Updated on 17. Februar 2024

Was this article helpful?

Related Articles