Tobias Scheible Cyber Security & IT-Forensik Dozent
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.

Kommentare

Es wurde noch kein Kommentar abgegeben.

Schreibe einen Kommentar!

Hilfe zum Kommentieren und Hiweise

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen, eine Gefährdung anderer Besucher darstellen oder keinen sinvollen Inhalt beinhalten, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und damit ich direkt Kontakt aufnehmen kann. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzhinweis des Blogs.