WordPress Beveiliging – 25 tips [Whitepaper]

WordPress
Gijs Hovens, 7 juni 2016

WordPress is uitermate veilig mits je de juiste voorzorgsmaatregelen neemt, en bij dat laatste gaat het vaak mis. Zo blijkt uit onderzoek van Sucuri dat maar liefst 25% van de WordPress hacks in Q1-2016 worden veroorzaakt door drie specifieke plug-ins die gebruikers te laat hebben geüpdatet. Het is dus erg belangrijk dat je beveiliging van WordPress goed is ingeregeld. Hoe kun je WordPress beveiligen?

In deze whitepaper zetten we een 25 maatregelen op een rij om het risico te minimaliseren.

Best Practices WordPress beveiliging

  • Gebruik een sterk wachtwoord

Het proberen te ‘brute forcen’ op wachtwoorden is een van de meest voorkomende manieren om een site aan te vallen. Zorg er voor dat je wachtwoord lang en willekeurig is. Het gebruik van een password manager als 1Password of Keepass wordt sterk aangeraden. Ook is het vestandig je wachtwoorden regelmatig te veranderen.

Sterk wachtwoord wordpress beveiligen

  • Zorg voor Least Priviliged rechten

Maak niet iedereen die in je site moet werken een ‘administrator’. Geef mensen alleen die rechten die nodig zijn om hun werk te kunnen doen.

  • Hou je eigen computer veilig en schoon

Met keyloggers of andere software kunnen wachtwoorden buitgemaakt worden. Zorg er dus voor dat je op je eigen PC altijd een up-to-date OS, virusscanner en firewall hebt draaien en werk alleen met legale software.

  • Meld je site aan bij Google Search Console

Door je site aan te melden bij Google Search Console krijg je waarschuwingen van Google als je site geïnfecteerd is of om andere redenen een blacklisting of penalty heeft gekregen. Ook kun je via de search console een nieuwe controle aanvragen om weer van een blacklist verwijderd te worden. Dit doe je uiteraard pas nadat de malware verwijderd is.

SearchConsoleBeveiligingsproblemen WordPress beveiliging

WordPress Core Beveiligen

  • Zorg dat WordPress Core altijd geüpdatet is

Het komt heel zelden voor, maar af en toe worden er vulnerabilities ontdekt in WordPress zelf. Zorg er daarom voor dat je altijd de laatste minor releases van WP core draait. Dat kan door middel van de auto-update instellingen van WordPress zelf of door dit in te stellen bij Savvii.

  • Zet pingbacks en trackbacks uit

Pingbacks en trackbacks zijn notificaties van andere sites die je melden dat ze naar jouw site linken. Dit wordt echter vaak gebruikt om te spammen. Ga in de wp-admin naar  Instellingen > Reacties en vink ‘Sta linkmeldingen van andere blogs toe (pingbacks en trackbacks) op nieuwe artikelen’ uit.

  • Zet XML-RPC uit

XML-RPC is nodig om de site via clients zoals de WordPress smartphone apps te laten aansturen. Als je dit niet gebruikt is het beter om XML-RPC uit te zetten. Het is namelijk een duidelijke aanvalsvector, omdat via XML-RPC makkelijk en snel inlog pogingen gedaan kunnen worden. Je kunt dit zelf oplossen via .htaccess (bij gebruik van Apache) of door dit aan je hoster vragen.

Voeg de volgende regels aan je .htaccess bestand toe:

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
  • Zet user registratie uit

Veel bots maken WordPress users aan om mee te spammen. Is het voor jouw site niet nodig dat bezoekers zelf een gebruiker kunnen aanmaken? Zet deze optie dan uit via ‘Instellingen > Algemeen’ door het vinkje bij ‘Iedereen kan registreren’ uit te zetten.

  • Zet file editing uit

Mocht iemand onverhoopt toegang hebben gekregen tot je wp-admin, dan kan deze indringer veel kwaad doen met de ingebouwde file editing.  Zet deze functie uit door in de wp-config.php de volgende regel toe te voegen:

define('DISALLOW_FILE_EDIT', true);

  • Gebruik geen ‘admin’ als username

In een ‘brute force attack’ probeert een aanvaller zowel de username als het wachtwoord goed te raden. Aangezien ‘admin’ de standaard username is bij een nieuwe WordPress installatie zou dat in de praktijk betekenen dat men alleen nog maar het wachtwoord goed hoeft te raden. Door eerst een nieuwe administrator gebruiker met een unieke username aan te maken en daarna de gebruiker met de username ‘admin’ weg te gooien maak je het risico op een succesvolle brute force attack weer kleiner.

WordPress Plug-ins & Thema’s beveiligen

  • Zorg dat je plug-ins & thema’s altijd geüpdatet zijn

Kwetsbaarheden in plug-ins en thema’s zorgen wereldwijd voor zo’n 50% van alle WordPress infecties. Regelmatig vinden onderzoekers of developers kwetsbaarheden en melden die aan de developers van de software. Deze brengen dan zo snel mogelijk een update uit om de kwetsbaarheid op te lossen. Vaak wordt de manier om van die kwetsbaarheid gebruik te maken pas ná de update bekend gemaakt. Kortom: Zorg er altijd voor dat je zo snel mogelijk updatet naar de laatste versies van plug-ins en thema’s.

  • Denk na over een security plug-in

