How to

Zo verbeter je zelf gemakkelijk de beveiliging van je WordPress-site

0

Wist je dat ongeveer één derde van alle websites op het internet gebruik maakt van WordPress? Van alle sites die een Content Management System (CMS) gebruiken, is dit aandeel zelfs bijna zestig procent. Zoals jouw site, zijn er dus heel veel. Maar hoe kun je de beveiliging van je WordPress-site verbeteren?

De reden voor het grote marktaandeel van WordPress is makkelijk te verklaren. Het is bijzonder eenvoudig in gebruik, wordt door bijna elke hostingpartij ondersteund en is heel makkelijk aan te passen naar eigen wensen. Ook voor de prijs hoef je het niet te laten: een WordPress-site (inclusief domeinnaamregistratie) heb je al voor minder dan een tientje per jaar.

Bron: W3Techs

Maar dat wat ruim voorhanden is, is ook heel aantrekkelijk voor kwaadwillenden. Een zakkenroller tref je immers ook eerder aan op een drukbezochte markt dan in een verlaten weiland. Daar komt bij dat gebruikers van WordPress doorgaans geen ontwikkelaars zijn, maar mensen zoals jij en ik die iets op internet willen etaleren.

In mijn geval is dat de website van de dansschool waar ik op les zit, mijn vriendin heeft een website voor haar eenmanszaak en de buurvrouw doet iets met gezonde voeding. Binnen mijn kennissenkring tel ik zo meerdere sites die allemaal beheerd worden door ‘normale mensen’.

Zelf verantwoordelijk voor beveiliging

Je bent als eigenaar zelf verantwoordelijk voor de beveiliging van jouw WordPress-site, maar wellicht niet bekend met de ins en outs van cybersecurity. Je kunt hier natuurlijk een professionele partij voor inschakelen. Maar als gewone gebruiker een securitybedrijf inschakelen, is misschien iets te veel van het goede.

Er is gelukkig ook veel wat je zelf kunt doen. En dat scheelt. Enorm. Laat je niet afschrikken door de onbekende termen, want zoals met alles in het leven: als je er eenmaal bekend mee bent, is het niet zo moeilijk.

Maar waarom zou je eigenlijk?

Wat kan er nou misgaan met zo’n simpele site als die van mij? Inderdaad, als ik nadenk over de site van de dansschool die ik onderhoud, dan is er geen man overboord als die een paar dagen uit de lucht zou zijn of niet goed meer werkt. Ik ben al blij als er een paar bezoekers per week zijn.

En hier gaat het mis, want de gedachte dat het allemaal wel mee zal vallen met de gevolgen, is beredeneerd vanuit het perspectief van de gewone gebruiker. Een kwaadwillende kan echter een slecht beveiligde site overnemen en inzetten voor foute zaken. Het versturen van spam e-mails vanaf de gecompromitteerde site is dan nog relatief onschuldig. Maar wat als jouw site mee gaat doen met een door hackers gecoördineerde aanval op grote bedrijven, links aanbiedt naar software die ransomware bevat of kinderporno gaat hosten? Je moet er niet aan denken.

Als er persoonsgegevens zijn buitgemaakt, moet je ook melding doen bij de Autoriteit Persoonsgegevens en (in bepaalde gevallen) ook bij de mensen van wie de persoonsgegevens zijn gelekt. Hoe onschuldig je eigen site dus ook is, je kunt wel degelijk (imago)schade oplopen door misbruik.

7 maatregelen waarmee je de beveiliging van je WordPress-site verbetert

Er zijn twee gebieden waar je zelf iets kunt doen: de inrichting van WordPress zelf en de hosting. Ik geef je enkele tips die je, zonder al te veel moeite of met een klein beetje hulp, kunnen helpen jouw site direct veiliger te maken.

Laten we beginnen met aanbevelingen die iedereen eenvoudig door kan voeren en waarvan ik denk dat je dit als eerste zou moeten doen. Heb je de smaak te pakken? Lees dan door en dan gaan we steeds een stap verder.

1. Gebruik persoonlijke beheerderaccounts met een sterk wachtwoord

De standaard gebruikersnaam voor de beheerder in WordPress is ‘admin’. Als deze niet vervangen wordt, is de helft van de gebruikersnaam-wachtwoord combinatie al weggegeven.

Maak daarom voor de beheerder(s) een persoonlijk account aan en schakel ‘admin’ uit. Gebruik dan ook gelijk een sterk wachtwoord van een fatsoenlijke lengte. Het risico dat iemand zich toegang verschaft door een voor de hand liggend wachtwoord te gebruiken, is hiermee verleden tijd.

