Je eigen WordPress website managen (en hosten) geeft je veel vrijheid in hoe je je site configureert en beheert, maar helaas brengt deze vrijheid ook extra verantwoordelijkheid met zich mee. Je moet namelijk ook ervoor zorgen dat je site goed beveiligd is. Dat houdt in dat je je WordPress website ook moet beschermen tegen o.a. hackers, spam reacties en brute force-aanvallen.
Waarom wordt je website aangevallen?
Misschien heb je weleens in de logbestanden gezien dat bots of hackers op zoek zijn naar niet-existerende thema en/of plug-in bestanden. Op deze manier proberen hackers onveilige plugins en thema’s te vinden om dan in je website in te breken. Hoe weten hackers dat? Omdat WordPress open-source is, is ook de code van de niet veilige thema’s en plug-ins openbaar.
Een andere plek waar hackers actief zijn is de login pagina. Omdat er vaak een onveilig wachtwoord wordt gebruikt is het voor hackers eenvoudig om een website over te nemen. Dus zij proberen het ook bij jouw website…
Ook wij hebben regelmatig te maken met pogingen van hackers die proberen in te breken bij websites van ons en die van klanten. Natuurlijk worden de websites regelmatig geüpdatet en monitoren wij welke plugins en thema’s onveilige zijn, maar toch worden ook deze websites bezocht door hackers. In deze blogpost vertellen wij meer over de risico’s en welke maatregelen jij kan nemen.
Tegen welke aanvallen moet jij je WordPress website beschermen?
Er zijn verschillende manieren waarop je website kan worden aangevallen. De meest voorkomende zijn:
- Brute force-aanvallen op je inlogpagina: Bots proberen verschillende combinaties van gebruikersnamen en wachtwoorden om toegang te krijgen tot je website.
- Comment spam: Bots proberen spam reacties te plaatsen, zelfs bij blogposts waar reacties zijn uitgeschakeld.
- Zoeken naar onveilige thema’s en plugins: Bots zoeken naar bestanden binnen je website die kwetsbaarheden bevatten.
- Indexeren van je site: Bots doorzoeken al je pagina’s en gebruiken deze informatie voor andere doeleinden. De laatste tijd lees je veel over het indexeren van websites voor het trainen van AI.
- Spam via elke soort van inschrijfformulieren: Spambots richten zich op opt-ins en contactformulieren.
Al deze aanvallen zorgen voor een hogere belasting van je webserver dan je door reguliere bezoekers. Het probleem met WordPress, of beter gezegd de PHP-code die wordt uitgevoerd, is dat bij elke paginaweergave ook RAM geheugen en de CPU’s worden gebruikt. Beide resourcen zijn beperkt beschikbaar en hoe meer deze door een bots of hackers worden gebruikt, hoe minder er overblijft voor je belangrijke bezoekers.
Helaas kan je deze aanvallen niet helemaal weren, maar gelukkig zijn er ook mogelijkheden om deze wel te minderen.
In 5 Stappen je WordPress website te beveiligen
1) Installeer een cache plugin
De eenvoudigste manier om de uitvoering van PHP-scripts te beperken is door een cache-plugin te gebruiken. Een cache-plugin maakt een kopie van elke pagina of post en serveert de cache-versie in plaats van elke keer een pagina opnieuw te genereren. Door het gebruik van een cache module of plugin laadt je website ook veel sneller!
Welke opties zijn er?
Wij maken gebruik van WP Rocket of de cache module van NBINX. Met WP Rocket wordt niet alleen de cache-versie van een pagina of post aangemaakt, maar zorgt de plugin ook voor een verbetering van de HTML broncode waardoor de website nog sneller wordt geladen. De NGINX cache werkt in de basis zoals een cache plugin, maar er zijn geen optimalisatie opties beschikbaar.
Vraag je hostingprovider of zij de Nginx Cache gebruiken en indien niet gebruik dan WP Rocket of een andere cache plugin voor je WordPress website.
Wanneer je gebruik maakt van Cloudflare (zie ook hieronder) dan kan je pagina’s ook laten cachen. Het voordeel hiervan is dat je server minder wordt belast en Cloudflare je bestanden via een CDN serveert. Zo kunnen je bezoekers overal op de wereld je website sneller bekijken.
2) Blokkeer bots die je niet op je website wil
Er zijn goede en slechte bots. De bots van Google of Bing wil je zeker dat deze je website indexeren, maar helaas zijn er genoeg andere bots die niets te zoeken hebben op je website. Doordat zij meestal in korte tijd heel veel pagina’s aanroepen is het mogelijk dat je website traag wordt voor andere bezoekers of zelfs niet meer reageert. Daarnaast weet je ook niet wat zo een bot op je website uitspookt. Je kan er beter voor zorgen dat ze wegblijven.
Wat kan je allemaal doen?
Gebruik de web filter (proxy) van Cloudflare. Zelfs met de gratis versie kan je een groot deel van de slechte bots tegenhouden. Daarnaast heeft Cloudflare nog een aantal andere tools waardoor je website sneller door de bezoeker wordt geladen.
![Cloudflare basis instellingen](https://www.finalwebsites.nl/wp-content/uploads/2024/07/Cloudflare-basic-protection-settings.jpg)
Cloudflare basis instellingen
Naast Cloudflare gebruiken wij voor elke website de WordPress Plugin NinjaFirewall. Hiermee beschik je over een Web Application Firewall (WAF) die met honderden WordPress security regels hackers en bots kan tegenhouden. Daarnaast kan jij nog je eigen regels toevoegen, door bijvoorbeeld bots op basis van hun naam te weren.
3) Bescherm je login en registratie pagina’s
De WordPress login pagina is bij hackers bijzonder geliefd. Regelmatig worden websites met zwakke wachtwoorden en zonder extra beveiliging gehackt. Dat wil niet zeggen dat WordPress onveilig is en dit bij jou gebeurt, maar je wil ook voorkomen dat hackers voor overlast zorgen. Een bot of hacker probeert namelijk ook hier in een korte periode zoveel mogelijk loginnaam/wachtwoord combinaties in te voeren. Hierdoor wordt weer onnodig veel RAM en CPU gebruikt.
Hoe kan je de loginpagina beveiligen?
NinjaFirewall heeft een optie waarmee je de “Brute Force” attacks kan tegenhouden. Hierbij wordt op het moment dat iemand x keer een foute combinatie heeft ingevoerd een captcha challenge getoond. Bots worden herkend en gelijk geblokkeerd.
Via Cloudflare kan je een regel instellen die een soortgelijke beveiliging biedt, maar dan voordat de bot of hacker je website heeft bereikt.
![wp-login.php beveiligen met Cloudflare](https://www.finalwebsites.nl/wp-content/uploads/2024/07/Cloudflare-Custom-rule-wp-login.jpg)
wp-login.php beveiligen met Cloudflare
Voor het beschermen van de “standaard” WordPress formulieren kan je ook de plugin WP Armour installeren. Deze plugin werkt met een “honeypot” functie. Hierbij worden “fake” velden (honeypots) in het formulier geplaatst en wordt de spambot herkent door het invullen van deze velden. Wij zien regelmatig dat deze beveiliging een goede aanvulling is op de twee andere opties.
Natuurlijk kan je de loginpagina ook alleen toegankelijk maken voor je eigen IP adressen, maar dan kan je misschien niet inloggen wanneer je onderweg bent.
4) Toon een statische 404 – niet gevonden pagina
Een groot probleem met WordPress en andere PHP applicaties is, dat (bijna) alle aanvragen via 1 PHP bestand worden afgehandeld. Dus ook de aanvragen waarvoor geen bestand beschikbaar is. WordPress is dan ook verantwoordelijk voor het afhandelen van alle 404 – niet gevonden fouten. Dat betekent ook dat met elke 404 fout alle standaard database queries worden uitgevoerd, net als bij de homepage of een blogpost.
Hackers en bots gaan op zoek naar bestanden binnen je website en de meeste aanvragen leiden dan ook tot een 404 – niet gevonden fout. Als het heel veel aanvragen worden, dan kan hierdoor je website traag of onbereikbaar worden.
![Statische 404 error pagina](https://www.finalwebsites.nl/wp-content/uploads/2024/07/Static-404-error-page.jpg)
Statische 404 error pagina
Hoe voorkom je dat probleem?
Voor niet bestaande statische bestanden (bijvoorbeeld afbeeldingen, JS en CSS bestanden) kan je veel beter een statische 404 pagina tonen.
Dit zijn de stappen:
- Maak een HTML bestand aan met de naam 404.html
- Vul deze pagina met een korte tekst en bijvoorbeeld een link naar de homepage. Je kan voor de inhoud ook de 404 pagina van je WordPress thema gebruiken.
- Upload de 404 pagina naar de public_html map van je webhosting account.
- Met de onderstaande instructie vertel je de NGINX web server dat voor aanvragen met de verschillende bestandsextensies een andere 404 pagina moet worden aangeroepen. NGINX zal dan de aanvraag niet doorzetten naar het index.php bestand van je WordPress installatie. Plaats deze code bij de NGINX configuratie net onder de block die met “Location /…” begint. Het is goed mogelijk dat er al een soortgelijke instructie bestaat, in dit geval ga je deze vervangen.
Ben je niet zeker of werkt de aanpassing niet zoals verwacht? Vraag dan je hosting provider om de aanpassing voor je te doen.
Is je hostingpakket gebaseerd op Apache? In dit geval kan je de volgende code in het .htaccess bestand van je website plakken (net boven de instructies die door WordPress worden geplaatst)
5) Bescherm je webformulieren
Wanneer je de webformulieren niet voldoende beschermt, zullen bots steeds proberen om spam te sturen. Naast de overlast en vervuiling kunnen deze inzendingen ook voor de volgende problemen zorgen:
- Je website verstuurt spam naar je eigen e-mailadressen, waardoor de goede inzendingen op een gegeven moment ook in de spambox kunnen belanden.
- Je SMTP provider zet je eigen e-mailadres op de suppression lijst waardoor je geen berichten meer verstuurd en/of ontvangt.
- Bij de inschrijving voor je mailinglijst worden ook adressen verzameld van derden die ongevraagd door de spambot worden gebruikt. Stuur je dan een nieuwsbrief naar deze adressen, dan ben je volgens de AVG wetgeving in overtreding.
Hoe kan je webformulieren beter beschermen?
Met de plugin WP Armour worden de formulieren van de meest populaire contact form plugins beschermd. Voor andere kan je andere beschikbare Antispam functies gebruiken (ReCaptcha bijvoorbeeld).
Ook Cloudflare kan je met het beschermen van formulieren helpen. Ga in Cloudflare naar Security > WAF > Custom Rule. Met zo’n regel kan je verschillende pagina’s met een formulier apart beschermen.
Voor ons eigen contactformulier plugin hebben wij extra functies voor een bescherming tegen spam ingebouwd.
Je ziet dat je met Cloudflare, NinjaFirewall en WP Armour je website aardig goed kan beschermen. Ben je niet zeker van je zaak? Vraag dan altijd je websitebouwer of webhosting provider.
Meer tips om je website veilig te houden
- Kies vooral goede WordPress plugins. De populaire plugins in de WordPress repository worden regelmatig bijgewerkt en moeten in principe veilig zijn. Elke dag worden een aantal plugins gecontroleerd en bij een veiligheidsprobleem krijgt de plugin eigenaar bericht om het probleem te fixen.
- Download je plugins altijd vanaf de WordPress repository of via de website van de plugin ontwikkelaar. Gehele pakketten met premium plugins voor een erg lage prijs kunnen virussen en spyware bevatten.
- Update regelmatig je website. Zo voorkom je dat (nieuwe) veiligheidsproblemen niet worden opgelost.
- Controleer regelmatig de logbestanden voor onregelmatigheden. Ga op zoek naar bijvoorbeeld extra veel 404 meldingen of duizenden aanvragen van één en hetzelfde IP adres. Blokkeer deze IP adressen wanneer mogelijk.
- Kies een webhosting provider met DDoS bescherming. De betere hosting providers bieden deze bescherming standaard aan zonder meerprijs. De kans is niet zo groot dat jouw website slachtoffer van een DDoS-aanval wordt, maar het is wel extra veilig.
Ken jij een belangrijke beveiligingsmaatregel die in onze blogpost niet wordt genoemd? Stuur ons dan een bericht, wij zijn erg benieuwd.
Gepubliceerd in: Website optimalisatie