Beveilig je WordPress website met .htaccess

wordpress-security

WordPress is op dit moment met 54,7 procent marktaandeel het meest populaire CMS op internet en 17,2% van alle websites draait op WordPress. (bron)


Deze populariteit van WordPress heeft zo z’n voor- en nadelen. Een groot voordeel is de grote community die werkt met WordPress, die zorgt voor het constant bijwerken van plugins, thema’s en de WordPress core zelf. Een nadeel is dat door de grote hoeveelheid WordPress websites, het voor hackers aantrekkelijk wordt om WordPress als platform aan te gaan vallen.

Aan ons (gebruikers van WordPress) dus de taak om er voor te zorgen dat onze website goed beveiligd is. Dit begint natuurlijk met een slimme gebruikersnaam en een nog slimmer wachtwoord., maar ook met extra regels aan je .htaccess bestand kan je veel mogelijke ingangen afsluiten.

Standaard .htaccess

Het standaard .htaccess bestand van WordPress bevat de volgende code:


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

# END WordPress

We gaan eens kijken wat we zoal in dit bestand kunnen toevoegen. Extra regels voegen we toe na de # END WordPress regel. Let op, maak voordat je aan de slag gaat eerst een kopie van je .htaccess voor in het geval er iets mis gaat.

Bescherm je .htaccess

Als eerste gaan we zorgen dat niemand toegang heeft tot het .htaccess bestand.


<Files .htaccess>
order allow,deny
deny from all
</Files>

Alleen toegang vanaf je eigen ip adres(sen)

Om er voor te zorgen dat er de wp-admin map alleen toegankelijk is vanaf je eigen ip adres(sen) voeg je de volgende code toe. De xxx.xxx.xxx.xxx vervangen we door ons eigen ip adres. Als je meerdere ip adressen wilt toevoegen dan kan je ze achter elkaar invoeren gescheiden door een spatie.


<Directory /www/htdocs/example>
order deny,allow
allow from xxx.xxx.xxx.xxx
deny from all
</Directory>

Bescherm je wp-config.php

Om toegang tot je wp-config.php (waar nogal eens FTP inloggegevens in staan) te ontzeggen, gebruik je onderstaande regels.


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

Meer bescherming

Voor bescherm tegen script injectie en modificatie van _REQUEST en GLOBALS gebruik je onderstaande regels:


Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Plugins om WordPress te beveiligen

Mocht je plugins willen gebruiken om je WordPress installatie te beveiligen, dan kan ik je Login Lockdown aanraden om ip adressen te blokkeren waarvan herhaaldelijk login pogingen worden gedaan. Een andere plugin is WP Security Scan, waarmee je een aantal adviezen kan krijgen over te nemen veiligheidsmaatregelen.

Mocht je nog meer vragen hebben, kom dan eens langs op het WordPress spreekuur.

nostromo.nl is gebouwd met het Genesis Framework

Genesis Framework

Genesis geeft je de mogelijkheid om snel en makkelijk websites te realiseren met WordPress. Of je nu een beginner bent of een code-guru, Genesis geeft je een veilige en zoekmachine geoptimaliseerde basis welke WordPress verder brengt dan ooit bedacht. Het is zo simpel - Begin ook met Genesis!

Pak je voordeel met zes standaard lay-out opties, SEO instellingen, rotsvaste veiligheid, felxibele thema opties, handige widgets, een bak vol met hooks en een groot scala aan child-thema's om jouw site te maken zoals jij dat wilt. Met ondersteuning voor automatische thema updates is Genesis de slimme keuze voor jouw website of blog.

Over Marcel Bootsman

Marcel Bootsman is WordPress specialist. Hij realiseert WordPress websites en begeleidt zijn klanten bij het gebruiken van WordPress door middel van workshops en ondersteuning.

Reacties

  1. order deny,allow
    allow from xxx.xxx.xxx.xxx
    deny from all

    Ik vind deze directory niet. Of moet ik eigen gegevens hier invullen.

    Hoor graag.
    De rest is wel gelukt.
    Ik krijg met deze php een 500 error.

  2. Jacco Haarsma zegt:

    Goedenavond,
    Da’s een duidelijke uitleg.
    Kan ik de “injectie-regels” ook gebruiken bij Joomla?
    Met vriendelijke groet, Jacco

  3. Dit zijn zeker goede tips. De plugin kende ik reeds, maar de wijzigingen in de htaccess had ik nog nimmer doorgevoerd. Stanks.

  4. Zeer handige uitleg!
    Enige tijd geleden zijn 3 van mijn wordpress sites gehackt d.m.v. sql injectie. Ik ben toen met van alles bezig geweest om alle wordpress sites (ook de niet gehackte) te voorzien met een oplossing voor toekomstige hack pogingen. Wat gebruik je zelf als oplossing hiervoor als ik vragen mag?

Laat wat van je horen

*