WordPress staat bekend om zijn open karakter, de grote diversiteit aan grafische themes en de ongekende mogelijkheden van plugins. Maar doordat iedereen in de achterliggende code kan neuzen, brengt dit ook veiligheidsrisico’s met zich mee. Een goede WordPress veiligheid voorkomt een heleboel ellende.
WordPress veiligheid, een kind kan de was doen
Wij hebben een aantal tips op een rij gezet waarmee je de veiligheid van jouw WordPress website kunt verbeteren.
Update WordPress
Het is een beetje een no-brainer, maar het wordt helaas nogal eens vergeten; zorg ervoor dat je te allen tijde de laatste versie van WordPress op jouw server hebt staan. Het team achter WordPress brengt met grote regelmaat nieuwe versies van WordPress uit, waarmee bekende veiligheidsissues gefixt worden. Zet dus in je agenda of kras het met een mes in jouw bureau: check periodiek of er een update is van WordPress. WordPress veiligheid begint met het updaten van WordPress.
Update de plugins en themes
Het is aan ten zeerste aan te raden plugins (en themes) regelmatig te updaten én om niet gebruikte plugins te verwijderen. Dat maakt het niet alleen overzichtelijk, maar het verkleint ook de kans op veiligheidsproblemen. Zorg er bovendien voor dat je jezelf niet laat verleiden tot het downloaden van een gratis plugin of theme van verysecurewordpressplugin.ru. Ga daarvoor naar betrouwbare sites als wordpress.org of themeforest.com (commercieel) en lees de reviews, zodat je een indruk krijgt van de kwaliteit van de plugin.
Zorg voor de juiste bestandsrechten
Verkeerde bestandrechten kunnen ertoe leiden dat mensen met snode plannen zich toegang kunnen verschaffen tot jouw server. Hier vind je een uitvoerige beschrijving van de bestandsrechten zoals die voorgeschreven worden door WordPress. De bestandsrechten worden in principe automatisch ingesteld, dus zou het niet nodig moeten zijn om handmatige wijzigingen aan te brengen. Maar het kan geen kwaad om een oogje in het zeil te houden.
Wijzig de admin-URL
Het is een algemeen bekend gegeven dat het WordPress inlogscherm te vinden is op /wp-admin/of /wp-login.php. Om het een stukje moeilijker te maken voor hackers, kun je deze admin-URL veranderen. Een plugin die we hiervoor graag gebruiken is WPS Hide Login.
Verberg foutmeldingen bij het inloggen
Een nadeel van het standaard WordPress inlog-scherm is dat bij verkeerd inloggen verteld wordt of het een verkeerde gebruikersnaam of een verkeerd wachtwoord betreft. Dit maakt het een stuk gemakkelijker om via een ‘brute force’-aanval toegang te krijgen tot de website.
Om deze functionaliteit uit te zetten open je de file: functions.php in jouw WordPress theme en voeg je de volgende code toe:
function failed_login() {
Dit zorgt ervoor dat gebruikers een algemene foutmelding krijgen.
return "Uw inloggegevens zijn niet correct";
}
add_filter ( 'login_errors', 'failed_login' );
Blokkeer auteurpagina’s
Voor ieder gebruikersaccount dat aangemaakt wordt binnen WordPress, wordt er ook een auteurpagina gegenereerd. In veel gevallen is via deze auteurpagina de gebruikersnaam van het betreffende account te achterhalen. Deze informatie zou gebruikt kunnen worden om via een ‘brute force’-aanval toegang te krijgen tot de website. Om dit te voorkomen kun je de auteurpagina’s blokkeren.
Maak in jouw (child)thema de file author.php aan en voeg de volgende code toe:
<?php
Mocht je de plugin Yoast SEO geïnstalleerd hebben, dan kun de auteurpagina’s blokkeren door bij de menu-optie ‘Search Appearence’ onder het tabblad ‘Archieven’ de Auteursarchieven te deactiveren.
$location = "Location: ".get_site_url();
header("HTTP/1.1 301 Moved Permanently");
header($location);
?>
Gebruik .htaccess om wp-config.php te beschermen
Als WordPress gebruiker weet je waarschijnlijk hoe belangrijk de file wp-config.php is. Deze file bevat immers alle informatie die nodig is om toegang te krijgen tot jouw database. Om deze file te beschermen kun je hetvolgende doen:
Open de .htaccess file in de root van jouw website en voeg de volgende code toe:
<files wp-config.php>
Dit zorgt ervoor dat niemand toegang krijgt tot wp-config.php
order allow,deny
deny from all
</files>
Blokkeer XML-RPC aanvragen
XML-RPC maakt het mogelijk dat externe apps communiceren met jouw WordPress website. Je kunt hierbij denken aan het posten van een bericht of het modereren van een reactie via een externe applicatie. Er zijn WordPress-plugins die gebruik maken van XML-RPC, zoals Jetpack. We zien steeds vaker dat XML-RPC gebruikt wordt voor een ‘brute force’-aanval of een DDOS-aanval. We adviseren dan ook om deze functionaliteit uit te zetten.
Open de .htaccess file in de root van jouw website en voeg de volgende code toe:
<files xmlrpc.php>
order allow,deny
deny from all
</files>
Installeer de plugin BBQ: Block Bad Queries
Deze plugin zorgt ervoor dat jouw website beschermd wordt tegen kwaadaardige URL aanvragen (zoals eval, base64, etc.). Je kunt deze plugin hier vinden.
Scherm de map /wp-admin af
Het is van belang dat de map /wp-admin, het centrale zenuwstelsel van iedere WordPress website, niet geopend kan worden door mensen met dubieuze bedoelingen. Om te bepalen welke IP-adressen toegang hebben tot deze map, kun je een .htaccess-bestand toevoegen aan de map /wp-admin met de volgende inhoud:
Order Deny,Allow
Vergeet niet om xxx.xxx.xxx.xxx te vervangen door jouw eigen IP-adres.
Deny from all
allow from xxx.xxx.xxx.xx
Update: Om te voorkomen dat plugins, die gebruik maken van Ajax, niet meer werken doordat de map /wp-admin afgeschermd is, kun je de volgende code toevoegen aan het .htaccess-bestand:
<files admin-ajax.php>
order allow,deny
allow from all
</files>
Verwijder de gebruiker ‘admin’
Standaard geeft WordPress het administrator-account de naam ‘admin’. Als iemand zou proberen om via een ‘brute force’-aanval toegang te verkrijgen tot jouw website, dan gebeurt dit geheid met de gebruikersnaam: ‘admin’. Je doet er dan ook goed aan om dit te wijzigen in iets anders.
Verander de database prefix
Omdat WordPress de standaard databaseprefix /wp_ heeft, hebben de database-tabellen van duizenden WordPress websites exact dezelfde naam. Mocht er op een bepaald moment een veiligheidslek ontstaan in een theme of plugin, dan zullen hackers zich geheid gaan richten op deze database-structuur. Het is dan ook verstandig om bij installatie van jouw WordPress site, deze prefix te veranderen. Je opent hiervoor de file wp-config.php en geeft een alternatieve prefix op, zoals:
$table_prefix = 'sitewp_';
Heb je WordPress reeds geïnstalleerd zonder deze prefix te wijzigen? Geen probleem, want dit kun je op ieder willekeurig moment doen. Dat kan handmatig, maar er zijn gelukkig ook plugins die het voor je regelen. Een voorbeeld hiervan is: Change Table Prefix. Let op: zorg ervoor dat je altijd een backup maakt voordat je aan de slag gaat met de database en zorg ervoor dat je de nieuwe prefix ook in wp-config.php verwerkt.
Limiteer het aantal login pogingen
Om te voorkomen dat iemand via een ‘brute force’-aanval inloggegevens kan gaan raden, is het een goed idee om het maximaal aantal foutieve login-pogingen te limiteren. De plugin Limit Login Attempts Reloaded is hierbij een goede optie. Wanneer iemand het maximaal aantal (door jou ingestelde) inlogpogingen verbruikt heeft, kan hij/zij een tijd niet meer inloggen. Bovendien worden de IP-adressen geregistreerd dus kan de Sherlock Holmes in jou op zoek naar de namen achter de foutieve inlogpogingen.
Bonus tips
Hoewel de volgende tips niet direct betrekking hebben op de WordPress veiligheid, maken ze het leven van een WordPress beheerder een stuk aangenamer. Doe er dus jouw voordeel mee.
Encodeer e-mailadressen
Notoire spammers gebruiken zogenaamde ‘bots’ die websites doorzoeken en e-mailadressen verzamelen. Deze e-mailadressen worden vervolgens tot het einde der tijden voor spam-campagnes misbruikt. Door e-mailadressen te encoderen kunnen ze niet herkend worden door bots en blijf je hopelijk vrij van spam. Een goede plugin die je kunt gebruiken is: Email Address Encoder, een lichtgewicht plugin maar o zo handig.
Maak periodieke back-ups
Ondanks alle bovengenoemde veiligheidsmaatregelen bestaat er nog steeds een kans dat het misgaat met een WordPress website. Een slaperige medewerker die op maandagochtend teveel folders verwijdert van de server of een hostingpartij die met de noorderzon vertrokken is… dan wil je kunnen rekenen op back-ups. Zorg er uiteraard wel voor dat de back-ups op een andere locatie opgeslagen worden.
WordPress veiligheid staat helaas nog niet bij alle bedrijven op de agenda. Toch kan een gehackte WordPress website vervelende gevolgen hebben. Wil je meer informatie over WordPress veiligheid? Neem dan contact met ons op.