2. Houd WordPress (inclusief thema’s en plugins) up-to-date

Het is misschien het meest gehoorde advies en het is ook zeker van toepassing op WordPress: houd alles up-to-date. Niet alleen WordPress zelf, maar ook thema’s en plugins worden doorlopend bijgewerkt. Kwaadwillenden zijn altijd op zoek naar manieren om gebruik te maken van lekken in de beveiliging. Onlangs slaagden zij hier ook weer in.

Door software continu bij te werken, wordt de tijd om misgebruik hiervan te kunnen maken zo klein mogelijk. Altijd up-to-date zijn zal in veel gevallen voorkomen dat jouw site misbruikt kan worden door middel van een bekend lek.

3. Gebruik alleen wat je nodig hebt

Tijdens het inrichten van je site ben je wellicht op zoek gegaan naar plugins die je bepaalde functionaliteit bieden. Je installeert er een aantal, probeert ze en gebruikt uiteindelijk die plugins die de moeite waard zijn. Controleer of er nog plugins geïnstalleerd zijn die je niet nodig hebt of niet meer gebruikt. Plugins moeten door de ontwikkelaar bijgehouden worden en bevatten misschien kwetsbaarheden.

Door zo min mogelijk plugins te gebruiken, verklein je dit risico. Gebruik de plugins van WordPress als startpunt en controleer van de plugins die je wel wil gebruiken of deze getest zijn met jouw versie van WordPress en lees de beoordelingen door.

4. Installeer een SSL-beveiligingscertificaat en bied je site aan via HTTPS

Als je nog geen beveiligingscertificaat hebt, wordt het hoog tijd. Informatie die onversleuteld verzonden wordt over het internet, is niet meer van deze tijd. Ik zal niet te diep ingaan op de implicaties, maar ook partijen zoals Google gaan de strijd aan met sites zonder beveiligingscertificaat. Hun populaire browser Chrome waarschuwt gebruikers nu nog op een relatief milde manier, maar ze hebben al aangegeven dat dit zeer binnenkort gaat veranderen.

Google Chrome nu en straks. Bron: Google Blog.

 

Er zijn verschillende partijen waar je een SSL-certificaat kunt aanschaffen; zie SSL Certificaten voor een overzicht van de kosten en beschikbaarheid. Voor de prijs hoef je het niet te laten, de traditionele aanbieders leveren al een certificaat vanaf acht euro per jaar. Via Let’s Encrypt kun je zelfs gratis certificaten krijgen die negentig dagen geldig zijn. Deze kunnen automatisch vernieuwd worden voor een doorlopende beveiliging. De inrichting hiervan vereist wat meer werk, maar steeds meer hostingpartijen richten hiervoor hun omgeving in.

Als je hulp nodig hebt met het aanvragen en/of installeren, kun je terecht bij je hostingpartij. Die van mij deed de aanvraag en de installatie van een certificaat welke drie jaar geldig is voor veertig euro. Het heeft mij nog geen vijf minuten gekost, maar ik ben wel voor drie jaar klaar.

Heb je een SSL-certificaat geïnstalleerd na de installatie van WordPress? Gebruik dan de plugin Really Simple SSL om eenvoudig je site te migreren naar HTTPS. De plugin scant je site en past alles automatisch voor je aan.

5. Beperk het aantal inlogpogingen

Standaard staat WordPress een onbeperkt aantal inlogpogingen toe. Het is beter om het aantal inlogpogingen te beperken. Dit kan eenvoudig gerealiseerd worden door gebruik te maken van een plugin. Er zijn verschillende plugins verkrijgbaar die het aantal pogingen kunnen terugbrengen. Een veelgebruikte basis plugin die dit voor je kan doen, is Limit Login Attempts Reloaded.

6. Scherm het beheergedeelte extra af

Een standaardinstallatie van WordPress levert het beheergedeelte van het CMS op onder /wp-admin/. Op zich is daar niks mis mee, maar is het echt nodig dat het hele internet toegang heeft tot deze bekende ingang? Natuurlijk zit er een slot op de ingang (in de vorm van een gebruikersnaam en wachtwoord), maar we vinden het ook niet prettig als ongenode gasten aan onze voordeur staan te rammelen. Ook al zit er een goed slot op.

