Top 5 beveiligingslekken in WordPress en hoe je deze kunt voorkomen

In navolging op de blogpost prevent author sniffing WordPress site in Nginx van mijn collega Giel Berkers geef ik je in dit blogpost een vijftal handige tips over hoe jij jouw WordPress installatie gemakkelijk veiliger kunt maken! WordPress is een populair doel voor hackers en er zijn een aantal stappen die je kunt toepassen om je WordPress installatie veiliger te maken. Wist je dat er wereldwijd momenteel meer dan 80 miljoen WordPress installaties zijn? Zie ook: http://en.wordpress.com/stats/ Dagelijks komen er tienduizenden bij. Dit maakt dat WordPress populairder is dan Blogger, Drupal of Joomla!.

Voorkom dat je website gehacked wordt met deze tips

Voorkom dat je website gehacked wordt met deze tips

De keerzijde van dit verhaal is dat de populariteit van WordPress er ook voor zorgt dat het platform een gewild doelwit is voor hackers. Is er namelijk 1 beveiligingslek geconstateerd dan is het mogelijk om deze toe te passen op miljoenen andere websites. Meer dan de helft van de WordPress installaties worden door de website beheerders zelf gehost. Dit houdt in dat deze administrators het grootste deel van de WordPress beveiliging voor eigen rekenen nemen. Wanneer je een standaard installatie van WordPress hebt kun je al direct een aantal beveiligingen toepassen, helaas zijn er maar weinig websites die dit daadwerkelijk toepassen. De volgende vijf strategieën zullen je WordPress installatie helpen om merkbaar veiliger te maken.

URL hacking en SQL injecties

Wat is het probleem? WordPress heeft een MySQL database backend koppeling en voert hoofdzakelijk functies en bewerkingen uit met behulp van PHP. Zo worden wijzigingen in de database gemaakt met behulp van PHP, een scripting taal. Beide karakteristieken kunnen het mogelijk maken voor WordPress om misbruikt te worden met behulp van URL hacking. Via URL hacking kan het mogelijk zijn dat er scripts op de server kunnen worden uitgevoerd waarvan dat absoluut niet de bedoeling is. Commando’s worden via de url (het adres in de adresbalk van je browser) verstuurd naar de WordPress installatie. Deze commando’s zijn door kundige hackers bedacht en in elkaar gezet die weten welke parameters WordPress verkeerd kan begrijpen om zo toegang te verkrijgen tot de website.

SQL injecties zijn een ander type aanval waarbij hackers commando’s embedden in een URL die ervoor kunnen zorgen dat de (mysql) database een bepaalde actie of handeling verricht. Uiteraard zijn deze handelingen ten goede van de hacker en hebben maar 1 doel: inbreken op je website. SQL is de taal waarmee wordt gecommuniceerd in onder andere de MySQL database. Deze aanvallen kunnen ervoor zorgen dat er gevoelige informatie “op straat” kan komen te liggen. Bijvoorbeeld gegevens over de database server zelf, zo kan een verouderde versie ervoor zorgen dat er bepaalde exploits voor beschikbaar zijn. Uiteindelijk zal het met de juist SQL injecties mogelijk zijn om toegang te kunnen verkrijgen tot de MySQL database waarop WordPress draait.

Wat kun je hier tegen doen? Onderstaande code bevat een sterk aantal regels die je kunt toepassen in je .htaccess bestand. Hiervoor moet je website wel op een Apache webserver draaien. Deze set regels strippen een aantal URL requests die gevaarlijke SQL injecties kunnen voorkomen. Werkt onderstaande code niet? Contacteer dan even je webhost en vraag of je website op een Apache webserver draait en of deze installatie mod_rewrite ondersteunt.

Toegang tot gevoelige bestanden.

Het probleem: Een typische WordPress installatie bevat een aantal bestanden waarvan je niet wilt hebben dat deze publiekelijk benaderbaar of toegankelijk zijn. 1 Van de meest belangrijke bestanden in dit verhaal is het WordPress configuratie bestand. Maar ook installatie scripts en zelfs de “readme.html” kunnen ervoor zorgen dat er belangrijke informatie over je WordPress installatie getoond wordt waarmee een exploit kan orden uitgevoerd. Het is voor hackers namelijk noodzakelijk om te weten welke versie WordPress er draait zodat zij doelgericht te werk kunnen gaan.

Wat kun je hier tegen doen? Zoals in het vorige punt beschreven is is het mogelijk om een set regels toe te passen in je .htaccess bestand. Ook voor dit probleem is het mogelijk om deze methodiek toe te passen. Voor een typische WordPress installatie zal onderstaande code voldoende zijn om gevoelige bestanden af te schermen. Deze set regels blokkeert toegang tot inzage van mappen plus een set aan specifieke regels waarmee bestanden die gerelateerd zijn aan WordPress kunnen worden afgeschermd.

Standaard admin gebruiker

