Als het gaat om WordPress-beveiliging, is er veel dat je kan doen om te voorkomen dat je e-commerce- of blogwebsite het slachtoffer wordt van hackers en/of zwakke plekken. Stel je voor dat je op een ochtend wakker wordt en dat je erachter komt dat je website niet meer werkt: de nachtmerrie van elke website-eigenaar. Vandaag gaan we daarom tips, strategieën en technieken delen die je kan gebruiken om je WordPress-beveiliging te verbeteren, waardoor je nu maar ook op de lange termijn beschermd blijft.
Als je een klant bij Kinsta bent, dan hebben we goed nieuws! Je hoeft je namelijk over een groot deel van onderstaande dreigingen geen zorgen te maken, omdat we gratis hackfixes aanbieden! Maar zelfs met de garantie dat we jouw website er altijd weer bovenop helpen, is het uiteraard toch goed om verder te lezen en de punten, waar nodig, te implementeren.
Is WordPress een veilig platform?
De eerste vraag die waarschijnlijk in je opkomt: is WordPress veilig? In onze ogen is WordPress voor het grootste deel veilig. Toch heeft WordPress niet de beste naam als het gaat om kwetsbaarheden in haar beveiliging – soms wordt zelfs gezegd dat het platform geen veilig platform is en dat bedrijven WordPress het beste kunnen mijden. In het overgrote deel van de incidenten blijkt echter dat gebruikers beveiliging niet serieus nemen en de ene na de andere beveiligingsblunder maken.
Denk hierbij aan het gebruik van verouderde WordPress-versies, nulled plugins, slecht systeembeheer, laks omgaan met inloggegevens en een gebrek aan basiskennis wat betreft WordPress en beveiliging. Zelfs marktleiders gaan geregeld de fout in. Reuters werd gehackt, omdat ze een verouderde versie van WordPress gebruikten.
In principe gaat beveiliging niet over het creëren van een perfect beveiligd systeem. Een dergelijk systeem is niet alleen onmogelijk op te zetten, maar zou ook nog eens erg onpraktisch zijn en moeilijk te onderhouden. Beveiliging draait dan ook om het verminderen van risico – en niet het elimineren ervan. Het gaat erom dat je gebruikt maakt van de middelen die redelijkerwijs tot jouw beschikking staan. Hiermee verbeter je de algemene werking van je website, waardoor je de kans verkleint dat je een doelwit wordt en daarmee de kans op een hack reduceert. – Inhoudsopgave WordPress-beveiliging
We zullen de laatsten zijn om te beweren dat WordPress geen kwetsbaarheden kent. Volgens een onderzoek van Sucuri – een multi-platform beveiligingsbedrijf – uit het derde kwartaal van 2017 staat WordPress bij hun op #1 wat betreft infecties (met 83%). Dit aantal was in 2016 nog 74%.
Meer dan 43.5% van alle websites op internet draait op WordPress. Combineer dit met het feit dat er ontelbare thema- en plugincombinaties mogelijk zijn en dan is het niet verrassend dat wekelijks wel een aantal kwetsbaarheden worden gevonden. Er is echter ook een hechte community rond het WordPress-platform, om ervoor te zorgen dat deze lekken zo snel mogelijk worden gepatcht. Het beveiligingsteam van WordPress bestaat uit ongeveer 50 experts (in 2017 was dit aantal nog 25), met daarin ontwikkelaars en beveiligingsonderzoekers. Ongeveer de helft van de medewerkers is werkzaam bij Automattic en een deel is werkzaam op het gebied van webbeveiliging.
Beveiligingslekken en WordPress
Hieronder tonen we een aantal verschillende kwetsbaarheden die we bij WordPress tegenkomen.
- Backdoors
- Pharma hacks
- Brute force-aanvallen
- Schadelijke redirects
- Cross-site scripting (XSS)
- Denial of Service
Backdoors
Een backdoor biedt hackers toegang door de versleuteling te omzeilen. Hiermee krijgt de hacker via niet-reguliere methoden toegang te krijgen tot WordPress-websites, bijvoorbeeld via wp-admin, SFTP, FTP, enzovoorts. Als hackers eenmaal binnen zijn, dan stellen deze backdoors de hackers in staat om grote schade toe te brengen aan de servers met cross-site contamination-aanvallen – waardoor meerdere sites gehackt worden die op dezelfde server worden gehost. In het derde kwartaal van 2017 bracht Sucuri een rapport uit waarin stond dat bij 71% van geïnfecteerde sites een backdoor-injectie te vinden was – wat het voor hackers een van de populairste acties maakt nadat ze een site gehackt hebben.
Backdoors worden vaak op zo’n manier versleuteld dat het lijkt alsof het legitieme WordPress-systeembestanden zijn. Vervolgens vinden ze hun weg naar WordPress-databases door zwakke plekken en andere fouten in verouderde versies van het platform te misbruiken. Het TimThumb-fiasco is een goed voorbeeld van hoe kwetsbaar website zijn voor backdoor-aanvallen. Hierbij maakten hackers gebruik van louche scripts en verouderde software waarmee ze miljoenen websites binnendrongen.
Gelukkig is het redelijk eenvoudig om deze kwetsbaarheid te voorkomen én te fiksen. Je kan je WordPress-site scannen met hulpmiddelen zoals SiteCheck waarmee je eenvoudig de meest voorkomende backdoors kan detecteren. Twee-staps authenticatie, het blokkeren van IP’s, het beperken van beheerderstoegang en het voorkomen van ongeoorloofde uitvoering van PHP-bestanden, zorgen dat het gros van backdoor-aanvallen niet meer uitgevoerd kan worden. Hieronder gaan we er dieper op in. Canton Becker heeft een goed artikel geschreven over hoe je backdoor-aanvallen kan voorkomen op je WordPress-site.
Pharma hacks
De Pharma Hack wordt gebruikt om malafide code in verouderde versies van WordPress-websites en -plugins in te voegen. Als je vervolgens je website zoekt via een zoekmachine, krijg je farmaceutische advertenties te zien. De kwetsbaarheid is meer gericht op spam dan traditionele malware, maar geeft zoekmachines desalniettemin voldoende reden om de site te blokkeren vanwege de vele spam op de website.
De Pharma Hack maakt voornamelijk gebruik van backdoor-zwakheden van plugins en databases en kan worden opgeruimd als je de instructies volgt op deze blogpost van Sucuri. Het zijn echter vaak varianten van de Pharma Hack die website-eigenaren tegenkomen. Ook deze exploits maken gebruik van versleutelde injecties (vaak verstopt in databases) en om deze op te lossen moet je grondig en systematisch te werk gaan. Desondanks kan je Pharma Hacks gemakkelijk voorkomen door gerenommeerde WordPress-hostingproviders te gebruiken met up-to-date servers. Verder scheelt het regelmatig bijwerken van je WordPress-installaties, -thema’s en -plugins een hoop. Hostingbedrijven zoals Kinsta bieden gratis hackfixes aan bij hun Managed WordPress Hosting diensten.
Brute force-aanvallen
Brute force-inlogpogingen maken gebruik van geautomatiseerde scripts die misbruik te maken van zwakke wachtwoorden om zodoende toegang te krijgen tot je site. Twee-staps authenticatie, een limiet stellen op het aantal inlogpogingen, het in de gaten houden van ongeautoriseerde logins, het blokkeren van IP’s en het gebruik van sterke wachtwoorden zijn de eenvoudigste, maar tegelijkertijd ook de meest effectieve manieren om brute force-aanvallen te voorkomen. Maar helaas slagen veel eigenaren van WordPress-websites er niet in om deze maatregelen in te voeren, waardoor hackers in staat zijn om door middel van brute force-aanvallen dagelijks tot maar liefst 30.000 websites binnen te dringen.
Schadelijke redirects
Schadelijke redirects creëren backdoors in WordPress-installaties met behulp van FTP, SFTP, wp-admin en andere protocollen en injecteren redirect-code in de website. De omleidingen staan vaak in het .htaccess-bestand en andere WordPress-core bestanden in gecodeerde formulieren waardoor webverkeer naar schadelijke sites wordt geleid. We zullen verder in het artikel enkele manieren behandelen waarmee je deze aanvallen kan voorkomen.
Cross-site scripting (XSS)
Cross-site scripting (XSS) gebeurt wanneer een schadelijk script wordt geïnjecteerd in een ‘betrouwbare’ website of applicatie. Dit script wordt door de aanvaller vervolgens gebruikt om ongemerkt schadelijke code – meestal verstopt in browserscripts – naar de eindgebruiker te sturen. In de meeste gevallen is het doel om cookie- of sessiegegevens te verzamelen, maar in sommige gevallen kan de HTML op een pagina worden herschreven.
Volgens WordFence zijn cross-site scripting-kwetsbaarheden verreweg de meest voorkomende kwetsbaarheid in WordPress-plugins.
Denial of Service
Het allergevaarlijkst is misschien wel de Denial of Service-aanval (DoS). Deze exploit maakt gebruik van foutmeldingen en bugs in de code om het besturingssysteem van een website te overbelasten. Hackers hebben met DoS-aanvallen in totaal al vele miljoenen websites aangetast en miljoenen dollars binnengehaald door misbruik te maken van verouderde en instabiele versies van WordPress. Cybercriminelen zijn vanuit winstoogmerk minder snel geneigd om kleine bedrijven aan te vallen. Maar vergis je niet, vaak worden verouderde en kwetsbare websites van kleinere bedrijven gehackt en gebruikt om grote bedrijven aan te vallen als onderdeel van een zogenaamd botnet.
Zelfs de nieuwste versies van WordPress-software kunnen je niet volledig beschermen tegen goed gecoördineerde DoS-aanvallen, maar zullen je wel helpen om te voorkomen dat jouw website gebruikt wordt om financiële instellingen aan te vallen. En vergeet niet wat er op 21 oktober 2016 gebeurde. Dit was de dag dat het internet uitviel vanwege een DNS DDoS-aanval. Lees meer over waarom het belangrijk is om een premium DNS-provider te gebruiken om je WordPress-beveiliging te vergroten.
Beveiligingshandleiding WordPress
Volgens real-time internetstatistieken worden dagelijks meer dan 100.000 websites gehackt. 😮 Om die reden is het cruciaal de tijd te nemen om onderstaande aanbevelingen door te lezen waarin we uitleggen hoe je de beveiliging van je WordPress-website kan verbeteren.
We zullen ervoor zorgen dat dit bericht up-to-date blijft met relevante informatie wanneer dingen veranderen binnen het WordPress-platform en nieuwe kwetsbaarheden naar voren komen.
- Veilige WordPress-hosting
- Gebruik de nieuwste PHP-versie
- Slimme gebruikersnamen en wachtwoorden
- Nieuwste versies
- WordPress Admin vergrendelen
- Twee-staps authenticatie
- HTTPS – SSL-certificaat
- wp-config.php verharden
- XML-RPC uitschakelen
- WordPress-versie verbergen
- HTTP-beveiligingsheaders
- WordPress-beveiligingsplugins
- Databasebeveiliging
- Veilige verbindingen
- Bestands- en servermachtigingen
- Bewerken uitschakelen in het Dashboard
- Hotlinking voorkomen
- Periodieke WordPress-back-ups
- DDoS-bescherming
1. Investeer in veilige WordPress-hosting
Als het gaat om het beveiligen van je WordPress-beveiliging, speelt er veel meer dan alleen het vergrendelen van je site, hoewel we dat hieronder natuurlijk uitgebreid zullen behandelen. WordPress-beveiliging speelt zich ook af op het niveau van de server – en hier is je WordPress-host voor verantwoordelijk. Bij Kinsta nemen we beveiliging erg serieus en we behandelen dagelijks veel beveiligingsvraagstukken van onze klanten.
Het is erg belangrijk dat je een host kiest die je jouw website kan toevertrouwen – en daarmee een (groot) deel van je bedrijf. Als je je WordPress host op een eigen VPS, zorg dan dat je over de technische vaardigheden beschikt om beveiligingszaken zelf te regelen. En om eerlijk te zijn is het een slecht idee om sysadmin proberen te worden, alleen maar om $20 per maand te besparen.
Server-hardening is de sleutel tot een goed beveiligde WordPress-omgeving. Hardening gebeurt op meerdere niveaus, zowel in de hardware als de software. Alles bij elkaar zorgt hardening ervoor dat de IT-infrastructuur die jouw WordPress-site host je kan verdedigen tegen geavanceerde bedreigingen – zowel fysiek als virtueel.
Om deze reden moeten WordPress-servers altijd worden bijgewerkt naar het nieuwste besturingssysteem en de meest recente (beveiligings)software. Daarnaast moeten de servers grondig worden getest en regelmatig worden gescand op kwetsbaarheden en malware. Een recent voorbeeld hiervan is dat Kinsta onlangs NGINX moesten patchen, omdat er OpenSSL-beveiligingskwetsbaarheden waren ontdekt.
Al voordat de eerste WordPress-installatie op een server wordt geïnstalleerd, moeten er al firewalls op server-niveau en inbraakdetectiesystemen aanwezig zijn. Beveiliging is zelfs dan al nodig, omdat de website zelfs tijdens de installatie van WordPress en de opvolgende configuratiefase kwetsbaar is. Elk stukje beveiligingssoftware moet compatibel zijn met de nieuwste databasebeheersystemen om de beste prestaties te garanderen. Verder moet de server ook worden ingesteld om beveiligde netwerk- en bestandsoverdracht-coderingsprotocollen (zoals SFTP in plaats van FTP) te gebruiken. Dit heeft als doel om gevoelige informatie uit handen te houden van voor malafide indringers.
Bij Kinsta maken we voor al onze klanten gebruik van de snelste servers van Google Cloud Platform en Premium Tier netwerk om een snelle en veilige WordPress hostingervaring te garanderen. Een groot voordeel hiervan is dat het is gebouwd op een beveiligingsmodel dat in de loop van 15 is doorontwikkeld en dat momenteel producten en services zoals Gmail, Search, enz. beveiligt. Google heeft momenteel meer dan 500 fulltime beveiligingsprofessionals in dienst. Alle sites op Kinsta worden tevens beschermd door onze gratis Cloudflare integratie, die een uiterst solide firewall en gratis DDoS bescherming bevat.
Kinsta maakt naast Google Cloud Platform gebruik van Linux-containers (LXC) en LXD om de servers te managen, waardoor we niet alleen elk account kunnen afzonderen, maar binnen elk account ook elke afzonderlijke WordPress-site volledig kunnen isoleren. Beveiliging is vanaf het begin verweven met onze architectuur, waardoor we een veel veiliger platform hosten dan de concurrentie.
2. Gebruik de nieuwste PHP-versie
PHP is de ruggengraat van je WordPress-site en het gebruik van de nieuwste versie op je server is daarom erg belangrijk. Elke belangrijke release van PHP wordt meestal volledig ondersteund tot zo’n twee jaar na de release. Gedurende die tijd worden bugs en beveiligingsproblemen opgelost en wordt de versie regelmatig bijgewerkt. Op dit moment heeft iedereen die werkt met PHP 7.1 of lager geen beveiligingsondersteuning meer en wordt dus blootgesteld aan beveiligingslekken – simpelweg omdat de versie niet meer wordt gepatcht.
Kan je het al raden? Volgens de officiële WordPress Stats-pagina gebruikt 57% van de WordPress-gebruikers op het moment van schrijven nog steeds PHP 5.6 of lager. Als je dit combineert met PHP 7.0, gebruikt maar liefst 77,5% van de gebruikers momenteel PHP-versies die niet langer worden ondersteund. Dat is beangstigend!
Het kan voorkomen dat bedrijven en ontwikkelaars tijd nodig om de compatibiliteit van de nieuwe PHP-versie met hun code te testen en te garanderen, maar dit is geen excuus om een server te draaien zonder goede beveiligingsondersteuning. En dan hebben we het niet eens over de enorme prestatieverbeteringen die je laat liggen door een oude PHP-versie te gebruiken.
Weet je niet op welke versie van PHP jouw WordPress-site draait? De meeste hosts voegen deze informatie meestal toe in het headerverzoek van je site. Een snelle manier om dit te checken is door je site door Pingdom te halen. Ga naar het eerste verzoek en zoek daar naar de parameter X-Powered-By
. Meestal wordt hier de PHP-versie weergegeven die je webserver momenteel gebruikt. Sommige hosts zullen deze header echter verwijderen uit veiligheidsoverwegingen. Kinsta verwijdert deze header standaard om je site veilig te houden.
Bij Kinsta raden we alleen het gebruik van stabiele en ondersteunde versies van PHP aan, inclusief 8.0 en 8.1. PHP 5.6, 7.0 en 7.1 zijn uitgefaseerd. Je kunt zelf supersnel schakelen tussen PHP-versies vanuit het MyKinsta-dashboard.
Als je bij een WordPress-host zit die cPanel gebruikt, kan je normaliter van PHP-versie wisselen door op ‘PHP Select’ te klikken (in de categorie software).
3. Gebruik slimme gebruikersnamen en wachtwoorden
Verrassend genoeg is het gebruik van slimme gebruikersnamen en wachtwoorden een van de beste manieren om je WordPress-beveiliging te verbeteren. Appeltje-eitje, toch? Nou… dat valt tegen. Elk jaar publiceert SplashData een lijst met welke wachtwoorden het vaakst zijn gehackt, gerangschikt op populariteit. Bekijk de lijst van 2019 maar eens:
- 123456
- password
- 123456789
- 12345678
- 12345
- 111111
- 1234567
- sunshine
- qwerty
- iloveyou
Je leest het goed! Het meest populaire wachtwoord is ‘123456’, met een verbazingwekkend ‘password’ op de tweede plek. Dat is een van de redenen waarom we bij Kinsta een complex wachtwoord forceren voor de wp-admin login als je een nieuwe WordPress-website installeert (zie hieronder de schermafbeelding van ons one-click-installatieproces). Dit is verplicht.
De WordPress-core functie wp_hash_password
maakt gebruik van phpass om wachtwoorden te hashen, bovenop de acht keer dat gehasht wordt met behulp van MD5.
In sommige gevallen begint goede beveiliging simpelweg bij de basis. Google geeft een aantal goede tips om een sterk wachtwoord te kiezen. Daarnaast kan je ook een online tool zoals Strong Password Generator gebruiken. Je kan hier meer lezen over hoe je je WordPress wachtwoord kan wijzigen.
Het is ook belangrijk om voor elke website een ander wachtwoord te gebruiken. Het beste is om de wachtwoorden op te slaan in een lokale, versleutelde database op je computer. Een goede gratis tool om dit te doen is KeePass. Als je dit liever niet doet, zijn er ook online wachtwoordmanagers zoals 1Password of LastPass. Hoewel je gegevens in de cloud worden gehost, zijn deze over het algemeen veiliger, omdat je niet hetzelfde wachtwoord gebruikt op meerdere sites. Het voorkomt ook dat je notitiebriefjes op de rand van je monitor hoeft te plakken. 😉
En wat betreft WordPress-installaties: gebruik nooit de standaard ‘admin’ als gebruikersnaam. Maak een unieke WordPress-gebruikersnaam voor het beheerdersaccount en verwijder de ‘admin’-gebruiker als deze bestaat. Je kan dit doen door een nieuwe gebruiker onder ‘Users’ in het dashboard toe te voegen en het de rol van ‘Administrator’ toe te wijzen (zie hieronder).
Zodra je het nieuwe account de beheerdersrol hebt toegewezen, kan je teruggaan en de oorspronkelijke ‘Admin’-gebruiker verwijderen. Zorg wel dat je optie ‘Attribute all content to’ kiest en het nieuwe beheerdersprofiel selecteert wanneer je het account verwijdert. Hiermee wordt het nieuwe account aangewezen als auteur van die artikelen.
Je kan de huidige admin-gebruikersnaam ook handmatig wijzigen in phpMyAdmin met de volgende opdracht. Zorg ervoor dat je een back-up hebt gemaakt, voordat je begint met het wijzigen van de tabellen.
UPDATE wp_users SET user_login = 'newcomplexadminuser' WHERE user_login = 'admin';
4. Gebruik altijd de nieuwste versie van WordPress, plugins en thema’s
Up-to-date blijven is een andere cruciale manier om je WordPress-beveiliging te verbeteren. Dit geldt voor de WordPress-core en de plugins en thema’s (zowel uit de WordPress-bibliotheek als premium versies). Updates worden natuurlijk niet voor niets uitgebracht en zijn vaak verbeteringen in de beveiliging of bugfixes. We raden je aan om onze gedetailleerde handleiding te lezen over hoe automatische updates van WordPress precies werken.
Helaas zijn er miljoenen bedrijven die met verouderde versies van WordPress-software en -plugins werken, waarbij ze niet doorhebben wat voor enorme risico’s ze nemen. Vaak worden redenen genoemd als: ‘de site zal niet meer werken’, ‘belangrijke aanpassingen zullen verdwijnen’, ‘plugin X zal niet werken’ of ‘we hebben geen behoefte aan nieuwe functionaliteiten’.
Het zal je misschien niet verrassen, maar bugs in oude WordPress-versies is de meest voorkomende reden dat WordPress-websites ophouden te werken. Het wijzigen van kernbestanden wordt afgeraden door zowel het bedrijf achter WordPress als WordPress-experts met verstand van zaken. WordPress-updates bevatten meestal cruciale beveiligingspatches en extra functionaliteiten die nodig zijn om de nieuwste plugins te draaien.
Wist je dat hackers in 55,9% kwetsbaarheden in plugins als beginpunt hebben? Dat is wat WordFence concludeerde toen ze voor hun onderzoek meer dan 1.000 eigenaren van gehackte WordPress-sites interviewden. Door je plugins op tijd bij te werken, zorg je ervoor dat je niet in dit rijtje met slachtoffers terecht komt.
We bevelen ook ten strengste aan om alleen vertrouwde plugins te installeren. De categorieën ‘featured’ en ‘popular’ in de WordPress-bibliotheek zijn hiervoor een goed begin. Daarnaast kan je plugins natuurlijk ook direct van de website van de ontwikkelaar downloaden. We raden ten zeerste af om nulled WordPress-plugins en thema’s te gebruiken.
Allereerst weet je nooit wat er allemaal in de aangepaste code verborgen zit: voor je het weet is je website gehackt. Daarnaast schaadt het niet-betalen voor premium WordPress-plugins de groei van de community. Ontwikkelaars moeten ook hun kost verdienen.
Hier is hoe u een WordPress-thema goed kunt verwijderen.
Je kan een online tool zoals VirusTotal gebruiken om naar malware te scannen binnen plugin- en themabestanden.
Zo werk je WordPress-core bij
Het updaten van je WordPress-installatie kan op een aantal manieren. Als je een klant bent van Kinsta, maken we automatisch back-ups voor je aan die je met een enkele muisklik kan herstellen. Op deze manier kan je nieuwe versies van WordPress en plugins testen zonder je zorgen te maken dat er iets verkeerd gaat. Als alternatief kan je de updates ook eerst testen in onze testomgeving.
Om de WordPress-core bij te werken, klik je op ‘Updates’ in het WordPress-dashboard en vervolgens op de knop ‘Update now’.
Je kan WordPress ook handmatig updaten door de nieuwste versie te downloaden en deze via FTP te uploaden SFTP.
Volg onderstaande stappen om je bestaande installatie van een update te voorzien:
- Verwijder de oude mappen
wp-includes
enwp-admin
. - Upload de nieuwe mappen
wp-includes
enwp-admin
. - Selecteer de losse bestanden van de nieuwe map genaamd
wp-content
en upload deze naar de bestaandewp-content
-map waarbij je de bestaande bestanden overschrijft. Verwijder de bestaande mapwp-content
NIET. Verwijder GEEN bestanden of mappen uit de bestaandewp-content
-map (behalve de bestanden die worden overschreven door nieuwe bestanden). - Upload alle nieuwe losse bestanden vanuit de hoofdmap van de nieuwe versie naar de bestaande WordPress-hoofdmap.
Hoe update je WordPress-plugins
Het bijwerken van je WordPress-plugins is vergelijkbaar met het updaten van je WordPress-core. Klik op ‘Updates’ in je WordPress-dashboard, selecteer de plugins die je wilt bijwerken en klik op ‘Update Plugins’.
Ook hier is het mogelijk om plugins handmatig te updaten. Download hiervoor de nieuwste versie rechtstreeks van de plugin-ontwikkelaar of uit de WordPress-bibliotheek, upload deze via FTP en overschrijf de bestaande plugin in de map /wp-content/plugins
.
Het is ook belangrijk om op te merken dat ontwikkelaars hun plugins niet altijd up-to-date houden. Het team van WP Loop heeft geanalyseerd hoeveel WordPress-plugins in de bibliotheek niet up-to-date zijn met de huidige WordPress-versie. Volgens hun onderzoek is bijna 50% van de plugins in de bibliotheek al meer dan 2 jaar niet bijgewerkt.
Dit betekent niet per se dat de plugin niet meer werkt met de huidige versie van WordPress, maar het wordt uiteraard wel aanbevolen dat je plugins kiest die actief worden bijgewerkt. Verouderde plugins zijn nou eenmaal kwetsbaarder voor beveiligingslekken.
Gebruik je gezond verstand als het gaat om plugins. Kijk naar de datum bij ‘Last Updated’ en naar het aantal beoordelingen dat een plugin heeft. Zoals je kan zien in het onderstaande voorbeeld, is deze plugin verouderd en bevat deze slechte recensies. We raden dus ook aan om deze niet te gebruiken. WordPress toont daarnaast vaak een waarschuwing bovenaan de pagina wanneer een plugin al lang niet meer is bijgewerkt.
Er zijn veel nieuwsbronnen beschikbaar die je op de hoogte brengen van de nieuwste beveiligingsupdates en -kwetsbaarheden van WordPress. Enkele vermelden we hier:
- WP Security Bloggers: in deze lijst worden 20+ beveiligingsfeeds gecombineerd.
- WPScan: Vermeldt meer dan 10.000 zwakheden van WordPress, plugins en thema’s.
- Officieel WordPress-beveiligingsarchief
5. WordPress Admin vergrendelen
Soms is de populaire strategie van security by obscurity een effectief middel om de gemiddelde online business en WordPress-website te beveiligen. Bij security by obscurity gaat het erom dat je de precieze werking van je website zoveel mogelijk verbergt, wat logischerwijs het hacken van je WordPress-site bemoeilijkt. Backdoors zijn moeilijker te vinden en hierdoor heb je minder kans dat je website aangevallen wordt. Het vergrendelen van je WordPress Admin-omgeving is om die reden een goede manier om je beveiliging op te schroeven. Twee goede manieren om dit te doen zijn door de standaard wp-admin login-URL te wijzigen en het aantal inlogpogingen te beperken.
Hoe de WordPress login-URL te wijzigen
De standaard login-URL van je WordPress-site is domein.nl/wp-admin. Een van de problemen hiermee is dat alle mogelijke bots, hackers en scripts hier ook van de hoogte op zijn. Door de URL te wijzigen, verklein je de kans dat je een doelwit wordt en bescherm je jezelf beter tegen brute force-aanvallen. Dit is verre van de ultieme oplossing, maar het is wel een makkelijk te implementeren trucje om je beveiliging verbeteren.
Om je WordPress inlog-URL te wijzigen, raden we aan om de gratis inlogplugin WPS Hide of de premium plugin Perfmatters te gebruiken. Beide plugins hebben een simpel invoerveld. Vergeet niet om iets unieks te kiezen en iets dat nog niet op een lijst staat van een bot of script.
Hoe het aantal inlogpogingen te beperken
Hoewel het wijzigen van de aanmeldings-URL in de meeste gevallen tot een vermindering van het aantal inlogpogingen zal leiden, kan ook het plaatsen van een limiet erg effectief zijn. De gratis Limit Login Attempts Reloaded-plugin is een goede manier om in korte tijd de belangrijkste zaken op te zetten, zoals de tijdsduur van de lock-outperiode, het aantal foute inlogpogingen en het instellen van IP-whitelists en -blacklists.
Als je op zoek bent naar een eenvoudigere oplossing, dan is de gratis plugin Login LockDown een prima alternatief. Login LockDown registreert het IP-adres en tijdsaanduiding van elke mislukte inlogpoging. Als binnen een korte tijdspanne meer dan een X-aantal pogingen uit dezelfde IP-range worden gedetecteerd, dan wordt de inlogfunctie uitgeschakeld voor alle aanvragen binnen die range. De plugin is 100% compatibel met de WPS Hide plugin die we eerder noemden.
Hoe Basic HTTP-authenticatie toe te voegen (htpasswd-bescherming)
Een andere manier om de beheerdersomgeving te vergrendelen is door Basic HTTP-verificatie toe te voegen. Deze methode vereist een gebruikersnaam en wachtwoord, voordat je de WordPress-aanmeldingspagina überhaupt kan openen. Opmerking: we raden af om dit te gebruiken op e-commerce- of membership-sites. Toch kan het een zeer effectieve manier zijn om te voorkomen dat bots je site aanvallen.
Apache
Als je gebruik maakt van een cPanel-host, kun je het beveiligen van mappen met een wachtwoord inschakelen in het configuratiescherm. Om het handmatig in te stellen, zul je eerst een .htpasswd
-bestand moeten aanmaken. Hiervoor kan je deze handige generator tool gebruiken. Upload het bestand vervolgens naar een map in de ‘wp-admin’-map, zoals:
home/user/.htpasswds/public_html/wp-admin/htpasswd/
Maak vervolgens een .htaccess
-bestand aan met de volgende code en upload het naar je /wp-admin
-map. Zorg ervoor dat je het directory-pad en de gebruikersnaam bijwerkt.
AuthName "Admins Only"
AuthUserFile /home/yourdirectory/.htpasswds/public_html/wp-admin/htpasswd
AuthType basic
require user yourusername
Het nadeel om het zo te doen is dat AJAX (admin-ajax) aan de front-end van je website niet meer zal werken.Sommige externe plugins werken niet zonder AJAX. Daarom is het verstandig om ook de volgende code toe te voegen aan het bovenstaande .htaccess-bestand.
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>
Nginx
Ook als je Nginx gebruikt, kan je toegang beperken met HTTP-verificatie. Lees hiervoor deze handleiding.
Als je je site bij Kinsta host, kan je gebruik maken van onze makkelijke wachtwoordbeveiligingstool (htpasswd) in het MyKinsta-dashboard. Je kan deze vinden in de sectie “Tools” op je site. Klik simpelweg op “Inschakelen”, kies een gebruikersnaam en wachtwoord en klaar is Kees.
Nadat het ingeschakeld is vereist je WordPress site dan authenticatie om er toegang toe te krijgen. Je kunt de inloggegevens op elk moment veranderen of uitschakelen als je ze niet meer nodig hebt.
Een URL-pad vergrendelen
Als je een firewall voor webtoepassingen gebruikt (WAF) gebruikt zoals Cloudflare of Sucuri, dan zijn er manieren om een URL-pad te vergrendelen. In essentie komt het erop neer dat alleen jouw IP-adres(sen) toegang hebben tot de URL van de WordPress Admin-login. Nogmaals, het gebruik hiervan op e-commerce- of membership-sites moet vermeden worden, omdat deze afhankelijk zijn van toegang tot de back-end van jouw site.
- Cloudflare heeft een URL-vergrendelingsfunctie in hun Pro en hogere accounts. Je kan een regel instellen voor elke URL of elk pad.
- Sucuri heeft een feature waarmee je URL-paden kan blacklisten. Je kan hier je eigen IP op de whitelist zetten.
6. Maak gebruik van twee-staps authenticatie
Laten we vooral twee-staps authenticatie niet vergeten! Ook al heb je het meest veilige wachtwoord ter wereld, de kans bestaat altijd dat iemand erachter komt. Twee-staps authenticatie breidt het inlogproces uit van 1 stap naar 2, waardoor je niet alleen je wachtwoord gebruikt, maar ook nog een andere methode. Over het algemeen is dit een sms, telefoontje of een wachtwoord dat je binnen een bepaalde tijd moet invoeren (time-based one-time password, oftewel TOTP). In de meeste gevallen is dit 100% effectief in het voorkomen van brute force-aanvallen op je WordPress-site. Waarom? Het is namelijk zo goed als onmogelijk dat de aanvaller zowel je wachtwoord als je mobiele telefoon tot zijn beschikking heeft.
Wat betreft twee-staps authenticatie zijn er twee onderdelen. Allereerst gaat het om je account en/of dashboard van je hosting-provider. Als iemand hier toegang toe krijgt, kunnen ze je wachtwoorden wijzigen, je websites verwijderen, DNS-records wijzigen en allerlei andere vreselijke dingen doen. Bij Kinsta werken we samen met Authy en stellen we twee-staps authenticatie beschikbaar voor je MyKinsta-dashboard.
Het tweede deel van de twee-staps authenticatie heeft betrekking op je daadwerkelijke WordPress-installatie. Er zijn een aantal plugins die we kunnen aanbevelen:
Veel van deze plugins hebben hun eigen Authenticator-apps die je op je telefoon kan installeren:
- Android Duo Mobile App
- Android Duo Mobile App
- iPhone Duo Mobile App
- Android Google Authenticator App
- iPhone Google Authenticator App
Als je een van bovenstaande plugins hebt geïnstalleerd, dan verschijnt er normaal gesproken een extra veld als je wilt inloggen in WordPress – hier kan je de beveiligingscode invullen. Of, zoals met de Duo-plugin, log je eerst in met je gegevens. Pas daarna dien je te kiezen uit een verificatiemethode, zoals Duo Push, een telefoontje of een code.
Deze methode kan eenvoudig worden gecombineerd met het wijzigen van de inlog-URL, die we eerder bespraken. Nu is niet alleen je WordPress inlog-URL verborgen, maar is nu ook een extra verificatie vereist om binnen te komen. 💪
Zorg dat je profiteert van de voordelen die twee-staps authenticatie biedt. Het is een makkelijke manier om je WordPress-beveiliging te verbeteren.
7. HTTPS voor versleutelde verbindingen gebruiken – SSL-certificaat
Een manier die het meest over het hoofd wordt gezien als het gaat om WordPress-beveiliging, is het installeren van een SSL-certificaat en je site via HTTPS te laten lopen. HTTPS (Hyper Text Transfer Protocol Secure) is een mechanisme waarmee jouw browser of webapplicatie veilig verbinding kan maken met een website. Een grote misvatting is dat je alleen SSL nodig hebt wanneer je betalingen uitvoert op je website.
Laten we een paar redenen geven waarom HTTPS niet alleen voor e-commerce cruciaal is. Veel hosts, waaronder Kinsta, bieden zelfs gratis SSL-certificaten aan met Let’s Encrypt.
1. Veiligheid
De belangrijkste reden om HTTPS te gebruiken, is de toegevoegde beveiliging. Dit is de voornaamste reden dat HTTPS voor e-commerce-sites een must-have is. Maar ook voor andere website-eigenaren is versleuteling cruciaal. Denk eens aan de schade die iemand kan doen als diegene jouw login-gegevens bemachtigt. Veel van jullie zullen een WordPress-website hebben met meerdere gebruikers, of dit nou andere auteurs zijn of klanten. Als je website HTTP gebruikt, dan worden logingegevens onversleuteld naar de server gestuurd wanneer iemand inlogt. HTTPS is dan ook absoluut noodzakelijk voor een veilige verbinding tussen een website en een browser.Op deze manier kan je voorkomen dat hackers en/of een tussenpersoon toegang krijgt tot je website.
Of je nou een WordPress-blog, nieuwssite of een agency runt: iedereen kan profiteren van HTTPS en ervoor zorgen dat er geen onversleutelde data worden doorgegeven.
2. SEO
Google heeft officieel bevestigd dat HTTPS een factor is die ze meewegen in hun zoekmachineranking. Hoewel het slechts een kleine factor is, zullen de meesten van jullie waarschijnlijk geen enkel voordeel op tafel laten liggen om de concurrentie te verslaan in SERP.
3. Vertrouwen en geloofwaardigheid
Volgens een enquête van GlobalSign zoekt 28,9% van de bezoekers naar de groene adresbalk in de browser en maakt 77% van hen zich zorgen of hun gegevens onderschept of misbruikt worden. Bij het zien van het groene slotje hebben klanten meer gemoedsrust in de wetenschap dat hun gegevens veiliger zijn.
4. Verwijzingsgegevens
Veel mensen weten niet dat HTTPS-naar-HTTP-verwijzingsgegevens worden geblokkeerd in Google Analytics. Dus wat gebeurt er met de gegevens? Nou, het meeste wordt samengevoegd onder het label ‘direct traffic’. Gaat iemand echter van HTTP naar HTTPS, dan wordt de verwijzer wel meegenomen.
5. Chrome-waarschuwingen
Vanaf 24 juli 2018 labelt Chrome (versies 68 en hoger) alle niet-HTTPS websites als ‘Onveilig’. Het maakt hierbij niet uit of deze sites gegevens verzamelen of niet. Nog nooit was HTTPS zo belangrijk!
Dit is vooral belangrijk als je website het grootste deel van het verkeer ontvangt via Chrome. Je kan in Google Analytics onder ‘Audience’ zoeken in de sectie ‘Browser & OS’ en hier het percentage Google Chrome-gebruikers vinden. Het moge duidelijk zijn dat Google het voor haar bezoekers vrij duidelijk maakt wanneer ze met een niet-beveiligde verbinding je website bezoeken.
6. Prestaties
Vanwege een protocol genaamd HTTP/2 kunnen degenen die een goed geoptimaliseerde site beheren met HTTPS vaak zelfs snelheidsverbeteringen verwachten. Vanwege browserondersteuning is HTTPS vereist om HTTP/2 te draaien. De prestatieverbetering kan toegeschreven worden aan een aantal zaken zoals betere multiplexing, parallelism, HPACK-compressie met Huffman-encodering, de ALPN-extensie en server-push.
En door de introductie van TLS 1.3 zijn HTTPS-verbindingen zelfs nog sneller. Kinsta ondersteunt TLS 1.3 op al onze servers en onze Kinsta CDN.
Hebben we je kunnen overtuigen van de noodzaak van HTTPS? Lees dan onze gedetailleerde WordPress HTTPS-migratiehandleiding om de overstap te maken en leer meer in onze TLS vs SSL-vergelijking.
Om een veilige, versleutelde verbinding tussen jou en de server af te dwingen bij het aanmelden en beheren van je site, voeg je de volgende regel toe aan je wp-config.php
-bestand:
define('FORCE_SSL_ADMIN', true);
(Leessuggestie: als je verouderde TLS-versies gebruikt, dan is het slim om de Chrome-foutmeldingen ERR_SSL_OBSOLETE_VERSION op te lossen).
8. Je ‘wp-config.php’-bestand beveiligen
Het ‘wp-config.php‘-bestand is het hart van elke WordPress-installatie. Het is veruit het belangrijkste bestand van je website als het gaat om WordPress-beveiliging. Het bestand bevat database-inloginformatie en beveiligingssleutels die de encryptie van informatie in cookies afhandelen. Hieronder staan een aantal dingen die je kan doen om dit belangrijke bestand beter te beschermen.
1. Wp-config.php verplaatsen
Wp-config.php bevindt zich standaard in de hoofdmap van je WordPress-installatie (jouw /public
HTML-map) Je kan deze verhuizen naar een map die www-ontoegankelijk is. Aaron Adams heeft in een artikel uitleg gegeven waarom dit zoveel voordelen heeft.
Je kan je wp-config.php
-bestand eenvoudig verplaatsen door de inhoud van het bestand te kopiëren naar een ander bestand. Vervolgens kun je in je wp-config.php
-bestand het volgende fragment plaatsen om de inhoud van het andere bestand mee te nemen. Opmerking: het pad van de map kan anders zijn op afhankelijk van je webhost en instellingen. Meestal hoef je echter maar één map omhoog te gaan.
<?php include('/home/yourname/wp-config.php');
Opmerking: dit werkt niet voor klanten van Kinsta en zorgt dat je website onbereikbaar wordt. Dit komt omdat onze open_basedir-beperkingen het uitvoeren van PHP boven de ~/public
-map om veiligheidsredenen niet toestaan. Het goede nieuws? We hebben dit al voor je geregeld! We blokkeren automatisch de toegang tot wp-login.php
vanuit de ~/public-map
. In de praktijk komt dit op hetzelfde neer. Onze standaard Nginx-instellingen bevat een regel die een 403 retourneert voor elke poging tot toegang van wp-config.php
.
2. Beveiligingssleutels WordPress updaten
WordPress-beveiligingssleutels zijn een reeks willekeurige variabelen die de versleuteling verbeteren van informatie die is opgeslagen in de cookies van de gebruiker. Sinds WordPress 2.7 zijn er 4 verschillende sleutels: AUTH_KEY
, SECURE_AUTH_KEY
, LOGGED_IN_KEY
en NONCE_KEY
.
Wanneer je WordPress installeert, worden deze willekeurig voor je aangemaakt. Als je echter meerdere migraties hebt gedaan of (bekijk onze gecureerde lijst van de beste WordPress-migratieplugins) een site van iemand anders hebt gekocht, kan het goed zijn om nieuwe WordPress-sleutels aan te maken.
WordPress heeft een gratis tool die je kunt gebruiken om willekeurige sleutels te genereren. Je kan je huidige sleutels bijwerken die zijn opgeslagen in je wp-config.php-bestand.
Lees hier meer over WordPress-beveiligingssleutels.
3. Toegangsrechten wijzigen
Meestal staan bestanden in de hoofdmap van een WordPress-site ingesteld op 644. Dit betekent dat bestanden leesbaar en beschrijfbaar zijn voor de eigenaar van het bestand (6), leesbaar voor gebruikers in de groep (4) en leesbaar voor iedereen (4). Volgens de WordPress-documentatie moeten de machtigingen voor het bestand wp-config.php
zijn ingesteld op 440 of 400 om te voorkomen dat andere gebruikers op de server dit lezen. Je kunt dit eenvoudig wijzigen met je FTP-client.
Op sommige hostingplatforms kunnen de machtigingen op een andere manier ingedeeld zijn, omdat de gebruiker die de webserver beheert geen toestemming heeft om de bestanden te wijzigen. Weet je het niet zeker? Neem dan contact op met je hostingprovider.
9. XML-RPC uitschakelen
In de afgelopen jaren is XML-RPC steeds vaker doelwit geworden van brute force-aanvallen. Zoals Sucuri al concludeerde is een van de verborgen kenmerken van XML-RPC dat de system.multicall-methode gebruikt kan worden om meerdere methoden binnen één verzoek uit te voeren. Dat is erg handig, omdat dit toepassingen toestaat om meerdere opdrachten binnen één HTTP-verzoek door te geven. Echter, het wordt ook misbruikt voor slechtere doeleinden.
Er zijn een paar WordPress-plugins, zoals Jetpack, die afhankelijk zijn van XML-RPC. Toch heeft een meerderheid van de website-eigenaren XML-RPC niet nodig en daarom kan het nuttig zijn om deze uit te schakelen. Weet je niet zeker of XML-RPC op je website runt? Danilo Ercoli van het Automattic-team heeft een tool geschreven, de XML-RPC Validator. Je kan deze loslaten op je WordPress-site om te zien of XML-RPC is ingeschakeld. Als dat niet het geval is, dan zie je een foutmelding vergelijkbaar met die in onderstaande afbeelding van onze Kinsta-blog.
Om XML-RPC volledig uit te schakelen, kun je de gratis Disable XML-RPC-API-plugin installeren. Of je kunt het uitschakelen met de premium perfmatters-plugin, die je ook in staat stelt om prestatieverbeteringen in te voeren.
Als je klant bent bij Kinsta, is dit echter niet nodig. Wanneer wij een aanval via XML-RPC detecteren, voegen we namelijk automatisch een lijn met code toe aan je NGINX-configuratiebestand. Hierdoor krijgen de hackers een 403-foutmelding te zien en kunnen we ze stoppen voordat ze eenmaal goed en wel begonnen zijn.
location ~* ^/xmlrpc.php$ {
return 403;
}
10. Je WordPress-versie verbergen
Hiding your WordPress version touches again on the subject of WordPress security by obscurity. The less other people know about your WordPress site configuration the better. If they see you are running an out of date WordPress installation, this could be a welcome sign to intruders. By default, the WordPress version shows up in the header of your site’s source code. Again, we recommend simply making sure your WordPress installation is always up to date so you don’t have to worry about this.
Je kan de volgende code gebruiken om het weg te halen. Voeg het toe aan het bestand functions.php
van je WordPress-thema.
function wp_version_remove_version() { return ''; } add_filter('the_generator', 'wp_version_remove_version');
Je zou ook een premium plugin zoals perfmatters kunnen gebruiken (ontwikkeld door een werknemer van Kinsta), waarmee je de WordPress-versie met één klik kan verbergen, en waarmee je ook andere optimalisaties voor je WordPress-site kan uitvoeren.
Een andere locatie waar de WordPress-versie wordt getoond, bevindt zich in het standaard readme.html
-bestand (zoals hieronder te zien is). Dit bestand is opgenomen in elke WordPress-versie. Het bevindt zich in de hoofdmap van je installatie, domein.nl/readme.html
. Je kan dit bestand gerust verwijderen via FTP.
Als je gebruik maakt van WordPress 5.0 of hoger dan kan je bovenstaande paragraaf negeren, omdat het versienummer zich niet meer in het bestand bevindt.
11. De nieuwste HTTP-beveiligingsheaders toevoegen
Gebruikmaken van HTTP-beveiligingsheaders is een volgende stap die je kan nemen om je WordPress-beveiliging te verbeteren. Deze worden meestal geconfigureerd op het niveau van de webserver en vertellen de browser hoe hij moet omgaan met de inhoud van je site. Er zijn veel verschillende HTTP-beveiligingsheaders, maar hieronder staan de belangrijkste.
- Content-Security Policy
- X-XSS-Protection
- Strict-Transport-Security
- X-Frame-Options
- Public-Key-Pins
- X-Content-Type
KeyCDN heeft een erg goed artikel geschreven voor als je meer wilt lezen over HTTP-beveiligingsheaders.
Je kan kijken welke headers momenteel worden uitgevoerd op je WordPress-site door Chrome devtools te starten en naar de header te kijken van de eerste response van je website. Hieronder staat een voorbeeld van Kinsta.com. Je kan zien dat we gebruik maken van de headers: strict-transport-security
, x-content-type
en x-frame-options
.
Je kan je WordPress-website ook laten scannen door de gratis tool securityheaders.io van Scott Helme Hiermee kun je zien welke HTTP-beveiligingsheaders je website momenteel gebruikt. Als je niet zeker weet hoe je ze moet implementeren, kun je altijd je host om hulp vragen.
12. WordPress beveiligingsplugins gebruiken
Natuurlijk moeten we ook enkele WordPress-beveiligingsplugins noemen in deze handleiding. Er zijn veel goede ontwikkelaars en bedrijven die geweldige producten bieden om je WordPress-site beter te beschermen. Hier zijn er een paar.
Bij Kinsta bieden we hardwarematige firewalls, actieve en passieve beveiliging, real-time uptime-controle en een reeks aan andere geavanceerde features om te voorkomen dat hackers bij je data komen. Als, ondanks onze inspanningen, je website in gevaar is gebracht, dan lossen we dit gratis voor je op.
Hieronder staan enkele kenmerken en toepassingen die je van alle bovenstaande plugins kan verwachten:
- Het genereren en forceren van sterke wachtwoorden bij het maken van nieuwe gebruikers.
- Het wijzigen van een wachtwoord na een bepaalde periode forceren.
- Het loggen van de acties van gebruikers
- Het updaten WordPress-beveiligingssleutels makkelijk maken
- Scannen voor malware
- Twee-staps authenticatie
- reCAPTCHA’s
- WordPress firewalls
- IP-whitelisting
- IP-blacklisting
- Changelogs van bestanden
- Het monitoren van DNS-wijzigingen
- Kwaadwillende netwerken blokkeren
- WHOIS-informatie van bezoekers bekijken
Een zeer belangrijke functie van veel beveiligingsplugins is het zogenaamd checksum-hulpprogramma. Dit betekent dat ze je WordPress-installatie inspecteren en zoeken naar wijzigingen in de kernbestanden die door WordPress.org (via de API) zijn geleverd. Alle wijzigingen of aanpassingen aan deze bestanden kunnen wijzen op een hack. Om zelf je eigen checksum uit te voeren kan je ook WP-CLI gebruiken.
Zorg ervoor dat u onze grondige gids over File Integrity Monitoring (Dossierintegriteitsbewaking) leest.
Een andere goede plugin die we willen noemen is WordPress Security Audit Log. Deze plugin is perfect als je werkt met WordPress multisite of als je simpelweg een website beheert met meerdere auteurs. Het helpt de productiviteit van gebruikers te waarborgen en laat beheerders zien wat er wordt gewijzigd. Denk hierbij aan logins, wachtwoordwijzigingen, themawijzigingen, widgetwijzigingen, nieuwe artikelen, WordPress-updates, enzovoort.
Al met al is het een uiterst complete oplossing om activiteiten op een WordPress-website te loggen. Op het moment van schrijven heeft de plugin WP Security Audit Log meer dan 80.000+ actieve installaties met een score van 4,7 uit 5 sterren. Het is een uitstekende keuze als je op zoek bent naar een beveiligingsoplossing die compatibel is met WordPress Multisite.
De plugin biedt ook extra premium add-ons, zoals e-mailmeldingen, beheer van gebruikerssessies, een zoekfunctie en het aanmaken van rapporten. Benieuwd naar nog meer plugins? Bekijk dan welke andere WordPress-beveiligingsplugins je kunnen helpen de boeven buiten de deur te houden.
13. Je database beveiligen
Er zijn een aantal manieren om de beveiliging van je WordPress-database te verbeteren. De eerste is om een slimme naam voor je database te kiezen. Als je website ‘VoetbalNieuws’ heet, dan wordt je database standaard als wp_voetbalnieuws
ingesteld. Door de naam van je database te veranderen naar iets wat minder makkelijk te raden is, bescherm je je website en maak je het voor hackers moeilijker om achter de databasegegevens te komen.
Een tweede aanbeveling is om een andere prefix voor je database te gebruiken. Standaard gebruikt WordPress wp_
. Dit wijzigen naar iets als 39xw_
kan je site een stuk veiliger maken. Wanneer je WordPress installeert, word je gevraagd om een tabelprefix op te geven (zie hieronder). Er zijn ook manieren om de WordPress tabelprefix in bestaande installaties te wijzigen. Als je een Kinsta klant bent, is dit niet nodig. We hebben de site en de database vergrendeld!
14. Gebruik altijd beveiligde verbindingen
We kunnen niet genoeenadrukken hoe belangrijk het is om veilige verbindingen te gebruiken! Zorg ervoor dat je WordPress-host voorzorgsmaatregelen neemt, zoals het aanbieden van SFTP of SSH. SFTP oftewel Secure File Transfer Protocol (ook bekend als SSH-protocol voor bestandsoverdracht), is een netwerkprotocol dat wordt gebruikt voor bestandsoverdracht. Het is een veiligere methode dan standaard FTP.
We ondersteunen uitsluitend SFTP-verbindingen bij Kinsta om ervoor te zorgen dat je gegevens veilig en versleuteld blijven. De meeste WordPress-hosts gebruiken doorgaans poort 22 voor SFTP. Wij gaan nog een stap verder en geven elke website een willekeurige poort. Deze kan je vinden in het MyKinsta-dashboard.
Het is ook belangrijk om ervoor te zorgen dat de router bij je thuis correct is ingesteld. Als iemand je thuisnetwerk hackt, kunnen zij toegang krijgen tot allerlei soorten informatie. Het is mogelijk dat ze erachter komen waar belangrijke informatie over je WordPress-website(s) is opgeslagen. Hier zijn enkele eenvoudige tips:
- Schakel extern beheer (VPN) niet in. Normale gebruikers gebruiken deze functie nooit en door deze uit te schakelen kan je voorkomen dat je netwerk van buitenaf kan worden binnengedrongen.
- Routers gebruiken normaal gesproken IP-adressen in de range van 192.168.1.1. Gebruik een andere range, zoals 10.9.8.7.
- Schakel het hoogste niveau van codering in op je Wi-Fi.
- Maak gebruik van een IP-whitelist met je Wi-Fi, zodat alleen mensen met het juiste wachtwoord en een vooraf goedgekeurd IP toegang hebben.
- Houd de firmware op je router up-to-date.
Wees altijd voorzichtig met inloggen op je WordPress-website als je dit doet vanuit een openbare locatie. Belangrijk: Starbucks is NIET een beveiligd netwerk! Neem voorzorgsmaatregelen, zoals het verifiëren van de netwerk-SSID, voordat je op Connect klikt. Je kan ook gebruik maken van een externe VPN-dienst, zoals ExpressVPN, om je internetverkeer te versleutelen en je IP-adres te verbergen voor hackers.
15. Controleer bestands- en servermachtigingen
Bestandsrechten van zowel je WordPress-installatie als je webserver zijn cruciaal voor het verbeteren van je beveiliging. Als de machtigingen te losjes ingesteld zijn, maak je het iemand makkelijk om toegang te krijgen tot je site en kan er veel schade worden aangericht. Aan de andere kant, als je machtigingen te streng zijn ingesteld, kan dit de functionaliteit van je website beperken. Het is dus belangrijk dat de juiste rechten worden ingesteld.
Toegangsrechten van bestanden
- Lezen deze rechten worden toegewezen als de gebruiker rechten heeft om het bestand te lezen.
- Schrijven deze rechten worden toegewezen als de gebruiker rechten heeft om het bestand te schrijven of aan te passen.
- Uitvoeren deze rechten worden toegewezen als de gebruiker over de rechten beschikt om het bestand uit te voeren en/of uit te voeren als een script.
Toegangsrechten van mappen
- Lezen deze rechten worden toegewezen als de gebruiker over de rechten beschikt om toegang te krijgen tot de inhoud van de geïdentificeerde map.
- Schrijven deze rechten worden toegewezen als de gebruiker de rechten heeft om bestanden toe te voegen of te verwijderen die zich in de map bevinden.
- Uitvoeren deze rechten worden toegewezen als de gebruiker over de rechten beschikt om toegang te krijgen tot de map in kwestie en binnen deze map functies en opdrachten mag uitvoeren, inclusief de mogelijkheid om de gegevens in de map te verwijderen.
Je kan een gratis plugin zoals iThemes Security gebruiken om de machtigingen binnen je WordPress-site te scannen.
Hier volgen enkele standaardaanbevelingen voor machtigingen van bestanden en mappen in WordPress. Zie het WordPress Codex-artikel over het wijzigen van bestandsrechten voor een meer diepgaande uitleg.
- Alle bestanden moeten 644 of 640 zijn. Uitzondering: wp-config.php moet 440 of 400 zijn om te voorkomen dat andere gebruikers op de server dit bestand lezen.
- Alle mappen moeten 755 of 750 zijn.
- Mappen mogen nooit 777 worden gegeven, zelfs niet de mappen waarnaar wordt geüpload.
16. File-editing uitschakelen in het WordPress-dashboard
Veel WordPress-sites hebben meerdere gebruikers en beheerders, wat de WordPress-beveiliging ingewikkelder kan maken. Een erg slechte gewoonte is om auteurs of medewerkers de rol van beheerder te geven, maar helaas gebeurt dit nog te vaak. Het is belangrijk om gebruikers de juiste rollen en machtigingen te geven zodat ze (onbewust) geen schade kunnen aanrichten. Daarom kan het nuttig zijn om de ‘Appearance Editor’ in WordPress uit te schakelen.
De meesten van jullie kennen deze waarschijnlijk wel – in ieder geval van naam. Stel, je bent bezig in de ‘Appearance Editor’ en ineens krijg je een wit scherm te zien. Het is daarom veel beter om een bestand lokaal te wijzigen en deze via FTP te uploaden. En natuurlijk wil je deze idealiter in een testomgeving testen.
Daarnaast, het eerste wat een hacker zou kunnen proberen, is om PHP of thema-bestanden te wijzigen zodra hij je WordPress-website heeft gehackt – jawel, via Appearance Editor. Dit is een makkelijke manier om schadelijke code op je site uit te voeren. Maar als ze vanuit het dashboard geen toegang hebben tot de Appearance Editor, kan dit wellicht helpen een aanval te voorkomen. Plaats de volgende code in het wp-config.php
-bestand om de ‘edit_themes’, ‘edit_plugins’ en ‘edit_files’ mogelijkheden van alle gebruikers te verwijderen.
define('DISALLOW_FILE_EDIT', true);
17. Hotlinking voorkomen
Het idee achter hotlinking is heel simpel. Je vindt een willekeurige afbeelding ergens op het internet en gebruikt de URL van de afbeelding rechtstreeks op je site. Deze afbeelding wordt vervolgens op jouw website weergegeven, maar wordt geladen vanuit de oorspronkelijke locatie. Dit is in feite diefstal, omdat het de bandbreedte van de gehotlinkte website gebruikt. Dit lijkt misschien onschuldig, maar de extra kosten kunnen zich al snel opstapelen.
Een grappig voorbeeld is het verhaal van The Oatmeal. The Huffington Post hotlinkte een cartoon van een website genaamd The Oatmeal. Het enorme aantal gebruikers dat vervolgens deze afbeeldingen laadde zorgden voor een rekening van meer dan $1000.
Hotlinking voorkomen in Apache
Om hotlinking in Apache te voorkomen, voeg je de volgende code toe aan je .htaccess
-bestand.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://dropbox.com/hotlink-placeholder.jpg [NC,R,L]
De tweede rij definieert de toegestane verwijzer – de site die rechtstreeks naar de afbeelding mag linken. Dit moet jouw website zijn. Als je meerdere sites wilt toestaan, kan je deze dupliceren en de verwijzende URL vervangen. Als je complexere regels wilt genereren, bekijk dan deze htaccess hotlink-beschermingsgenerator.
Hotlinking voorkomen in NGINX
Om hotlinking in NGINX te voorkomen, kan je de volgende code toevoegen aan het configuratiebestand.
location ~ .(gif|png|jpe?g)$ {
valid_referers none blocked ~.google. ~.bing. ~.yahoo yourdomain.com *.yourdomain.com;
if ($invalid_referer) {
return 403;
}
}
Hotlinking voorkomen in een CDN
Om hotlinking in NGINX te voorkomen, kan je de volgende code toevoegen aan het configuratiebestand.
18. Maak altijd back-ups aan
Back-ups: iedereen kent het belang van back-ups, maar niet iedereen maakt er daadwerkelijk gebruik van. De meeste aanbevelingen die we tot dusver gedaan hebben zijn beveiligingsmaatregelen die je kan nemen om jezelf beter te beschermen. Maar hoe veilig je site ook is, hij is nooit 100% veilig. Mocht het allemaal fout gaan, dan wil je letterlijk een back-up-plan achter de hand hebben.
De meeste managed WordPress-hostingproviders bieden tegenwoordig gelukkig back-ups. Kinsta biedt vijf verschillende soorten back-ups aan, waaronder geautomatiseerde back-ups, waardoor je ’s nachts rustig kan slapen, omdat je weet dat je met één muisklik je website kan herstellen.
Als je host geen back-ups aanbiedt, zijn er enkele populaire WordPress-diensten en -plugins die het proces voor je automatiseren.
WordPress back-up-diensten
Diensten die back-ups voor WordPress-sites leveren kennen meestal een laag maandelijks bedrag en slaan daarvoor back-ups op in de cloud.
- VaultPress (van het Automattic team, nu onderdeel van Jetpack)
- CodeGuard
- BlogVault
WordPress backup-plugins
Plugins die back-ups voor je WordPress-site regelen, doen dit vaak via FTP of zijn te integreren met een externe opslagdienst zoals Amazon S3, Google Cloud Storage, Google Drive of Dropbox. We raden ten zeerste aan om met een incrementele oplossing te werken, zodat deze minder bronnen gebruikt.
19. DDoS-beveiliging
DDoS is een type DOS-aanval waarbij meerdere systemen worden gebruikt om een enkel systeem te targeten. Hiermee wordt getracht een Denial of Service-aanval (DoS) op te zetten. DDoS-aanvallen zijn niet nieuw – volgens Britannica dateren de eerste gedocumenteerde gevallen uit het begin van 2000. Echter, in tegenstelling tot iemand die je site hackt, brengen deze aanvallen doorgaans geen schade toe, maar zorgen ze ervoor dat je website voor een aantal uren (tot een aantal dagen) onbereikbaar is.
Hoe kun je jezelf hiertegen beschermen? Een van de beste aanbevelingen is om gebruik te maken van een betrouwbare externe dienst, zoals Cloudflare of Sucuri. Als je een bedrijf hebt, kan je eventueel overwegen om te investeren in een van hun premiumpakketten. Als je door Kinsta wordt gehost hoef je je geen zorgen te maken over het zelf instellen van DDoS bescherming. Al onze pakketten bevatten een gratis Cloudflare integratie met ingebouwde DDoS bescherming.
Hun geavanceerde DDoS-bescherming kan worden gebruikt om DDoS-aanvallen af te wenden van elke mogelijke omvang. Ook bieden ze bescherming tegen aanvallen die gericht zijn op UDP- en ICMP-protocollen, evenals SYN/ACK-, DNS-amplificatie- en Layer 7-aanvallen. Een ander voordeel is, is dat het IP-adres van je website middels een proxy verborgen blijft, ook al is deze bescherming niet helemaal 100%.
Bekijk onze casestudy waarin we beschrijven hoe je een DDoS-aanval kan stoppen. We hadden een klant met een kleine e-commercesite met Easy Digital Downloads, die binnen 7 dagen meer dan 5 miljoen verzoeken ontving op een enkele pagina. De site genereerde dagelijks doorgaans slechts tussen de 30-40MB aan bandbreedte en had een paar honderd bezoekers per dag. Maar uit het niets ging de site onmiddellijk naar tussen 15 en 19GB aan gegevensoverdracht per dag! Dat was een stijging van 4,650%. Bizar genoeg toonde Google Analytics geen extra verkeer. Er was iets goed mis dus.
De klant implementeerde de firewall voor webtoepassingen van Sucuri op zijn site. En je raadt het al, van het ene op het andere moment kelderde het aantal verzoeken en zakte de bandbreedte naar het normale niveau (zie hieronder). Sindsdien heeft de eigenaar geen problemen meer gehad. Mocht je zoiets tegenkomen, dan is het dus zeker een goede investering.
Samenvatting
Zoals je kunt zien zijn er talloze manieren om de beveiliging van je WordPress-website te verbeteren. Het gebruiken van slimme wachtwoorden, de WordPress-core en plugins up-to-date houden en een veilige managed WordPress-host kiezen, zijn slechts enkele aanbevelingen die ervoor zorgen dat je WordPress-site veilig blijft werken. Voor veel van jullie is je WordPress-website zowel je bedrijf als de bron van inkomsten. Het is daarom belangrijk om de tijd te nemen en niet te lang te wachten met het volgen van de beschreven aanbevelingen.
Heb je tips die we hebben gemist wat betreft beveiliging van WordPress? Als dat zo is, laat het ons dan hieronder weten in een reactie.
This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.
Dit is de plugin DIsable XML-RPC die jullie aanbevelen Niet zo handig als je het over beveiliging hebt en je dus een plugin adviseert die niet up-to-date is.
Femke, dank voor je tip, we gaan deze er zo snel mogelijk uit halen.