De HTTP Strict Transport Security (HSTS) protocol voor je website

Security headers for your website by MJB Events PRFoto: © MJB Events PR

De HTTP Strict Transport Security (HSTS) protocol voor je website

Websites hebben verschillende technieken om beveiligd te worden. Naast de standaard techniek van een SSL Certificaat kan je ook gebruik maken van het zogeheten HTTP Strict Transport Security (HSTS) protocol. Maar wat betekend dit protocol eigenlijk en hoe stel je dit in op je website? In dit artikel leg ik het HSTS protocol aan je uit.

Wat is HTTP Strict Transport Security (HSTS)?

De HTTP Strict Transport Security (HSTS) is een protocol waarmee je ervoor kunt zorgen dat je website alleen via een beveiligde verbinding kan worden benaderd. Dit is te herkennen aan het groene slotje voor de URL met de verbinding https:// voor de URL, in plaats van de onbeveiligde verbinding http://. (Dit moet niet verward worden met het redirecten van je bezoekers van http:// naar https://, omdat dit een andere soort van doorverwijzen is).

Door deze techniek in te stellen zorg je ervoor dat je website en bezoekers alleen de website via een veilige manier kunnen bereiken. Hierdoor voorkom je dat je bezoekers slachtoffer kunnen worden van de man in the middle attack en de SSLstrip attack. Deze twee soorten aanvallen zullen hieronder toegelicht worden

 

Man in the middle attack

De man-in-the-middle-attack, ook bekend onder de MITM-aanvallen, is een cyberaanval door criminelen op een website. Dit is een aanval waarbij cybercriminelen berichten of informatie kunnen onderscheppen die vanaf jouw website of naar jou verstuurd worden. Denk daarbij maar aan transacties, het versturen en ontvangen van e-mail berichten, of het verzenden van informatie via een online formulier (zoals een contactformulier of het aanmaken van een account).

Dit is mogelijk zolang het verstuurproces nog niet voltooid is. Om dit in een begrijpelijk voorbeeld te plaatsen zal ik dit uitleggen aan de hand van het versturen van post. Wanneer website x een e-mail wil gaan versturen, dan zal het pakketje of brief gereed worden gemaakt. Deze zal dan afgeleverd worden bij ontvanger y. In de tussen tijd kan de postleverancier het pakketje of brief overdragen. Wanneer je website (en communicatieverkeer) kwetsbaar is, dan zou een cybercrimineel dus het pakketje of de brief kunnen onderscheppen en kijken wat erin staat. Op die manier kan de informatie misbruikt worden voor criminelen doeleinden. Dit voorbeeld is in een offline scenario geplaatst, maar speelt binnen de man in the middle attack digitaal af.

Mogelijke doelwitten voor de man in the middle attack zijn bijvoorbeeld websites van webwinkels, websites van banken, websites waar transacties met geld worden uitgevoerd of waar veel (persoonlijke) gegevens bijeenkomen die gebruikt kunnen worden om (persoonlijke) data te misbruiken. Het kan hierbij gaan om de grotere websites, maar ook om kleinere websites.

Binnenkort zal ik een artikel schrijven over de soorten man in the middle attack en hoe je dit kunt herkennen. Hierdoor ben jij (en de mensen om je heen) beter beschermt tegen cybercriminaliteit en weet je hoe je eenvoudig zulke situaties direct kunt herkennen.

SSLstrip attack

