Laten we eerlijk zijn: we weten allemaal dat het beveiligen van je website belangrijk is. WordPress heeft wat dat betreft geen goede naam. Maar of dat terecht is? Voor een groot deel worden beveiligingsproblemen veroorzaakt door onjuist gebruik in combinatie met gaten in de veelal externe plugins. Dus snel een WordPress security plugin installeren en klaar! Toch?
Een WordPress beveiligingsplugin is toch voldoende?
Ik zie dat veel gebeuren: gebruikers installeren de Wordfence of iThemes security plugin en denken dan dat daarmee alles is opgelost. Nou is het zeker zo dat deze plugins extra sloten op je deur zetten. En het dus indringers moeilijker maken om binnen te komen. Maar de andere kant van het verhaal is: heb je andere, verouderde plugins (of themes) op je website draaien dan vormen die een groter risico dan zo’n plugin voor je kan oplossen. In het meest gunstige geval detecteert de plugin dan dat je wordt gehackt. Maar liever zouden we dat voorkomen natuurlijk.
Geen security plugin dan maar?
Nee. Zover wil ik niet gaan. Je mag deze plugins natuurlijk wel inzetten. Maar verdiep je dan wel in de mogelijkheden van zo’n plugin en zorg ervoor dat je begrijpt welke opties je in- of uitschakelt. Dan nog steeds zijn de WordPress beveiligings plugins vaak wat zwaar. Je installeert altijd eeen heleboel code die je niet nodig hebt, maar je website wel belast. Maar goed, afraden gaat me te ver.
Welk alternatief is er dan? Je kunt je WordPress website ook prima beveiligen zónder een beveiligingsplugin te installeren. Hoe je dat doet lees je in de 12 WordPress tips hieronder!
10 WordPress Tips om je WordPress website te beveiligen zonder plugin
1. Doe de WP updates
Tja, deze ligt voor de hand, maar je móet het echt doen: updaten. Dat geldt voor zowel WordPress, voor je plugins, maar óók voor je theme. Die laatste wordt nogal eens vergeten. En kan bovendien tricky zijn als aanpassingen in het theme zijn gemaakt zonder een child theme te gebruiken. Moet je elke update dan altijd maar direct installeren? Nee, zeker niet. Doe het met beleid. En daarmee bedoel ik: zorg voor backups en als je website belangrijk is voor je business gebruik je een testomgeving.
Vind je zelf updaten lastig? Wij bieden een handig onderhoudscontract aan, waarmee je ervan verzekerd bent dat de updates op een goede manier worden uitgevoerd.
2. Weg met de admin
Nieuwe WordPress installaties kennen dit probleem niet meer, maar websites die al jaren bestaan kennen hem wel: de standaard ‘admin’ gebruiker. Met die gebruiker werd WordPress vroeger geïnstalleerd. En je raadt het al, de admin kan alles doen in je systeem. Hackers weten dat ook en vallen WordPress websites masssaal aan met de gebruiker ‘admin’. Wachtwoorden worden vervolgens duizenden keren ‘geprobeerd’. Vroeg of laat zal men dan succes hebben. Juist door ervoor te zorgen dat de admin gebruiker niet meer bestaat los je in een oudere WordPress website een groot probleem op. Hoe doe je dit?
- Controleer of de admin gebruiker wel bestaat in jouw website door de functie Gebruikers te openen en daar te filteren op Beheerder
- Heb je meerdere beheerders, waaronder eentje met de gebruikersnaam ‘admin’? Dan kun je de admin veilig verwijderen. Maar uiteraard lukt je dat alleen als je niet zelf als ‘admin’ bent ingelogd
- Is er maar één beheerder en is uitgerekend dat de beheerder ‘admin’? In dit geval voeg je eerst een nieuwe, extra beheerder toe. Denk hierbij aan een goed, veilig wachtwoord. Maar dat spreekt voor zich. Vervolgens log je uit en log je weer in met de gebruikersnaaam van de nieuwe beheerder. Je kunt de oude ‘admin’ gebruiker nu veilig verwijderen.
3. Beperk de rechten van gebruikers
In veel WordPress websites zie je een stuk of 5 gebruikers en het zijn allemaal beheerders. Is het echt nodig dat iedereen de volledige controle over de gehele website heeft? Dat is maar zelden het geval en toch zien we veel beheerders die misschien helemaal niet meer actief zijn. Controleer dat dus en verlaag de rechten van gerbruikers die geen beheerdersrol nodig hebben. Wil je eerst meer weten? Lees dan dit artikel over WordPress gebruikers, rollen en rechten.
4. Backups!
Het is een open deur, maar een aantal goede backups kunnen je echt redden als je website om een of andere reden tóch een keer gehacked wordt.
Bewaar jij backups van je website of weet (denk) je dat je provider dat doet? Volg deze stappen, zodat je het vanaf nu zeker weet:
- Laten we beginnen bij je provider. Zijn daar backups aanwezig van zowel de database én je volledige WordPress installatie? Kun je die backups zelf downloaden? Doe dat dan en controleer of ze compleet zijn. Het beste doe je dat natuurlijk door de backup te testen in een testomgeving. Hoe je dat precies aanpakt zullen we in een volgend artikel beschrijven. Maakt jouw provider wel backups, maar kun je ze niet zelf downloaden? Vraag dan een complete backup set op ter controle en kijk ook hoe oud de set is die je ontvangt. Denk er ook aan dat áls je een backup van je provider nodig hebt – en je hem zelf niet kunt downloaden – je dan afhankelijk bent van de reactiesnelheid van de supportafdeling. Zijn zij wel snel bereikbaa? Ook in het weekeinde?
- Beter dan te vertrouwen op je provider vind ik altijd nog een eigen backup. Een simpele methode is het downloaden van al je bestanden met behulp van een FTP client zoals Filezilla. Een backup van je database kun je daarnaast maken met Phpmyadmin, dat vrijwel altijd door je provider beschikbaar wordt gesteld.
- Hoewel, eenvoudig? De gemiddelde beginner vindt FTP vaak maar lastig, om over Phpmyadmin nog maar te zwijgen. Dan maar een WordPress backup plugin gebruiken? Zeker, dat is een goed alternatief en deze plugins stellen je bovendien in staat om je backups te automatiseren. Zo kopieer je je backups vrij eenvoudig en volledig automatisch naar bijvoorbeeld Dropbox of Google Drive.
5. Verwijder plugins en themes
Zelfs bij mij komt dit voor. Je gebruikt een plugin voor het een of het ander en een jaar later kom je erachter dat je die plugin eigenlijk niet echt (meer) nodig hebt. Vaak vinden hacks plaats door gebruik te maken van onveilige code in themes en plugins. Zorg er dus niet alleen voor dat je updates uitvoert, maar schakel plugins die je niet meer nodig hebt ook echt uit én verwijder ze. Want zelfs een inactieve, verouderde plugin die nog op je website staat vormt een risico. Ben je geswitched naar een ander theme? Ruim de oude themes dan op. Verwijder ze.
Tenslotte is het ook verstandig om te kijken naar de plugins die je wél gebruikt. Zijn er nog updates geweest in, laten we zeggen, de laatste 6 maanden? Dit is geen harde grens natuurlijk, maar je kunt er donder op zeggen dat een plugin die al een paar jaar niet meer is bijgewerkt langzamerhand een risico begint te vormen. Je doet er dan beter aan om te onderzoeken of er voor de betreffende plugin alternatieven beschikbaar zijn, die wél worden onderhouden. Let je hier niet op dan waan je je veilig (je installeert immers keurig en tijdig alle updates), maar dan nog kan het mis gaan door zo’n verouderde plugin.
6. Veiliger inloggen
Je kunt een aantal zaken relatief eenvoudig doen, om het inloggen op de wp-admin moeilijker te maken. Dat voorkomt al een deel van de (geautomatiseerde) hackpogingen die op je website worden losgelaten. Want gellof me ook als je maar een kleine website runt als zelfstandige of zelfs alleen hobbymatig, ook jouw website komt aan de beurt. Het gaat hackers namelijk vaak niet om de inhoud van een website, het gaat ze erom bezoekers advertenties te sturen, door te sturen naar een andere website, of erger nog, te besmetten met een virus. Dus hoe lastiger je het inloggen maakt, des te kleiner de kans dat er geautomatiseerd ingelogd wordt op je wp-admin omgeving.
Om te beginnen zorg je ervoor dat je website een SSL certificaat heeft. Hiermee verbinden bezoekers over een veilige https-verbinding. En dat neem de kans dat hackers gevoelige data, zoals gebruikersnamen en/of wachtwoorden kunnen onderscheppen weg.
Nog veiliger maak je de login met behulp van zogenoemde ‘2-factor authentication’. Maar hiervoor heb je dan weer wél een plugin nodig. Met behulp van deze Google 2-factor Authenticaion plugin koppel je je website aan de Google Authenticator. Naast de plugin heb je hiervoor ook de Google Authenticator app op je smartphone nodig.
Dit is overigens een voorbeeld van een ‘2-factor’ oplossing. Er zijn er meerdere in omloop. Altijd heb je een plugin nodig, maar de meeste oplossingen zijn wel gratis te gebruiken. Het voordeel van zo’n ‘2-factor beveiliging’ is dat, zelf wanneer iemand anders over je gebruikersnaam en wachtwoord beschikt, er nog steeds niet ingelogd kan worden. Daavoor is immers ook de unieke, steeds wisselende, beveiligingscode nodig. En die heb je alleen als je over jouw telefoon beschikt.
7. Forceer login over https
Naast het al genoemde SSL certificaat, kun je WordPress de login op de wp-admin laten forceren om altijd over https te gaan. Daarmee voorom je een login via http en dus het onbeveiligd verzenden van gebruikersnamen en wachtwoorden.
Je doet dit als volgt:
-
- Een korte, extra regel in je wp-config.php volstaat. Dit bestand bereik je met behulp van je FTP tool en het bevindt zich in de root van je WordPress installatie
- Open het bestand en voeg de volgende regel toe, onderin het bestand:
define( 'FORCE_<span id="urn:enhancement-0775fdce-b5c5-5a59-d497-d1e2b96d3a37" class="textannotation">SSL</span>_ADMIN', true );
-
- Sla de wp-config.php op en overschrijf het origineel op je website.
Wist je overigens dat WordPress nog veel meer handige instellingen kent die je in je wp-config.php kunt doen?
8. Beveilig de wp-config.php
De wp-config.php uit het vorige punt bevat gevoelige informatie, zoals je wellicht hebt gezien. De database gebruiker en wachtwoord staan erin. En heb je eenmaal toegang tot de database dan is het via die weg mogelijk om WordPress gebruikers toe te voegen, te wijzigen en te verwijderen.
Werkt jouw website op de Apache webserver dan heb je, wederom in de website root, een bestand staan dan .htaccess heet. Deze zorgt bijvoorbeeld voor zoekmachinevriendelijke urls in je website. Maar je kunt die .htaccess ook gebruiken om zaken te beveiligen.
Voeg de volgende code toe aan je .htaccess:
<Files wp-config.php> Order Allow,Deny Deny from all </Files>
Je moet dat wel op de juiste plek doen, onder de WordPress instellingen, maar vóór de afsluitende :
Kent jouw website geen .htaccess? Dan werkt je website op een ander type webserver en werkt bovenstaande tip niet.
9. Schakel XML-RPC uit
XML-RPC is een protocol dat gebruikt wordt om WordPress met diensten van derden gegevens uit te laten wisselen. Vaak heb je deze functionaliteit helemaal niet nodig en XML-RPC staat toch bekend als een mogelijk gevaar. Twijfel je of weet je niet zeker of jouw website XML-RPC gebruikt? Voer dan onderstaande tip uit en controleer daarna goed alle functies van je website, zéker wanneer er gegevens met andere partijen worden uitgewisseld.
Ook voor deze tip wijzig je de .htaccess. Voeg de volgende code toe:
<FilesMatch "^(xmlrpc.php)"> Order Deny,Allow Deny from all </FilesMatch>
10. Verberg gebruikersnamen
WordPress heeft een nogal vervelende eigenschap: de eerste gebruiker die aangemaaakt wordt bij de installatie heet tegenwoordig dan wel geen admin meer (zie tip 2), maar dan nog kun je er eenvoudig achterkomen wat de gebruikersnaam is van die eerte user. Tik achter je url maar eens het volgende: /?author=1
Bij veel websites zal de url nu verrpingen naar zoiets: https://domeinnaam/author/username
Waarbij dat laatste deel dus de gebruikersnaam is van de beheerder van de website! Dus dan kun je nog zo je best hebben gedaan bij punt 2, een beetje hacker vindt de gebruikersnaam dan alsnog binnen no-time.
Ook hier kun je iets aan doen met behulp van de htaccess. Voeg de volgende code onderin toe:
RewriteEngine On RewriteCond %{QUERY_STRING} author=d RewriteRule ^ /? [L,R=301]
Dit zorgt voor een redirect naar de homepage. De gebruikersnaam wordt dan niet vrijgegeven!
Mooi, dat is opgelost! Nou, nog niet helemaal. Er is namelijk nóg een manier waarop hackers de gebruikersnaam kunnen achterhalen. Dit werkt met zogenaamde JSON REST endpoints. Zelf kun je het vrij eenvoudig controleren door naar de volgende url op je website te navigeren:
https://[jedomeinnaam]/wp-json/wp/v2/users/1
Hierbij wijzig je uiteraard [jedomeinnaam] door je eigen domein. En wat zie je dan? Juist, alsnog gebruikersinformatie, zoals in onderstaand voorbeeld.
Indien de gebruiker met id 1 niet bestaat dan krijg je een andere melding. Ook kan het zijn dat de betreffende website dit gat al gedicht heeft en dan krijg je deze output natuurlijk ook niet te zien.
Wat doe je er zelf aan? Je kunt dit voorkomen door het toevoegen van de volgende functie in de functions.php files van je theme:
function disable_rest_endpoints ( $endpoints ) { if ( isset( $endpoints['/wp/v2/users'] ) ) { unset( $endpoints['/wp/v2/users'] ); } if ( isset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] ) ) { unset( $endpoints['/wp/v2/users/(?P<id>[d]+)'] ); } return $endpoints; } add_filter( 'rest_endpoints', 'disable_rest_endpoints');
Zodra je wijziging actief is zie je het volgende resultaat wanneer je dezelfde url nog eens probeert te openen:
WordPress beveiliging lastig?
Deze alternatieve tips zorgen ervoor dat je voor (veel) zaken geen WordPress plugin nodig hebt. Maar wellicht zijn een aantal van deze tips niet weggelegd voor beginners. Nu kun je natuurlijk dan gewoon alsnog een Beveiligingsplugin installeren zoals Wordfence of iThemes Security.
Is jouw website toch gehacked? Of vind je bovenstaande tips maar complex en laat je de beveiliging van je website liever aan ons over? Dat kan natuurlijk! Neem vrijblijvend contact op of sluit een WordPress Onderhoudscontract af voor direct resultaat!