HSTS verstehen und konform einrichten

HSTS Header richtig konfigurieren

Der HSTS Header besteht aus dem Key-Word „Strict-Transport-Security“ und mehreren Parametern:

Strict-Transport-Security  max-age=31536000; includeSubDomains; preload

Der Parameter ‚max-age‘ ist zwingend anzugeben, während die Parameter ‚includeSubDomains‘ oder ‚preload‘ optional sind.

max-age Parameter

Mit max-age definiert man, wie lange der Browser den HSTS Status speichern muss. Der Zeitraum wird in Sekunden angegeben. Die Zahl 31536000 aus dem obigen Beispiel entspricht einem Jahr.

Mit ‚max-age=0‘ kann man den Browser veranlassen, den HSTS Status zu löschen. Wenn man HSTS nicht mehr nutzen kann oder möchte, sollte man immer erst max-age auf Null setzten und erst ein paar Monate später auf eine nicht HSTS konforme Konfiguration wechseln. Der Zeitraum sollte so lang gewählt werden, sodass alle bisherigen Besucher den neuen Header einmal gesehen haben und der Browser den HSTS Status gelöscht hat. Will man ganz sicher gehen, dass man weiterhin erreichbar bleibt, dann muss die Wartezeit dem vorherigen max-age Wert entsprechen. Im obigen Beispiel also 1 Jahr!

Wenn man erstmalig HSTS ausrollt, sollte man mit kleinen MaxAge (z.B. 120Sekunden) Werten starten, bis man sicher ist, dass alles richtig funktioniert. Z

includeSubDomains Parameter

Durch setzten des Parameter ‚includeSubDomains‘ wird HSTS auf alle Subdomains der Domaine ausgeweitet. Cookies können über Sub-Domänen modifiziert werden. Wird dieser Parameter nicht gesetzt, dann sind Cookie basierte Angriffe weiterhin möglich.

Wenn man den Parameter setzt, kann man allerdings keine Testseiten für eine Sub-Domäne aufsetzten, ohne dass ein gültiges Zertifikat mit ausgeliefert wird. Dank Let’s Encrypt stellt dies aber kein echtes Problem mehr da.

preload Parameter

HSTS wird erst dann aktiv, wenn ein Browser erstmalig den HSTS Header einer Web-Site gesehen hat. Somit ist eine ManInTheMiddle (MITM) Attacke beim Erstkontakt noch möglich. Um diesen Angriffsweg auch noch zu schließen, werden in allen modernen Browsern HSTS-Listen mit ausgeliefert und vorgeladen (preloaded). Somit ist schon vor dem Erstkontakt bekannt, dass eine Web-Site HSTS kompatibel ist.

Wenn man seine Web-Site ebenfalls auf die preload Listen der Browser Herstellerbringen möchte ist dies recht einfach möglich. Zuerst muss man folgende Voraussetzungen erfüllen:

  • Die Web-Site muss HSTS kompatibel sein
  • max-age muss mindestens auf 31536000 (1  Jahr ) gesetzt sein
  • der Site-Owner muss sein Einverständnis geben, indem er im HSTS Header den Parameter Preload setzt.

Nun kann man seine Domaine bei hstspreload.org fürs Preloading melden.

HSTS Implementierung testen

Zu guter Letzt noch ein paar Tipps, wie man seine HSTS Implementierung testen kann. Die Umleitungen lassen sich einfach mit dem Tool Curl testen. Curl ist Bestandteil jeder Linux und Windows 10 Installation. Hier drei Beispiele mit Curl:

C:\Users\sallius>curl --head http://www.allius.de
HTTP/1.1 301 Moved Permanently
Date: Sun, 23 Sep 2018 14:56:34 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Keep-Alive: timeout=20
Location: https://www.allius.de/


C:\Users\sallius>curl --head https://www.allius.de
HTTP/1.1 301 Moved Permanently
Date: Sun, 23 Sep 2018 14:56:54 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Keep-Alive: timeout=20
Location: https://allius.de/
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload


C:\Users\sallius>curl --head http://www.allius.de:443/
HTTP/1.1 301 Moved Permanently
Date: Sun, 23 Sep 2018 14:57:31 GMT
Content-Type: text/html
Content-Length: 178
Connection: close
Location: https://www.allius.de/

Man kann einfach prüfen, ob die Header richtig gesetzt sind und ob die Umleitungen richtig funktionieren.

Es gibt natürlich noch eine Reihe von Online-Test-Seiten, die HSTS testen. Für Interessierte möchte ich hier die Seite hardenize.com empehlen. Die Seite ist noch im Aufbau, liefert aber jetzt schon sehr gute Analysen mit guten Lösungsvorschlägen:

Strict transport security test - hardenize.com
HSTS Test – https://hardenize.com

Fazit

HTTS ist ein wichtiges und ein einfach einzurichtendes Sicherheitsfeature, wenn man ein paar Dinge beachtet. Jeder Web-Site Betreiber sollte sich der Zusammenhänge bewußt sein und HSTS dann auch nutzen.

Links