HTTP Strict Transport Security mit Apache

HTTP Strict Transport Security (HSTS) ist ein Verfahren, dass es einem Angreifer erschweren soll einen Nutzer von einer HTTPS gesicherten auf eine ungesicherte Seite der gleichen Domain umzuleiten.

Solche Angriffe sind dann interessant, wenn man sich in dem gleichen WLAN-Netzwerk wie das Opfer befindet, um dann die Session Cookies abzugreifen und die Sitzung zu übernehmen.

Es muss sich allerdings nicht immer gleich um einen Angriff handeln, manchmal sind es sich auch schlicht Fehler in der Website/Web-Applikation welche den Benutzer auf einen ungeschützten Bereich umleiten.

Um solche Fehler und / oder Angriffe ins Leere laufen zu lassen kann der Webserver dem Browser des Nutzers mitteilen, wie lange er diese Domain oder auch alle Subdomains nur noch HTTPS gesichert aufrufen darf.

Um HSTS im Apache zu aktivieren, benötigt man erst das „Headers“-Modul, dieses aktiviert man mit diesem Befehl:
a2enmod headers

Jetzt trägt man den HSTS-Header in jeden VirtualHost ein, den man absichern möchte:

<VirtualHost www.kupschke.net:443>
ServerAdmin dominik@kupschke.net
DocumentRoot /var/www
Header always set Strict-Transport-Security "max-age=31556926"
</VirtualHost>

Mit dieser Anweisung sagen wir dem Browser, dass er die nächsten 365 Tage die Domain www.kupschke.net nur noch über HTTPS aufrufen soll.

Die entsprechende Dauer kann man über den Wert „max-age“ einstellen, welcher die Zeit in Sekunden aufnimmt.

Falls man zusätzlich noch alle Subdomains mit absichern möchte, erweitert man die Zeile wie folgt:
Header always set Strict-Transport-Security „max-age=31556926 includeSubDomains“

Sofern man mit seinen Systemen in der Lage ist alle Subdomains garantiert per HTTPS auszuliefern, ist eine Aufnahme der Domain in die HSTS Preload Liste sicherlich sinnvoll.
Bei der HSTS Preload Liste handelt es sich um eine Liste von Domains, die in allen großen Webbrowser fest eingebaut ist. Durch den Preload wird auch der allererste Zugriff auf den Webserver zwingend per HTTPS durchgeführt.

Um in die Preload Liste aufgenommen zu werden, muss einerseits der Header ergänzt werden:
Header always set Strict-Transport-Security „max-age=31556926; includeSubDomains; preload“

Und die Website muss auf folgendem Formular gemeldet werden:
https://hstspreload.org/

Nun dauert es noch etwas bis der Preload der Domain in den nächsten Versionen der großen Browser eingerichtet ist.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert