WordPress website veiliger met 3 andere tips

Wordpress beveiliging
Wordpress beveiliging
Home / Blog & Nieuws / Applicatie-ontwikkeling / WordPress website veiliger met 3 andere tips

Het beveiligen van een WordPress-installatie blijkt toch niet altijd zo makkelijk. Exploits worden continu ontdekt en razendsnel verspreid. Updates volgen elkaar snel op maar geen enkele update garandeert een veilige omgeving.

Er is een groot verschil tussen WordPress beheren en WordPress gebruiken. Gebruikers verwachten vooral dat alles vanuit de webinterface werkt en willen zo min mogelijk onderbrekingen. Met één klik updaten, is prettiger dan met twee. Uploads moeten gewoon werken. De beheerder maakt zich zorgen over uploaden van ongewenste uitvoerbare code en heeft liever dat het updaten van WordPress iets ingewikkelder is.

De meest voor de hand liggende tip is om alle beschikbare updates zo snel mogelijk te installeren. De volgende drie tips beschrijven een andere laagdrempelige manier om de installatie van jouw WordPress website veiliger te maken.

1. Oude plugins en themes verwijderen

Een onderschat onderdeel van het bijhouden van WordPress zijn niet gebruikte themes en plugins. Als deze worden uitgeschakeld in de WordPress-admin wordt de code niet gedeactiveerd. WordPress zelf zal de code niet langer aanspreken. Maar deze blijft staan in de map /wp-content/themes of wp-content/plugins en is rechtstreeks aanroepbaar. Kwetsbaarheden zijn nog steeds beschikbaar en hebben toegang tot alles waar WordPress toegang tot heeft. Wordt een plugin uitgeschakeld? Verwijder deze ook via de WordPress-admininterface en controleer achteraf of alle bestanden ook daadwerkelijk van het filesystem zijn verwijderd.

2. Ken de kwetsbaarheden en pas de rechten daar op aan

Om WordPress praktisch bruikbaar te maken, moet het programma ergens iets wegschrijven. Met name afbeeldingen om posts op te leuken moeten makkelijk en laagdrempelig kunnen worden toegevoegd. Maar overal waar WordPress mag schrijven, kan mogelijk een ongewenst en kwaadwillend script worden geplaatst. Daarom is het goed om de schrijfrechten van de applicatie te beperken.

Denk goed na waar de applicatie mag schrijven en zie dat als ‘zwakke’ locatie. Dan is het mogelijk hier alternatieve maatregelen op te treffen of de locatie extra in de gaten te houden.

Geef WordPress bijvoorbeeld enkel schrijfrechten in /wp-content/uploads en in het huidige jaar (/wp-content/uploads/2015). Dan is de applicatie in staat uploads te plaatsen, maar is de kans dat een kwaadwillend script tussen andere bestanden wordt verstopt een stuk kleiner.

3. /wp-content/uploads is voor statische bestanden

Als eenmaal is vastgesteld dat de map /wp-content/uploads voor WordPress schrijfbaar moet zijn, is het verstandig om de soort bestanden die hier geplaatst mogen worden te beperken. WordPress zal enkel mediabestanden uploaden (lijst op https://codex.wordpress.org/Uploading_Files) en geeft een foutmelding als een ander bestand wordt aangeboden. Helaas kan bij een fout in een plugin, theme of de WordPress core deze beveiliging mogelijk omzeild worden.

Het is dus verstandig om de uitvoerbaarheid van scripts in de map /wp-content/uploads te beperken. Via een .htaccess voor Apache of een Nginx location block is het mogelijk om alle externe requests naar een script in deze mappen te blokkeren. Dit kan aan de hand van een *blacklist* (voorkom toegang tot .php) of een *whitelist* (enkel toegang tot media-bestandstypen). Het laatste is iets intensiever in onderhoud, maar geeft de meest expliciete controle.

Voorbeelden:

Nginx Blacklist:

# Blocks direct external access (direct http requests) to all .php files in any /uploads and /files directory (for example /wp-content/uploads/1999/malicious.php)

location ~* /(?:uploads|files)/.*.php$ {
 deny all;
}

Nginx Whitelist

# Will deny direct external access (direct http requests) to all files in any /uploads and /files directory, with exception of listed file extentions based on https://codex.wordpress.org/Uploading_Files

location ~* /(?:uploads|files)/.*.(?:jpg|jpeg|png|gif|ico|svg|pdf|doc|docx|ppt|pptx|pps|ppsx|odt|xls|xlsx|psd|mp3|m4a|ogg|wav|mp4|m4v|mov|wmv|avi|mpg|ogv|3gp|3g2)$ {
 allow all;
}
location ~* /(?:uploads|files)/.*$ {
 deny all;
}

Apache .htaccess in /wp-content/uploads Blacklist

# Blocks direct external access (direct http requests) to all .php files in the current directory and all subdirectories (for example /wp-content/uploads/1999/malicious.php)

<Files *.php>
deny from all
</Files>

Apache .htaccess /in /wp-content/uploads Whitelist

# Will deny direct external access (direct http requests) to all files in the current directory and any subdirectory, with exception of listed file extentions based on https://codex.wordpress.org/Uploading_Files

Order deny,allow
Deny from all
<Files ~ “.(jpg|jpeg|png|gif|ico|svg|pdf|doc|docx|ppt|pptx|pps|ppsx|odt|xls|xlsx|psd|mp3|m4a|ogg|wav|mp4|m4v|mov|wmv|avi|mpg|ogv|3gp|3g2)$”>
Allow from all
</Files>
True Ligan
Managed hosting sinds 2000