Wat is het probleem? Wanneer je een WordPress installatie hebt geinstalleerd dan is de kans groot dat er een standaard account genaamd “admin” geregistreerd staat. Hackers kunnen deze gebruikersnaam gebruiken om een zogenaamde “brute force” attack uit te voeren.

Wat kun je er tegen doen? Alle elementen die voorspelbaar zijn van waardevolle informatie voor hackers die een poging doen om in te breken in je WordPress website. Ook al zal een hacker een brute force aanval moeten uitvoeren -waarbij een hele grote reeks veel voorkomende wachtwoorden worden geprobeerd aan de hand van het admin account- dan zal het de hacker vergemakkelijken wanneer de standaard account “admin” is. Het niet hebben van een administrator account met loginnaam “admin” zorgt voor een hogere moeilijkheidsgraad omdat de hacker er allereerst achter moet komen welke gebruikersnamen er geregistreerd zijn. Maak dus zeker gebruik van een onvoorspelbare gebruikersnaam voor je administrator account. Je kunt een nieuwe account registreren en vervolgens de standaard “admin” gebruiker verwijderen uit je WordPress installatie.

Standaard prefixes voor database tabellen.

Het probleem: WordPress maakt gebruik van een MySQL database. In deze database bevinden zich een aantal tabellen, standaard krijgen deze de waarde “wp_” als prefix mee. Bijvoorbeeld: wp_content, in deze tabel bevinden zich blog berichten en pagina’s. Zoals al eerder aangegeven kunnen alle voorspelbare elementen in een website in het voordeel van hackers gaan werken.

Wat kun je er tegen doen? Door het veranderen van de standaard database tabel prefixes zorg je ervoor dat de voorspelbaarheid van je website verkleind wordt. Er zijn echter veiligheid experts die beweren dat het veranderen van de standaard prefix helemaal geen weerstand biedt tegen hackers. Deze hackers kunnen namelijk andere manieren gebruiken en/of verzinnen om achter de prefixes van je database tabellen te komen. Dit is waar, echter voorkomt het wel dat er veel amateur hackers het niet lukt om in te breken op je WordPress website. Zij maken namelijk gebruik van voorgedefineerde pakketten en software tooltjes die deze exploit kunnen gebruiken. Alles wat je makkelijk kunt voorkomen is toch mooi meegenomen!

Wanneer je een nieuwe WordPress website installeert dan krijg je de optie om te defineren wat de database tabel prefix is. Dit geeft je de mogelijkheid om deze waarde in te stellen naar iets onvoorspelbaars. Wanneer je al een WordPress installatie hebt dan kun je de tabellen ook hernoemen. Ook al kan dit manueel gebeuren dan kan het toch voorkomen dat je een aantal directe database updates moet uitvoeren aan de hand van SQL queries. Mocht je niet weten hoe dit moet, dan kun je een reactie achterlaten met behulp van het reactie formulier op deze pagina.

Een veel simpelere optie om database tabellen prefixes te veranderen is door gebruik te maken van de plugin Better WP Security. Deze plugin kan meer dan alleen maar database tabellen hernoemen. Installeer deze plugin eens en bekijk de mogelijkheden die deze plugin biedt.

Brute force login pogingen

Bruteforce aanval WordPress voorkomen
Bruteforce aanval WordPress voorkomen

Eerder in dit artikel ging het al over brute force aanvallen. Hackers maken vaak gebruik van (dezelfde) scripts om het zware werk uit te voeren. Een van de functies in deze scripts is het uitvoeren van heel veel login pogingen aan de hand van een voorgedefineerde set aan (veelvoorkomende) wachtwoorden. Deze scripts proberen duizenden tot miljoenen keren in te loggen aan de hand van deze gegevens. Dit kan er niet alleen voor zorgen dat je website hierdoor erg traag wordt, het kan namelijk ook lukken!

Wat kun je doen om brute force aanvallen te voorkomen of tegen te houden? Begin allereerst met het instellen van een complexer wachtwoord. Een sterk, lang wachtwoord zal ervoor zorgen dat de bruteforce aanval veel langer gaat duren. In de meeste gevallen kan dit jarenlang duren. Wil je dit niet? Dan kun je ervoor kiezen om een limiet in te stellen voor het maximaal aantal login pogingen. Ook hiervoor zijn er meerdere plugins voor beschikbaar. Twee voorbeelden van dergelijke WordPress plugins zijn Limit Login attempt en de al eerder genoemde Better WP Security. Ik kan je erg aanraden om de Better WP Security plugin te installeren aangezien je hier ook meerdere belangrijke beveiligingsinstellingen kunt toepassen.

Deze vijf strategieën zijn het begin van het hebben van een veiligere WordPress installatie en zeker niet het einde. Zoals bij vele vormen van beveiligingen is het bijhouden van de beveiliging van je WordPress website een terugkerend proces. Heb jij ook een hele goede tip om je WordPress website beter te kunnen beveiligen? Deel het door gebruik te maken van het reactie formulier op deze pagina, ik ben erg benieuwd naar jullie tips!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *