Info

Learning a little every day

Afgelopen week was ik bezig met het migreren van een aantal persoonlijke websites van shared hosting naar Linode. Na het overzetten van alle databases en bestanden stond er nog een klein puntje op mijn actielijst: alle HTTP security headers eens nakijken en (waar mogelijk) goed instellen.

Omdat het niet iets is wat ik dagelijks doe even een samenvatting. For future reference. ;)

Wat zijn HTTP headers?

Security headers score roelioAls jij een webpagina bezoekt wisselt de server waarop die website gehost informatie met jouw browser. Onder andere over hoe je browser moet omgaan met a) de verbinding naar die website en b) de inhoud van de webpagina. Een aantal van die headers kun je inzetten om je website beter te beveiligen, de zogenaamde security headers.

Om snel te checken hoe jouw website er nu voor staat kun je deze scannen met securityheaders.com. Mijn website begon met een F en scoort nu een A (goed), maar er zijn nog verbeterpunten.

Belangrijke security headers

Er zijn een aantal HTTP security headers beschikbaar om bepaald gebruik van je website te controleren of te beperken. Allemaal gericht op het beperken van risico’s voor bezoekers. Bijvoorbeeld:

  • Strict-Transport-Security: hiermee kun je afdwingen dat browsers jouw website alleen via HTTPS inladen. Altijd aanbevolen als je al een SSL-certificaat hebt geinstalleerd.
  • X-Frame-Options: om te voorkomen dat je website via een iframe in een andere website wordt ingeladen kun X-Frame-Options instellen. Bijna altijd aan te raden, behalve als je wil toestaan dat inhoud op andere websites ‘ingesloten’ wordt.
  • X-Content-Type-Options: stelt vast dat browsers scripts en stylesheets niet mogen laden als de server niet het correcte MIME type meegeeft. Gericht op het tegengaan van XSS.
  • Referrer-Policy: deze bepaalt welke informatie via de HTTP Referer header wordt meegegeven. Je kunt kiezen uit de complete URL van herkomst, alleen de domeinnaam van herkomst, maar je kunt ook kiezen alleen een referrer mee te geven naar andere pagina’s binnen je eigen site.
  • Permissions-Policy: via browser features en API’s kunnen webpagina’s toegang vragen tot je camera, microfoon, locatie, etc. Met een Permissions-Policy stel je beperkingen in welke web features je site mag gebruiken. En die gelden dan ook voor embeds!
  • Content-Security-Policy: met een CSP stel je heel precies in welke bronnen vanaf welke domeinen mogen worden geladen. En of inline javascript (XSS risico) geladen mag worden. Op de infosec-website van Mozilla vind je meerdere voorbeelden van Content Security Policies.

Security headers instellen

HTTP Security Headers kun je instellen via server-configuratiebestanden, maar ook via plugins/modules van jouw CMS. De eerste optie vond ik het makkelijkst. Zoals altijd: maak even een back-up van de configuratie-bestanden voordat je iets wijzigt.

Op Nginx is dit mijn aanbevolen configuratie (in /etc/nginx/sites-available/sitenaam.conf) :

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;

 

Gebruik je Apache, dan kun je dit toevoegen aan je .htaccess file:

# HTTP security headers

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"

In deze aanbevolen configuraties mis je nog Content-Security-Policy, Referrer-Policy en Permissions-Policy. Hiervoor zul je je wel even iets moeten inlezen. De configuratie hiervan hangt af van de opzet van je site. Gebruik je daar 3rd party scripts (analytics) of stylesheets (web fonts)? En hoe belangrijk vind je het dat een referrer wordt meegegeven via kliks vanaf jouw website?

Maar als je voor jezelf die vragen hebt beantwoord ben je klaar. Toch? Nou nee, er zijn alweer nieuwe security headers in aantocht. En ook andere aspecten kun je waarschijnlijk verder aanscherpen (zoals DNSSEC). Met bijvoorbeeld Mozilla’s Observatory en Internet.nl kun je uitgebreider scannen hoe veilig jouw site geconfigureerd is. Bij de eerste scoort roel.io slechts een F 😞, bij de tweede pas 70 van maximaal 100 punten. Werk aan de winkel dus!

Verder lezen?

Attack surface cory doctorow

TL;DR – Aanrader!👍

Attack Surface van Cory Doctorow is een cyberpunk-boek met veel actie dat lekker wegleest, en hoop geeft! Het speelt zich af in een versie van onze wereld waar de mogelijkheden van (internet)technologie zijn gedramatiseerd. De verhaallijn sluit aan op twee eerdere boeken (Little Brother en Homeland), maar je kunt het prima los lezen. Dat deed ik ook.

Verhaal

In reactie op terrorisme is het surveillance-industriële complex wereldwijd een (nog) belangrijker bedrijfstak geworden. Daar verdient hoofdpersoon Masha goed geld, maar met gewetensbezwaren. Want ze weet precies wat voor effect haar werk heeft op de mensen die zij in de gaten houdt.

Het verhaal begint in een fictieve Oost-Europese republiek waar Masha overdag namens het regime de oppositie monitort. ’s Avonds zoekt ze die idealistische actievoerders juist op om ze te leren zich beter te wapenen tegen surveillance-technologie.

Via flashbacks leren we stap-voor-stap hoe Masha in de wereld van de surveillance terecht is gekomen, en welke keuzes ze daarbij heeft gemaakt.

Technologie (niet) uitgelegd

In het boek gebruikt Doctorow aardig wat tech-termen. Maar deze legt hij niet uit. Zoals Ton in zijn recensie aanhaalde is dat om je te stimuleren daar zelf naar op zoek te gaan. Één fan heeft dit al gedaan, en verzameld in de Mashapedia. Zodat je snel kan opzoeken wat een ‘IMSI-catcher’ of een ‘dazzle mask’ zijn.

Morele dilemma’s

Nadat het misloopt in Oost-Europa gaat Masha terug naar de VS om een vriendin te helpen. Een vriendin die juist opkomt tegen de bijna autoritaire combinatie van overheid en surveillance-industrie.

Waar de eerdere twee boeken idealistisch young-adult waren, richt Doctorow zich met Attack Surface op volwassenen. In Wired legt hij uit waarom:

“The thing adults do is confront their moral legacy. They look back on what they’ve done and they think about their regrets,” Doctorow says. “The ongoing process of being an adult is having been corralled into compromises and then making sense of those compromises for yourself.”

Dat is de rode draad in het boek. Als white hat hacker (ingehuurd) binnen het overheidsapparaat heeft Masha veel foute keuzes gemaakt. Wanneer ze die onder ogen begint te zien, kan ze ook nauwlijks richting zichzelf verantwoorden.

Sterk is hoe het boek je meeneemt in haar gedachtengang dat technologie allesbepalend is, en dat je je als burger-onder-surveillance niet aan die technologie kunt onttrekkken. Techno-utopisme, zoals Silicon Valley graag predikt, met een cynische ondertoon. Want je kunt er niet aan ontsnappen.

Als realistische techno-optimist maakt Doctorow daar tegen het einde van het boek een punt over.

“Technology is a tool that gives us the space to make political change. Politics are a tool we use to open the space for making better technology.”

En dat geeft niet alleen Masha hoop. Mij ook.