Security plug-ins hebben voor- en nadelen. Bij Savvii vinden wij dat veel zaken die security plug-ins uitvoeren, zoals bijvoorbeeld het bannen van IP’s die te veel inlogpogingen doen, beter op een hoger niveau geregeld kunnen worden. Dat is veiliger en minder nadelig voor de snelheid van je site. De belangrijkste van die zaken lossen we bij Savvii al op serverniveau op maar dat is niet bij elke host zo. Ons advies is om zelf de afweging te maken, afhankelijk van hoeveel toegevoegde waarde een security plug-in heeft boven de maatregelen die je host zelf al neemt.

Een security plug-in kan bijvoorbeeld sterke wachtwoorden verplichten, maar door dit zelf te doen, voorkom je weer een extra plug-in.

  • Verwijder onnodige en niet gebruikte plug-in’s & thema’s

Het wil niet zeggen dat als een plug-in of thema niet actief is dat de kwetsbaarheden daarin niet gebruikt kunnen worden. Verwijder dus alle thema’s en plug-ins die je niet gebruikt.

  • Gebruik betrouwbare plug-ins en thema’s

Gebruik je het liefst gratis plug-ins en thema’s, beperk je dan tot plug-ins en thema’s uit de wordpress.org repository. Deze worden namelijk allemaal gescreend. Dat wil overigens niet zeggen dat er nooit iets over het hoofd wordt gezien, maar de kwaliteit is in elk geval door een externe partij bekeken. Lees altijd reviews, bekijk hoe vaak de software geüpdatet wordt en ga na of de support goed is.

Gebruik nooit premium plug-ins of thema’s die illegaal worden aangeboden, je kunt er zeker van zijn dat hier malware in zit.

  • Gebruik geen thema’s met gebundelde plug-ins

Zoals we hiervoor al schreven is het absoluut noodzakelijk dat je altijd de laatste versies draait van plug-ins en thema’s. Op sommige thema marktplaatsen (niet in de wordpress.org repository) vind je thema’s die een andere plug-in gebundeld hebben. Je bent dan afhankelijk van een thema-update om de plug-in te updaten. Er zijn diverse voorbeelden uit het verleden waarbij de thema ontwikkelaars het na hebben gelaten een update uit te brengen nadat er een kwetsbaarheid opgelost werd door de ontwikkelaars van de gebundelde plug-in.

  • Pas nooit direct plug-ins of thema’s aan

Het spreekt voor zich maar het is absoluut geen goed idee om binnen jouw site aanpassingen te doen in de code van plug-ins of thema’s van derden. Dit zorgt er namelijk voor dat de plug-ins of thema’s niet meer geüpdatet kunnen worden zonder dat er functionaliteit stuk gaat.

Voor thema’s kun je gebruikmaken van een child theme om er je eigen draai aan te geven. Hiermee blijft het mogelijk je site te kunnen updaten.

  • Two-factor authentication voor WordPress

Normaal gesproken heb je een username en wachtwoord nodig om in te loggen in WordPress. Dat zijn dingen die je ‘weet’. Met two-factor authentication heb je naast iets dat je ‘weet’ nog iets nodig om in te kunnen loggen. Dat kan bijvoorbeeld iets zijn dat alleen jij ‘bezit’ (USB-key, jouw mobiele telefoon) of iets wat alleen jou kenmerkt (bijvoorbeeld een iris-scan, vingerafdruk). Dit maakt het natuurlijk veel moeilijker om ongeautoriseerd toegang te krijgen tot jouw site.

Een bekende two-factor authentication optie voor WordPress is bijvoorbeeld clef.

Clef

Hosting & Server beveiliging

  • PHP versie controleren

Ook PHP zelf kan security risico’s bevatten. Daarom is het belangrijk dat jouw site op een PHP versie draait die nog ondersteund wordt met security patches. Op php.net kun je terugvinden welke versies dat zijn. Je kunt bij je host navragen welke versie er actief is voor jouw sites. Bijkomend voordeel van de laatste versie van PHP (PHP 7 in juni 2016) is dat deze veel sneller is dan eerdere PHP versies.

  • Blokkeren PHP-executie in /content/uploads

Veel backdoors (scripts die het mogelijk maken voor aanvallers om binnen te komen) komen terecht in de /content/uploads/ map. Je moet er daarom voor zorgen dat er geen PHP-code uitgevoerd kan worden in deze map (en diepere mappen). Ook de /wp-includes map moet op dezelfde manier beveiligd worden. Goede Managed WordPress hosters zoals Savvii zorgen hier al automatisch voor. Draai je op een Apache omgeving, dan kun je een .htaccess bestand aanmaken in de betreffende mappen met de volgende inhoud:

<Files *.php>
Order allow,deny
Deny from all
</Files>

  • Back-up frequentie en retentie controleren

