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 gleichem WLAN-Netzwerk wie das Opfer befindet, um dann die Session Cookies abzugreifen und die Sitzung zu übernehmen (Firesheep).
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"