Kaum ein Webserver welcher heute kein https anbietet. Die meisten davon laufen mit einem B-Rating. Das geht doch auch besser, oder?

Nehmen wir als Beispiel mal ein frisch installiertes Ubuntu 20.04 her mit nackt installiertem apache2 und aktiviertem https. Der erreicht sowie er ist bei Qualys SSL Labs ein B-Rating.

SSL Labs B-Rating

Screenshot Ubuntu 20.04 out-of-the-box SSL Labs B-Rating

Das ist doch gut, oder? Damit folgt man laut SSL Labs auf jedem Fall dem Trend: https://www.ssllabs.com/ssl-pulse/. Naja, das ist auf jeden Fall schon mal nicht schlecht. Das geht aber auch besser.

Ausgangsbasis

Wie bereits erwähnt dient als Ausgangsbasis für dieses Beispiel ein apache2 auf Ubuntu 20.04. Sinngemäß kann dies selbstverständlich auf nginx, Emailserver wie postfix und sogar auf andere Distributionen übertragen werden.

Eine Hausaufgabe habe ich allerdings im Vorfeld bereits gemacht: Ich verwende für den Test ein Let’sEncrypt Zertifikat und bei mir gibt es bereits folgenden Eintrag im DNS:

mein@ghm:~ # host -tcaa gehirn-mag.net
gehirn-mag.net has CAA record 0 issue "letsencrypt.org"

Dies bewirkt, dass der Balken für „DNS Certification Authority Authorization (CAA) Policy found for this domain“ bereits grün wird. Zur Erklärung: CAA ist ein Eintrag im DNS mit dem man angeben kann von wem das Zertifikat der Webseite ausgestellt wurde.

Hier noch ein paar Links mit weiteren Informationen zu den vielen Begriffen im letzten Abschnitt:

Konfigurationsmarathon

Ok, so viel muss man gar nicht ändern. Moderne Distributionen machen die meisten Dinge bereits von Haus aus gut. Einige Sachen in der folgenden Liste haben jetzt weniger mit dem Rating zu tun, sind dennoch sehr sinnvoll wenn man die entsprechende Konfig ohnehin schon unter dem Gesichtspunkt „Sicherheit“ in die Hand nimmt.

ServerTokens Prod
ServerSignature Off

# Hierfür muss unter Ubuntu das Modul "headers" aktiviert sein
Header always set Strict-Transport-Security: "max-age=31536000; includeSubDomains; preload"

Zur Erklärung: ServerTokens und ServerSignature schalten ab, dass apache2 in Fehlermeldungen usw. seine Versionsnummer verrät. Genau genommen reicht ServerSignature bereits aus – schaden tut das zusätzliche passende setzen von ServerTokens dennoch nicht 😉

HTTP Strict-Transport-Security, kurz HSTS, ist ein Verfahren bei dem man dem Webbrowser mitteilt, dass die besuchte Seite bitte immer nur via https zu besuchen sei. Das soll für den Moment reichen, Details findest Du in den unten angegebenen Links. Ob man den HSTS-Header in der security.conf global vornimmt oder in den jeweiligen VirtualHosts ist einem selbst überlassen. Wenn es schnell und für alle sein soll ist die security.conf sicherlich eine gute Wahl.

Hier die Links mit weiteren Details:

Die zweite Datei welche zu bearbeiten ist – auch hier kann man sich überlegen ob man das global haben will oder in die jeweiligen VirtualHosts rein schiebt. Du bist unsicher? Dann geh auf Nummer sicher und aktivere die folgenden Konfigeinträge wie gezeigt serverweit für alle.

# Ich hab es nie erwähnt, aber für https muss unter Ubuntu das Modul "ssl" aktiviert werden.
# Aber das hast Du ja vermutlich bereits längst gemacht ;-)

SSLCipherSuite ALL:!RSA:!CAMELLIA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SHA1:!SHA256:!SHA384
SSLHonorCipherOrder on
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1

# Stapling
SSLUseStapling On
SSLStaplingCache "shmcb:${APACHE_RUN_DIR}/stapling_cache(128000)"

Ok, jetzt wird es wüst. In dem Artikel geht es nur darum, was man tun muss um ein A+-Rating zu bekommen. Kurz zusammengefasst was diese Direktiven machen: SSLCipherSuite beschränkt die angebotenen Verschlüsselungsverfahren auf die derzeit als sicher geltenden, SSLHonorCipherOrder sorgt dafür, dass die stärkste Verschlüsselung verwendet wird welche Browser und Server unterstützen, SSLProtocol deaktiviert die als veraltet angesehen SSL bzw. TLS Versionen. OCSP-Stapling ist ein Verfahren zur Statusabfragen bezüglich Gültigkeit von Zertifikaten.

Das soll hier an der Stelle für den Moment an Informationen reichen. Deswegen hier auch nur zwei Links mit weiteren Informationen dazu die als Ausgangsbasis für die eigenen Recherchen dienen können:

Das alles ist ein großes, spannendes Thema. Bei Interesse lohnt es sich da tiefer einzuarbeiten. Meldet doch via den Kommentaren oder per Email ob ich hier im Blog weitere Details dazu liefern soll.

Fazit

So, jetzt aber: Gerade mal 8 Einstellungen waren für den Apache unter Ubuntu zu ändern. Gar nicht viel wenn man es genau nimmt. Und was kommt heraus? Na seit ihr gespannt? Hier, bitte schön:

SSL Labs A+-Rating

Screenshot: Ubuntu 20.04 optimized SSL Labs A+-Rating

Wer jetzt noch mag kann sich auf die Suche machen wie man „Key Exchange“ und „Cipher Strength“ auf 100 bringt. Wenn Du es schaffst wäre es sehr nett Du würdest einen entsprechenden Eintrag in den Kommentaren hinterlassen. Mir reicht es an der Stelle bereits, das A+-Rating hab ich 🙂