Wat is HSTS en hoe beveilig je daarmee je website?

Wat is HSTS en hoe beveilig je daarmee je website?

03-07-2018 13:35:38

beveiligen-hsts-https.jpg
In een eerdere blog zijn we ingegaan op de belangen van HTTPS; een beveiligde verbinding waarmee voorkomen wordt dat privacygevoelige informatie in handen komt van kwaadwillenden. Bij gebruik van HTTPS worden gegevens versleuteld verzonden, zodat ze niet onderschept kunnen worden. Echter is het gebruik van HTTPS niet voldoende. Je wilt ook afdwingen dat die website alleen via HTTPS wordt bezocht ook al wordt er door de gebruiker een HTTP-adres in de adresbalk ingevoerd. Een logische volgende stap is dan om ook HSTS te gebruiken. Door HSTS in te stellen kun je downgrade attacks en cookie hijacking voorkomen. Hoe het werkt leggen we je hieronder graag uit.

Wat is HSTS nu precies?

De afkorting HSTS staat voor HTTP Strict Transport Security. Met deze instelling wordt er afgedwongen dat de webbrowser bij een volgend bezoek altijd HTTPS moet gebruiken. Er wordt nu niet meer geprobeerd een standaard HTTP-verbinding te maken. Sommige ‘man in the middle‘ aanvallen kunnen hiermee worden voorkomen omdat een website op deze manier niet omgeleid kan worden naar een onbeveiligde pagina.

Hoe werkt het?

Op een webserver kan ingesteld worden dat bezoekers die over HTTP binnenkomen geredirect worden naar HTTPS. In de configuratie van de website staat een header die aangeeft dat alle URL's binnen de hostname via HTTPS bezocht moeten worden. Bij ieder volgend bezoek aan de betreffende hostname wordt er onthouden dat alleen via HTTPS mag worden opgevraagd en niet het onveilige HTTP-protocol. Dit geldt voor iedere pagina of afbeelding binnen deze hostname.

In de header geef je aan hoe lang deze instructie bewaard moet worden door middel van een ‘max-age’ setting. Ook kun je aangeven of de instelling geldig is voor subdomeinen. Een lange geldigheidsduur heeft als voordeel dat ook de minder frequente bezoekers beschermd zijn. Een nadeel is dat wanneer je wilt stoppen met HTTPS, je langer moet wachten totdat de geldigheid van de HSTS-policy in alle browsers die je website hebben bezocht is verlopen.

Het instellen van HSTS in Apache

Volg onderstaande stappen voor het instellen van HSTS in Apache. Voor het gebruik van HSTS heb je een SSL-certificaat nodig.

Het activeren van de header
Zorg ervoor dat de HTTP-headerfunctie op de webserver ondersteund wordt.

Instellen header per website
Wanneer je voor een website de header voor Strict-Transport-Security wilt instellen voor bijvoorbeeld 2 jaar, moet de volgende regel worden toegevoegd aan de HTTPS vhost configuratie.

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"

Door het toevoegen van IncludeSubDomains worden ook alle subdomeinen van de website via HTTPS verbonden.

Na het opnieuw laden van de Apacheconfiguratie zie je dat voor iedere bezoeker de header is ingesteld op een verlooptijd van 63072000 seconden (2 jaar). Deze configuratieregel kan alleen worden opgenomen in de HTTPS-websiteconfiguratie (:443)  maar niet in de HTTP-versie (:80).

Het instellen van HSTS in Nginx

Wil je HSTS instellen voor een Nginxwebserver, volg dan onderstaande stappen. Ook hier geldt uiteraard dat een SSL-certificaat nodig is.

Per website moet de header ingesteld worden.

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains;";

Door het toevoegen van IncludeSubDomains worden ook alle subdomeinen van de website via HTTPS verbonden.

Na het opnieuw laden van de Nginxconfiguratie zie je dat voor iedere bezoeker de header is ingesteld op een verlooptijd van 63072000 seconden (2 jaar). Echter kan deze configuratieregel alleen worden opgenomen in de HTTPS-websiteconfiguratie (:443)  maar niet in de HTTP-versie (:80).

Meer weten over het instellen van HSTS?

Wij helpen je graag hierbij. Neem daarvoor contact met ons op via info@bit.nl of 0318 648 688.