Hoe beveilig je je WordPress website?
Nog niet zo gek lang geleden werd de wereld opnieuw ‘opgeschrikt’ door een beveiligingslek in WordPress. Of eigenlijk in een populaire plugin hiervoor. De plugin ‘Broken Link Checker‘, die ik enkele maanden geleden terloops heb genoemd, bleek een fout te bevatten, die het mogelijk maakte om WordPress ‘binnen te dringen’.
Het mooie van Open Source software is dat dit soort ‘lekken’ vaak vroegtijdig wordt gedetecteerd en er snel actie wordt ondernomen.
Zo’n gebeurtenis doet je echter wel even stilstaan bij de vraag, hoe serieus jij je beveiliging nu eigenlijk neemt en wat je doet om misbruik te voorkomen.
Ik hoef mij geen zorgen te maken, ik heb toch geen geheime informatie op mijn site.
Wanneer ik het met mensen heb over de veiligheid van hun website, dat hoor ik nogal eens, dat het niet op hen van toepassing is. Want zij hebben geen ‘geheime informatie’ op hun site, alleen maar een paar pagina’s met informatie over hun bedrijf. Wie zou hun site nu willen hacken?
Je zal versteld staan wie dat allemaal zou willen. Want één ding waar je je goed van bewust moet zijn, is dat het de hacker van websites zelden te doen is om ‘geheime informatie’. De twee meest voorkomende redenen waarom mensen sites hacken zijn heel andere.
Ik kan het, dus ik doe het – Vandalisme
Eén reden om je site te hakken is puur vandalisme. Het is het online equivalent van de ramen van een bushokje inslaan. Een hacker die om een dergelijke reden jouw website hackt zal typisch een vorm van ‘defacing’ achterlaten. Jouw website zal allerlei pop ups vertonen, boodschappen van politieke groeperingen of wat dan ook. Je website is weg en de mensen die op jouw site komen krijgen dingen te zijn, waar jij niet mee geassocieerd wilt worden.
Onderdeel van een botnet
Een tweede reden om jouw website te hacken is om het onderdeel te maken van een ‘botnet’. Jouw website blijft gewoon intact, maar er wordt wat extra software geïnstalleerd, waardoor je site wat extra ’taken’ krijgt. Bijvoorbeeld het verzenden van spam email, het proberen in te breken in andere sites, of onderdeel te worden van een uitgebreide DDOS (Distributed Denial of Service) aanval op de één of andere grote organisatie.
Dit zal veelal ongemerkt gebeuren, tot op het moment dat jouw hostingprovider klachten van derden krijgt en besluit jouw account te beëindigen. Ook iets wat je liever wilt voorkomen.
Kortom, wat voor website je ook hebt, beveiliging is voor jou een issue.
De basisstappen
Ik kan het niet vaak genoeg zeggen, maar regelmatige back ups maken, het periodiek updaten van je plugins, thema’s en WordPress zelf en een betrouwbare hoster zijn de belangrijkste stappen in een veilige website.
Een ander belangrijk onderdeel is te zorgen voor een ‘juiste’ PHP versie. WordPress heeft PHP nodig om te kunnen ‘draaien’. Op dit moment wordt bijvoorbeeld PHP 7.0 niet meer ‘onderhouden’ en heb je eigenlijk 7.1 of hoger nodig om nog veilig met WordPress te kunnen werken. Je hoster zal je niet altijd uit eigen beweging vertellen, dat jouw PHP versie niet meer courant is. Dit zijn typisch zaken die door de ‘Health Check and Trouble Shoot‘ plugin wel worden gesignaleerd.
En last but not least, het is natuurlijk altijd verstandig gebruik te maken van SSL/TLS, waardoor je jouw site alleen nog maar via HTTPS zal benaderen.
Maar behalve deze basisstappen, kan je nog meer doen om je site veiliger te maken.
Cloudflare
Ik heb in het verleden meer dan eens over Cloudflare geschreven. Eén van de dingen die dit platform doet is het stoppen van al het verkeer waarvan bekend is dat het van onbetrouwbare IP adressen afkomstig is. Cloudflare heeft echter geen kennis van wat voor website er nu beveiligd wordt, of dit nu een WordPress of een Drupal website is bijvoorbeeld, en zal dus gedrag gericht op het hacken van websites niet detecteren. Gelukkig zijn hier echter plugins voor, die dit wel doen.
Maak WordPress onzichtbaar!
De eerste stap in het hacken van een site is meestal het identificeren van het type site. Een hacker zal namelijk niet zelf site voor site proberen te hacken, maar zal een ‘methode’ hebben die werkt voor een groot aantal sites. Zoals bijvoorbeeld het aan het begin van dit artikel besproken veiligheidslek in een populaire plugin.
De eerste stap zal dus zijn, sites te vinden die
- WordPress sites zijn en
- Deze ‘lekke’ versie van de plugin geïnstalleerd hebben staan.
Nu is er een groot aantal manieren om te detecteren of een site een WordPress site is. De makkelijkste manier is in de code van een willekeurige pagina te kijken, waar vrolijk staat aangegeven met welke versie van WordPress de pagina is gegenereerd. Een tweede manier is natuurlijk om te kijken, wat de respons is op het aanroepen van de /wp-admin/ URL.
De plugin Hide My WP verbergt het feit dat jij WP gebruikt voor de buitenwereld en verkleint hierdoor de kans, dat je gehackt zal worden. Bovendien is de plugin in staat om een aantal populaire methoden van ‘hacken’ te herkennen en te stoppen.
Stop het verdachte verkeer
Een andere manier om je site te beveiligen, is al het verkeer wat enigszins verdacht is te stoppen. En dat is precies wat Blocker. (de punt is onderdeel van de naam) doet. De plugin analyseert het verkeer en kijkt hoe ‘betrouwbaar’ het is. Enkele voorbeelden
Het valideren van bots
In principe zijn er twee vormen van verkeer, die naar je site toe kunnen komen. Bezoekers, die je webpagina’s bekijken, en bots. De meeste van deze bots zijn hulpprogramma’s van zoekmachines die proberen jouw site te indexeren, en je ziet deze ongetwijfeld graag verschijnen.
Er is echter ook een aantal bots met minder eerbare bedoelingen. Bijvoorbeeld bots die op zoek zijn naar lekken in je veiligheid. Deze bots zie je liever helemaal niet komen.
Ieder programma wat contact legt met jouw website zal een zogenaamde ‘Agent ID’ doorgeven. Een leesbare tekst, die bijvoorbeeld aangeeft welke browser gebruikt wordt. Of van wie de bot afkomstig is.
Nu zal een bot met slechte bedoelingen zichzelf niet identificeren als ‘Bad Intentions Bot’ of zoiets, maar eerder net willen doen, alsof hij een ‘gewone’ bot, of zelfs een browser is.
Het aardige van de Blocker. plugin is dat deze in staat is de meeste bots en browsers te identificeren. Zegt een bot bijvoorbeeld een ‘GoogleBot’ te zijn, dan wordt er gecontroleerd of het IP adres waar de bot vandaan komt ook wel een aan Google gerelateerd IP adres is.
Analytics spam
Als je niets met Google Analytics doet, dan zal je het niet zo snel merken, maar spammers hebben een heel nieuw spam kanaal ontdekt. Hierover heb ik enkele jaren geleden al geschreven. Het begon allemaal met Semalt.com, maar inmiddels zijn er letterlijk honderden sites die nep-referrals naar je website sturen, in de hoop, dat jij er ooit op zal klikken om te zien welke sites naar jou verwijzen.
Dat doen die sites dus niet. Maar wat ze wel doen is het vervuilen van je statistieken. Blocker. herkent dit soort ‘vervuilers’ en zal ze dan ook blokkeren.
Comment spam blokkeren zonder Akismet
Wanneer je een commerciële site hebt, dan moet je voor Akismet betalen. En ofschoon het niet veel is, is het toch een terugkerende kostenpost. Blocker. blokkeert comment spam. Ik heb het een maandje op proef gedraaid op de WordXPression site -de site waar ik de meeste spam krijg- en ik moet toegeven, dat er vrijwel geen spam door het filter kwam. Omdat Akismet ook af en toe iets laat passeren, is het voor mij volledig acceptabel dat er incidenteel een berichtje doorheen komt.
Conclusie
Twee plugins die je prima naast elkaar kan gebruiken om je website beter te beveiligen. Natuurlijk. Er zijn tientallen andere security plugins, waarmee je deze taken ook kan verrichten, maar mijn grote probleem met veel van deze plugins is de enorm ingewikkelde configuratie en het grote aantal ‘false positivives’, waarschuwingen die een mogelijk veiligheidsprobleem aangeven, maar eigenlijk geen echt probleem zijn. Hierdoor heb je als gebruiker van dit soort plugins al snel de neiging de waarschuwingen in zijn geheel te negeren.
Maar een combinatie van de in dit artikel besproken plugins, plus de eerder besproken -en hier genoemde- ‘Health Check’ is een goede combinatie voor de basis-beveiliging van jouw WordPress website.