Dit is een manier waarbij cybercriminelen de beveiligde verbinding (https://) tijdelijk doorbreken om bepaalde aanpassingen in de verbinding te maken. Bijvoorbeeld via een open Wi-Fi netwerk in het openbaar vervoer of bij dat leuke restaurantje op de hoek. Zo kan bijvoorbeeld de crimineel een code toevoegen of cookies toepassen waarmee data verzameld kan worden. Vervolgens wordt de verbinding daarna weer beveiligd waardoor het voor de gebruiker eruit ziet dat de website goed beveiligd is, maar in werkelijkheid niet zo is. Door gebruik te maken van het HSTS protocol en de website aan te melden op de website van HSTS preload kan dit voor het grootste gedeelte voorkomen worden.

 

Hoe pas het HTTP Strict Transport Security (HSTS) protocol toe?

Om het HTTP Strict Transport Security (HSTS) protocol toe te kunnen passen heb je in eerste instantie een SSL Certificaat nodig. Dit kan een betaald certificaat zijn of het gratis (onveilige) Let’s Encrypt protocol dat door veel webhosting aanbieders beschikbaar zal worden gesteld.

Waarschuwing: In de onderstaande stappen zal er uitgelegd worden hoe je aanpassingen kunt maken in het .htaccess bestand. Hierdoor zou je, als je per ongeluk een fout maakt, de website niet meer kunnen laten werken. Daarom raad ik aan om eerst een back-up te maken van het .htaccess bestand. Wanneer je website niet meer goed werkt, dan kan je deze back-up uploaden naar je websiteserver waardoor je website weer goed werkt. Vertrouw je het niet volledig? Dan kun je altijd contact met mij opnemen. Dan help ik bij het instellen van de HSTS verbinding.

Wanneer je SSL Certificaat geactiveerd is en je website bereikbaar is via https://www.domeinnaam.nl, dan kan je doorgaan naar de volgende stap. Hiervoor moet je inloggen op je webserver (mocht je deze gegevens niet meer hebben, dan kan je die opvragen bij je webhosting). Navigeer vervolgens naar je public_html map waarin je website staat. In deze map (je rootfolder van je website) staat in de meeste gevallen al een .htaccess bestand. Anders kan je deze eenvoudig aanmaken via je webserver.

Open vervolgens dit bestand en scrol helemaal naar beneden. Op deze plek gaan we de onderstaande code toevoegen aan het .htaccess bestand.

<IfModule mod_headers.c>
Header always set Strict-Transport-Security “max-age=31536000; preload;” env=HTTPS
</IfModule>

In deze code zien wij de opmerking <IfModule mod_headers.c>. Hiermee laten we zien dat de code, die tussen deze elementen staat, alleen uitgevoerd mogen worden op een Apache webserver waarbij de module mod_headers geactiveerd is. De tijd die aangegeven staat bij max-age is de hoeveelheid seconden dat een browser je website mag openen via https. Wanneer je website binnen dezelfde periode nogmaals zal worden geopend, dan zal deze tijd worden gereset. Het getal 31536000 staat voor de eenheid seconden, dat standaard één jaar duurt.

Subdomeinen met het HSTS protocol

Niet alle websites maken gebruik van subdomeinen. Een subdomein is bijvoorbeeld https://leden.domeinnaam.nl of https://shop.domeinnaam.nl. Ik raad altijd wel aan om ook de subdomeinen mee te nemen in het HSTS protocol, zodat je daar later geen omkijken naar heb als je toch besluit om subdomeinen aan te maken. Om deze ook geforceerd over https:// te openen met het HTTP Strict Transport Security protocol kunnen we de optie includeSubDomains toevoegen. Dan komt de code er als volgt eruit te zien.

<IfModule mod_headers.c>
Header always set Strict-Transport-Security “max-age=31536000; preload; includeSubDomains” env=HTTPS
</IfModule>

Let erop dat je deze code moet vervangen door de eerdere code als je die al had toegepast. Anders krijg je twee dezelfde soort codes in je .htaccess bestand te staan waardoor er conflicten kunnen optreden.

Preload lijst voor het HSTS protocol

Het is mogelijk om je website op de preload lijst te plaatsen. Hierdoor kunnen browsers een HSTS preload lijst hanteren. Door je website op zulke HSTS preload lijsten te plaatsen, dan weten browsers (zoals Google Chrome), dat jouw website altijd via https:// geopend moet worden. Op deze manier voorkom je eigenlijk dat je website onveilig geladen zal worden.

Om je website hiervoor in aanmerking te laten komen moet je de code, die je eerder hierboven heb toegevoegd, aanpassen. Dit doe je door de code te vervangen met de onderstaande code.

<IfModule mod_headers.c>
Header always set Strict-Transport-Security “max-age=31536000; preload; includeSubDomains” env=HTTPS
</IfModule>

 

 

Testen van je website

Om je website te kunnen controleren of alles goed ingesteld staat kun je verschillende websites raadplegen. Allereerst kan je gebruik maken van de website Security Headers. Op deze website kan je kijken hoe je beveiliging van je website op dit moment ervoor staat. Scoor je een A, dan zou je via de website van Internet.nl je website in de Hall of Fame kunnen plaatsen. Heb je nog geen A(+), dan kan je nog andere toepassingen verrichten zodat je website extra beveiligd kan worden.

Een tweede website die je kunt gebruiken is de website Hardenize. Op deze website krijg je (gratis) advies over hoe je je website beter kunt beveiligen. Dit gaat zowel over je website als over je mailverkeer. Als alles goed ingesteld staat, dan zijn de vierkantjes groen geworden. Staat het op rood of grijs, dan is er werk aan de winkel. Oranje vierkantjes kunnen waarschuwingen zijn voor bepaalde toepassingen of kunnen erop wijzen dat de betreffende beveiliging voor een deel beveiligd is.

Tot slot, wanneer je de HTST protocol heb toegepast, zou je dit kunnen controleren door te navigeren naar de website HSTS preload. Op deze website vul je jouw website in en klik je op Check HSTS preload status and eligibility. Hierdoor kan je controleren of je website goed beveiligd is volgens het HSTS protocol. Wanneer dit zo is, dan kun je een verzoek indienen om de website op te laten nemen in de HSTS preload list. Dit proces kan enkele weken duren.