3 tips voor een veilige WordPress site

WordPress logoVia deze weg wil ik graag een aantal WordPress beveilgings tips delen die ik op mijn eigen weblog ook gebruik, en die naar mijn mening elke WordPress gebruiker zou moeten toepassen. WordPress is helaas een geliefd doelwit onder script kiddies, maar met een paar simpele tips kun je 90% van de standaard aanvallen tegenhouden.

1. Houd WordPress up-to-date!

Dit is de meest simpele tip, maar tegelijk ook de stap die de meeste webmasters overslaan. Zodra er een nieuwe versie van WordPress uit komt raad ik aan om zo snel mogelijk te updaten. Zelf heb ik een lokale testomgeving waar ik de update eerst uitprobeer (met name om te checken of alle plugins nog werken). Zodra alles getest is en werkt gebruik ik mijn deploy script om de nieuwe installatie in productie te zetten.

Ditzelfde geldt natuurlijk ook voor plug-ins: houd deze up-to-date!

2. Gebruik geen .htaccess file

(deze tip is lastig of zelfs niet uit te voeren op een shared hosting pakket)

Er zijn meerdere bekende WordPress malware tools die de .htaccess file gebruiken om bijvoorbeeld bezoekers van je website door te sturen naar kwaadaardige websites. De simpelste manier om dit te voorkomen: gebruik geen .htaccess, maar gebruik Virtual Hosts. Alle .htaccess regels die WordPress nodig heeft heb ik in de vhost file gezet:

<Directory /var/www/wouterdaan.nl>
   Options -Indexes FollowSymLinks MultiViews

   ## Disable .htaccess overrides
   AllowOverride None

   ## BEGIN WordPress
   RewriteEngine On
   RewriteBase /
   RewriteRule ^index\.php$ - [L]
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule . /index.php [L]
   ## END WordPress
 </Directory>

De eerste regel met Options -Indexes heb ik toegevoegd om te voorkomen dat Apache automatisch directory listings maakt van mappen waar geen index file in staat.

Vervolgens heb ik AllowOverride None toegevoegd, waardoor Apache .htaccess files in de site negeert. Zelfs als een hacker in je site weet te komen en een .htaccess plaatst betekent dit dat die geen effect zal hebben.

3. Schakel de PHP parser uit voor de wp-content map

Een ander veelgebruikte truc in WordPress malware is het plaatsen van PHP bestanden in de wp-content map. Deze map wordt normaal gesproken alleen gebruikt om statische resources (plaatjes) uit te serveren. Voor de veiligheid is het dus verstandig om (via een .htaccess of in je vhost) de PHP engine uit te schakelen voor die specifieke map:

# Via de VHOST file:
<Directory /var/www/wouterdaan.nl/wp-content>
php_value engine off
</Directory>

# Of in een .htaccess in de /wp-content/ map:
<Files *.php>
Deny from All
</Files>