Mocht je site onverhoopt gehackt worden of door jezelf stuk gemaakt worden dan is een goede back-up belangrijk. Zorg ervoor dat er minimaal 1x per dag een back-up wordt gemaakt en dat deze off-site (op een andere server en ander datacenter dan waar jouw site draait) wordt opgeslagen. Verifieer ook dat je back-ups nog minimaal 7, maar beter nog 14 dagen beschikbaar zijn om terug te zetten. Bij Savvii maken we dagelijks offsite backups met een retentie van 14 dagen.

  • Malware scanning & removal controleren

Iedere goede host scant minimaal dagelijks op malware. De meeste waarschuwen je ook als ze iets verdachts vinden, wij bij Savvii in elk geval wel. Vaak moet je zelf zien hoe je de malware en oorzaak opgeruimd & opgelost krijgt. Bij de meeste Managed WordPress Hosts zoals Savvii kunnen ze dat opruimen voor je doen. Uiteraard is het vervolgens aan jou om met de andere punten uit deze lijst aan de slag te gaan om te zorgen dat je niet nog een keer geïnfecteerd wordt.

  • Toegang tot wp-config.php beperken

In het wp-config.php bestand staan onder andere de username en wachtwoord van je database opgeslagen. Deze mogen niet in handen vallen van aanvallers. Het is daarom belangrijk om dit bestand af te schermen. Dit doe je door de volgende regels aan je .htaccess bestand toe te voegen (apache):

<Files wp-config.php>
Order allow,deny
Deny from all
</Files>

Een goede host heeft dit al voor je gedaan.

  • Toegang tot /wp-admin en wp-login.php beperken

Naast een goed wachtwoord zou je er ook aan kunnen denken om alleen jouw eigen IP(‘s) toegang te geven tot /wp-admin en wp-login.php. Jouw IP’s zijn dan gewhitelist en alle andere IP’s daarmee ook geblacklist. Dit kun je aanvragen bij jouw hoster.

  • Encryptie op website en FTP

Als de communicatie tussen jou of je bezoekers en je website onversleuteld is, kan er onderweg data worden uitgelezen waarin bijvoorbeeld wachtwoorden of andere belangrijke informatie wordt verstuurd. Om dit te voorkomen is het belangrijk om zowel je website als je FTP-verbinding te beveiligen met encryptie.

Voor je website doe je dit door de aanschaf en installatie van een SSL certificaat. Om van je normale FTP verbinding een beveiligde sFTP verbinding te maken ben je afhankelijk van je hoster.

  • Controleer je error-logs

Een website die slecht in elkaar zit loopt meer kans gehackt te worden. Controleer daarom af en toe of jouw site errors genereert door je error-logs te openen. Vind je error-meldingen, dan is het zaak deze zo snel mogelijk op te lossen. Bij Savvii kun je de error-logs terugvinden via de Savvii plug-in of downloaden via sFTP.

Conclusie

Het is een grote lijst, maar in de praktijk is het heel makkelijk om je aan bovenstaande adviezen te houden. WordPress beveiligen doe je door bovenstaande tips op te volgen. De kans dat jouw WordPress site dan nog gehackt wordt is zeer minimaal. Risico 100% elimineren kan echter niet. Mocht je zelf weinig technische kennis hebben dan is het lonend om met een betrouwbaar webdevelopment bureau en een gespecialiseerde hosting partij zoals Savvii samen te werken.

Wil je deze whitepaper liever downloaden om uit te printen? Hij is ook beschikbaar als PDF.

Gijs Hovens - Gijs is marketing manager bij Savvii. Hij heeft al bijna 10 jaar lang diverse WordPress websites en houdt zich bezig met o.a. SEO, SEA, onze producten en het organiseren van de WordPress Meetup Nijmegen.

Er zijn 3 reacties

Paul

10 juni 2016

Vaak pas ik deze ook toe:

• wp-content hernoemen
• database table prefix
• wp files in subfolder plaatsen ipv root
• php error reportage uitzetten
• wp versie nummer verbergen
• geen php execution in wp-content

Dat niet nodig of minder belangrijk?

Gijs Hovens

13 juni 2016

Hallo Paul,

Dank voor je aanvullingen. Deze kunnen zeker bijdragen maar vallen voornamelijk onder de noemer 'security through obscurity'. Dat is een goede tweede strategie maar moet nooit je hoofdstrategie zijn.

Mathieu Scholtes

30 juni 2016

Een zeer complete handleiding!

Als je nog niet bij Savvi gehost bent maar toch een goede backup wilt is de gratis plugin UpDraftPlus een aanrader.

Deze plugin maakt niet alleen een complete backup maar geeft je ook de mogelijkheid om plugins, thema's en andere informatie los op te slaan en terug te halen.
Dat is ontzettend handig als een update van WordPress of een plugin voor een error zorgt, dan kun je alleen de plugins terughalen zonder ook je database (met je pagina's en berichten) en overigen te overschijven.

Download UpDraftPlus van de WordPress plugin database:
https://nl.wordpress.org/plugins/updraftplus/

Een backup is het eerste wat op orde moet zij als je een website hebt!

Reactie achterlaten

Leer ons beter kennen!