Tobias ScheibleCybercrime Dozent & Live Hacking Speaker
HTTPS Sicherheit

HTTP Strict-Transport-Security – HTTPS absichern

Die Absicherung der Kommunikation einer Website per Hypertext Transfer Protocol Secure (HTTPS) sollte eigentlich Standard sein. Trotz Verschlüsselung gibt es Angriffsszenarien auf HTTPS. Der HTTP Strict-Transport-Security Header, kurz HSTS Header, hilft hierbei einige Schwachstellen auszumerzen und so die Website sicherer zu machen.

Montag, 18. Juli 2016
0 Kommentare

Ist eine Website per HTTP und HTTPS erreichbar, kann ein Angreifer beispielsweise versuchen, dass sein Opfer in einer Phising E-Mail auf einen präparierten Link klickt und so zur http-Variante gelangt. Dadurch würde eine unverschlüsselte Kommunikation stattfinden. Mit dem HTTP Strict-Transport-Security http-Header kann eine HTTPS-Verbindung immer erzwungen werden.

Wenn eine Website zum ersten Mal über HTTPS aufgerufen wird und der Header Strict-Transport-Security ausgeliefert wird, speichert der Webbrowser diese Informationen ab. Dadurch werden zukünftige Versuche, die Website per HTTP zu laden, automatisch auf HTTPS umgeleitet.

Zwei Parameter sind dafür von besonderem Interesse. Der erste Wert definiert die Ablaufzeit in Sekunden (= Timeout). Wann immer der Header Strict-Transport-Security an den Browser übermittelt wird, aktualisiert er die Ablaufzeit für diese Website. Dadurch können Websites diese Informationen aktualisieren und verhindern, dass der Timeout abläuft. Wenn die im Header Strict-Transport-Security angegebene Ablaufzeit verstrichen ist, wird der nächste Versuch, die Website über HTTP zu laden, wie gewohnt durchgeführt, anstatt automatisch über HTTPS. Mit dem Parameter includeSubDomains wird der Webbrowser angewiesen, HSTS auch auf Subdomains anzuwenden.

Strict-Transport-Security: max-age=EXPIRE-TIME
Strict-Transport-Security: max-age=EXPIRE-TIME; includeSubDomains

HTTP Strict-Transport-Security in der .htaccess aktivieren

Bevor der Header hinzugefügt wird, sollte als Erstes die Funktionsfähigkeit der HTTPS-Verbindung (https://www.ssllabs.com/ssltest/) getestet werden. Mit dem folgenden Befehl in der .htaccess-Datei wird der Apache Webserver angewiesen, den HSTS-Header an den Browser zu senden:

Header always append Strict-Transport-Security "max-age=31536000; includeSubDomains" 

Deaktivierung des HSTS-Headers

Im Prinzip sollte niemals eine Seite nur noch per HTTP erreichbar sein. Dies kann jedoch passieren, wenn zum Beispiel nach einem Serverumzug kein gültiges HTTPS-Zertifikat mehr zur Verfügung steht. Dann kommt es zu einem Fehler, da der Webbrowser durch den HSTS-Header Eintrag die HTTPS-Verbindung erzwingt.

Im Nachhinein gibt es keine Möglichkeit, die Einträge in den Webbrowsern der Besucher zu löschen. Hierbei handelt es sich um eine Sicherheitsfunktion, da die Möglichkeit zur Löschung ansonsten auch von einem Angreifer genutzt werden könnte.

Sollte es notwendig sein, Strict Transport Security zu deaktivieren, wird das Setzen des Max-Age auf 0 (über eine https-Verbindung) sofort den Strict-Transport-Security-Header ablaufen lassen und den Zugriff über http ermöglichen. Dies muss allerdings vorab erfolgen, solange eine HTTPS-Verbindung besteht. Wenn ein Besucher in diesem Zeitraum die Seite nicht erneut besucht, kommt es danach aber trotzdem zu einem Fehler.

Header always append Strict-Transport-Security: "max-age=0"

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog und in meinem Fachbuch. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.