Er zijn verschillende manieren om toegang tot het beheergedeelte extra te beveiligen. Eén manier om de toegang tot de /wp-admin/-locatie extra af te schermen, is door de map op de webserver te beveiligen. Dit kan doorgaans via het control panel van de hostingpartij en heet Directory Beveiliging of Beveiligde Mappen (of iets wat daarop lijkt). Het is hier mogelijk om een extra gebruikersnaam en wachtwoord in te stellen. Als je nu naar /wp-admin/ gaat, wordt hierom gevraagd, voordat de pagina getoond wordt.

Een andere manier is om de inlogpagina te hernoemen. Dat kan eenvoudig met de plugin Rename WP Login. Let wel op bij het gebruik van deze plugin dat je de nieuwe locatie goed onthoudt en niet jezelf (en andere gebruikers die moeten inloggen) buitensluit.

We vinden het niet prettig als ongenode gasten aan onze voordeur staan te rammelen. Ook al zit er een goed slot op.

7. Pas je HTTP response headers aan

Zogenaamde HTTP response headers kunnen het verkeer van en naar je site beïnvloeden op basis van bepaalde criteria. Ze geven dus bepaalde regels door aan de browser wat er wel en niet mag gebeuren. Een voorbeeld hiervan is dat jouw site niet ingesloten mag worden in een andere site. Dat lijkt onschuldig, maar kwaadwillenden kunnen op deze manier gebruikers (valide) acties uit laten voeren op jouw site, zonder dat ze dit zelf doorhebben.

Jouw site wordt als het ware verborgen achter een andere site, maar de muisklikken worden wel degelijk uitgevoerd op jouw site. Denk aan het navigeren naar een profielpagina en het opvragen van persoonlijke gegevens. Als de gebruiker al ingelogd was, wordt dit verzoek gewoon uitgevoerd op de achtergrond en komen de gegevens, weliswaar niet zichtbaar voor de gebruiker, in beeld. De aanvaller heeft nu jouw gegevens. Dit type aanval heet ‘clickjacking’ en kan voorkomen worden door de X-Frame-Options header correct in te stellen.

Voorbeeld van clickjacking

De hostingpartij kan de HTTP response headers voor je instellen, maar vaak kun je het ook zelf doen via een control panel dat bij het hostingpakking wordt aangeboden, bijvoorbeeld cPanel of SATserver. Als je geen toegang hebt tot een control panel, dan is het ook mogelijk om veel van deze instellingen te zetten via een WordPress-plugin. Deze configureert de HTTP response headers dan via PHP, maar de uitkomst is hetzelfde. Gebruik bijvoorbeeld de plugin HTTP headers to improve web site security.

Via securityheaders.io kun je je eigen site controleren. Daarnaast kun je hier uitleg vinden over de betekenis van de verschillende headers. De aanbevolen waarden van de meest gebruikte, zie je hieronder. Deze zijn, in de meeste gevallen, zonder risico over te nemen en voorkomen de meest basale manieren om het verkeer van de site te beïnvloeden.

HeaderWaarde
X-Frame-OptionsSAMEORIGIN
X-Xss-Protection1; mode=block
X-Content-Type-OptionsNosniff
Referrer-Policyno-referrer-when-downgrade

Als je een SSL-certificaat hebt geïnstalleerd voor je site, kun je de volgende header ook instellen. Deze dwingt af dat al het verkeer over de beveiligde HTTPS-verbinding loopt.

HeaderWaarde
Strict-Transport-SecurityincludeSubDomains

Een andere header die te maken heeft met beveiliging, is de Content-Security-Policy header. Deze vereist echter vergaande kennis van de werking van de eigen site en is niet eenvoudig te implementeren. Een verkeerde implementatie zorgt voor veel problemen met externe content die door thema’s en plugins wordt gebruikt.

Hoe beveilig jij jouw WordPress-site?

Elk van de genoemde maatregelen die je zou kunnen treffen, draagt bij aan een betere beveiliging van jouw WordPress-site. Hoe meer je van deze maatregelen toepast, des te moeilijker het wordt voor kwaadwillenden om jouw site te misbruiken.

WordPress zelf is geen slecht beveiligd CMS. Met de hierboven gegeven informatie hoop ik dat je benieuwd geworden bent naar de inrichting van jouw site. Laat me gerust weten wat de uitkomst is van de scan via securityheaders.io en of je naar aanleiding van dit artikel aanpassingen hebt gemaakt. Heb jij nog andere ideeën of aanvullingen? Laat dan een reactie achter onder dit artikel.