Hoe krijg je WordPress (een beetje) veilig?

WordPress veilig krijgen, of het zo veilig mogelijk krijgen, is meer dan het installeren van een beveiliging plugin. WordPress is een veel gebruikt OpenSource platform (het meest gebruikte CMS systeem), meer dan 60 miljoen downloads onderstrepen dit.

Even wat cijfers:
Er wordt geschat dat er grofweg 500 nieuwe WordPress sites dagelijks bij komen in de “top 10 miljoen websites”. Dat zijn dus bestaande websites die overstappen naar WordPress vanaf een ander platform. Op het moment van schrijven (januari 2019) draait ca. 15% van deze top 10 miljoen websites op WordPress.

 Door deze (redelijk bizarre) aantallen is WordPress een interessant doelwit voor iedere hacker (zowel professioneel als script-kiddy / beginner). Door het OpenSource karakter zijn kwetsbaarheden (ook wel “vulnerabilities”) bekend, en kunnen worden uitgebuit door een ieder die hier enigszins handig in is.

WordPress is het meest gehackte CMS platform. Van de 8.000 website hacks waren er 74% gebouwd met WordPress. *

* gebaseerd op https://blog.sucuri.net/2017/01/hacked-website-report-2016q3.html

En dit merken wij ook bij een aantal klanten van PM Networking die in het bezit zijn van een WordPress site. Daarom noemen wij op deze pagina een aantal beveiligingsmaatregelen waardoor je hopelijk bij de resterende 26% blijft!

WordPress is in ontwikkeling. Bekende fouten worden opgelost en nieuwe functionaliteiten worden toegevoegd. Met name voor het oplossen van de fouten (bugs) wordt WordPress een stabieler, en wellicht ook een ‘veiliger’ platform. Maar dan moet je uiteraard wel updaten, en blijven updaten zodat je altijd de nieuwste versie heb draaien. Dit is wellicht de meest belangrijke tip.

Met alleen het updaten kom je er echter niet. Onderstaand (in willekeurige volgorde) staat een samenvatting van de maatregelen die wij adviseren aan WordPress gebruikers. Sommige onderdelen kunnen worden verricht door de Webhosting partij (zoals PM Networking), maar andere zaken dienen door uzelf gedaan te worden. Er zijn genoeg voorbeelden van WordPress sites die volledig up-to-date waren, en toch zijn gehackt. Met onderstaande maatregelen had dat misschien voorkomen geworden. De volgorde is willekeurig doordat feitelijk alle maatregelen noodzakelijk zijn. Het niet doorvoeren van een maatregel laat een mogelijkheid open tot hacken, maar hoe meer je er kan doorvoeren hoe beter!

Belangrijke kanttekening: wij pretenderen niet dat je niet gehackt kan worden met onderstaande maatregelen. Het blijft tenslotte WordPress. Wel maak je het met dergelijke maatregelen de hacker erg moeilijk waardoor ze (hopelijk) een ander doelwit kiezen.

Onderstaand hebben we meer dan 20 maatregelen uitgewerkt;

 

# Blokkeer Xmlrpc

De XML-RPC is feitelijk een verouderde “WordPress API”. Een Application Programmable Interface, met andere woorden: een programmeeringang. Zonder de website is het mogelijk om, geautomatiseerd (robots/scripts) opdrachten te geven aan de WordPress site. Er zijn verhalen dat deze XMLRPC vervangen gaat worden door een nieuwe API. Zolang je niet weet wat dit onderdeel doet, en je hier (waarschijnlijk) dus geen gebruik van maakt: zet het dicht. De XMLRPC kan honderden inlogpogingen per seconde proberen op je WordPress site, en dat kan de nodige gevolgen hebben.
Naast inloggen, kan je systeem ook worden overbelast met Spam berichten, onderdeel uitmaken van DDOS aanvallen en andere onprettige zaken.
De nodige security plugins maken de XMLRPC vaak onbereikbaar, onze voorkeur is om deze (ook) via bestandstoegang te blokkeren in de .htaccess

# Block WordPress xmlrpc.php requests
order deny,allow
deny from all
# END protect xmlrpc.php

 

 

# Gebruikers verwijderen die niet actief zijn

Dit is een relatief makkelijke stap die je als volgt kan uitvoeren: kijk welke gebruikers er in WordPress actief zijn, en verwijder de gebruikers die niet in het systeem hoeven te komen. Hoe minder gebruikers, des te beter.

# Moeilijke wachtwoorden (lengte)

8% van de WordPress sites wordt gehackt door een simpel wachtwoord. Zorg er dan ook voor dat je wachtwoord de nodige complexiteit heeft (met “bijzondere” karakters, hoofdletters, cijfers). Met name de lengte van het wachtwoord is belangrijk. Hoe langer, des te beter. Wellicht een leuke tip: gebruik in plaats van een wachtwoord een “wachtzin”, inclusief spaties, hoofdletters en puntgebruik.

# Update, update, update

Bij 61% van de gehackte sites was de oorzaak dat deze niet up-to-date waren. Daarom is 1 van de belangrijkste tips dan ook: update, update, update. Zorg er dan ook voor dat je kan updaten, dat houdt in: pas geen bestanden aan van het WordPress platform. Maak uitsluitend aanpassingen in de daarvoor bedoelde secties zodat er altijd geupdate kan worden. Bij twijfel: raadpleeg een expert. Uiteraard staan wij je graag te woord!

# Controleer de bestandsrechten (niet te veel rechten op de mappen)

Volg de richtlijnen die gesteld zijn, en geef niet te veel rechten op bestanden en mappen. Vermijd de bekende ‘777’ rechten op de directory’s. Dit betekent namelijk dat ‘iedereen’ bestanden kan aanmaken en verwijderen en de inhoud van een map kan bekijken en uitlezen. Je zou moeten opteren om 755 of 750 te gebruiken (volgens WordPress.org). Hiermee kan ‘iedereen’ nog steeds de inhoud van een map bekijken en bestanden uitlezen maar alleen de gewenste user kan bestanden aanmaken en verwijderen.

Bestanden moeten op 640 of 644, dit heeft met de schrijf- en leesrechten te maken, hiermee zorg je dat de user deze heeft en de rest alleen leesrechten. De wp-config.php moet op 600.

 

# Gebruik plugins voor 2-weg authenticatie

Indien een wachtwoord gelekt of geraden is, geeft de 2-weg (two form authentication) authenticatie een stok achter de deur. Zonder de code in jouw “Authenticator” kan je alsnog niet inloggen. Je kan de authenticators gebruiken van bijvoorbeeld Google of Microsoft, beide werken naar behoren en zijn eenvoudig te installeren via de Google Playstore of Apple Appstore.

# Verberg versienummers

Het blootstellen van het versienummer maakt het makkelijker voor een hacker om de kwetsbaarheden te vinden die van toepassing zijn op jouw website. Verberg deze dus (en zorg dat je up-to-date blijft door te updaten).
Het verbergen van de WordPress versie kan via de meeste plugins, ook kan je dit forceren in de functions.php door onderstaande toe te voegen (hiermee wordt het versienummer ook uit RSS feeds verwijderd);

function wpbeginner_remove_version() {
return ”;
}
add_filter(‘the_generator’, ‘wpbeginner_remove_version’);

 

 

# Gebruik een ander path voor de /wp-admin

Veel geautomatiseerde inlogpogingen proberen in te loggen op /wp-admin en/of /wp-admin.php
Hernoem deze map “/wp-admin” naar iets willekeurigs met cijfers, zoals bijvoorbeeld “/sdf3easd” , en veel van de geautomatiseerde inlogpogingen zullen niet meer werken.

Tip: Er zijn meerdere plugins die dit voor je kunnen faciliteren.

# Gebruik een SSL certificaat

Een SSL certificaat versleuteld het verkeer van en naar je website. Versleuteld verkeer is lastig af te luisteren waardoor dit een heel stuk veiliger is dan ‘platte tekst’. Zorg dan ook voor een https:// in plaats van een http://
Welk SSL certificaat je het beste kan gebruiken voor jouw WordPress site, hangt af van het doel (en doelgroep), de omvang en het soort informatie op de website.

Neem contact met ons op om je hierin te laten adviseren!

 

# Gebruik een andere username dan ‘admin’ of iets anders ‘complex’.

Admin is wel heel erg voor de hand liggend! Toch? Maak het ze niet te makkelijk en hernoem de inlognaam naar iets anders. Het e-mail adres wat je gebruikt kan wat dubieus zijn. Doel is om de inlognaam niet gemakkelijk te maken, of beter gezegd: zorg ervoor dat deze niet bekend is (zie punt hieronder). Jouw e-mail adres kan (zal) wel bekend zijn, dus dit is wellicht niet de beste keuze.
Veel geautomatiseerde inlogpogingen loggin in met “admin” en een willekeurig wachtwoord.

# Voorkom publicatie van de gebruikersnamen (meestal via het theme)

Wanneer je de gebruikersnaam kent, ben je (als er geen verdere maatregelen zijn genomen zoals de besproken 2-weg authenticatie of andere beveiligingen) reeds op 50% van het inloggen. Alleen nog een wachtwoord zou dan volstaan. Zorg ervoor dat je gebruikersnaam niet bekend raakt. Controleer de instellingen bij de gebruikers, WordPress vindt het leuk om een profiel van de gebruikers te publiceren. Iedere auteur heeft dan een pagina, en zijn als volgt opvraagbaar: uwwebsite.nl/?author=1

Stuur dergelijke verzoeken naar de homepage (voeg toe aan functions.php)

add_action(‘template_redirect’, ‘bwp_template_redirect’);
function bwp_template_redirect() {
     if (is_author()) {
          wp_redirect( home_url() ); exit;
     }
}

 

 

# Gebruik alleen plugins en thema’s van een ‘vertrouwde uitgever’.

Beoordeel zelf wie dat is!
52% van de kwetsbaarheden en bij WPScan worden veroorzaakt door plugins, 11% van de kwetsbaarheden wordt veroorzaakt door Thema’s.

Kijk dus goed naar de plugins en thema’s. En gratis bestaat niet. Een oude Schotse man zei ooit: “There is no such thing as a free meal”. Uiteraard zijn er uitzonderingen (die de regel bevestigen), van echte liefhebbers die iets terug willen doen voor de WordPress community. Maar er zijn ook mensen met verkeerde intenties die gratis plugins beschikbaar stellen. Wees daar alert op.

Ons advies; betaal voor plugins en thema’s in plaats van te zoeken naar dezelfde plugin (of vergelijkbare functionaliteit) waar hij gratis wordt aangeboden. Kies voor thema’s en plugins die goed aangeschreven zijn, goed onderhouden zijn (wanneer was de laatste update gepubliceerd?) en toch wel redelijk wat gebruikers heeft.

De top 3 plugins waar hackers vaak op inbreken zijn: TimThumb, Revslider, and Gravity Forms.

# Verwijder ongebruikte plugins en thema’s

Gezien bovenstaande: gebruik je een plugin of thema niet? Verwijder hem dan. Dit komt ten goede van zowel de beveiliging als vaak ook de snelheid van de WordPress site.

# Gebruik captcha’s (in de formulieren)

Je wilt geen SPAM ontvangen, maar je wilt ook geen oorzaak zijn van SPAM bij anderen. Zorg ervoor dat de (invul) formulieren voorzien zijn van de nodige captcha’s. Google levert een Captcha die veelal gebruikt en geaccepteerd wordt.

Als voorbeeld verwijzen we je graag naar ons reactieformulier onderop deze pagina. Het is soms vervelend om ‘alle verkeersborden te selecteren’, maar het houdt wel een hoop SPAM tegen.

 

# Controleer (scan) de bestandsstructuur op malifide bestanden

Dit proces is vaak onderdeel van beveiligingsplugins. Laat deze scans dan ook bij voorkeur geautomatiseerd doen. Ook kan er handmatig een controle gedaan worden op bestanden.

# Pas de database aan (voeg een prefix toe aan tabellen)

Zonder al te diep in te gaan op de techniek; de onderliggende database van WordPress heeft altijd dezelfde structuur. Zie het als de indeling in een boekenkast. Wanneer je bij de boekenkast kan, hoe omslachtig ook, is het veelal duidelijk waar de nodige informatie zich bevindt.

Hernoem de tabellen door er prefixen aan toe te voegen en de boekenkast krijgt als het ware een andere indeling waardoor je niet meer blindelings weet dat op “plank 3” – “doos 1” een gebruikersnaam te vinden is. Er is namelijk geen “plank 3” meer maar een “sdfd_plank3” …

 

# Maak geregeld back-ups

Dit punt vraagt weinig opheldering; iedereen beseft de waarde van een back-up. Echter; vrijwel niemand maakt ze.

Aangezien het jouw WordPress site is, is het jouw verantwoordelijkheid om daar een back-up van te maken die je kan inzetten om (bijvoorbeeld) de site weer snel operationeel te hebben na een hack. Om een goede back-up te maken zijn er meerdere plugins beschikbaar van WordPress.

Ook raden we aan de control panels van je provider te bekijken voor de mogelijkheden tot het maken van een back-up. Via het control panel van PM Networking is het gemakkelijk om een back-up te maken van de gehele omgeving. Dat bespaart weer plugins (met alle ellende van dien) en je kan ze gemakkelijk zelf terug zetten.

# Controleer een audit log ‘geregeld’

Hoe weet je wanneer je gehackt bent?
Veelal omdat het te laat is; de site is spam aan het versturen, de provider heeft je dichtgezet of er wordt content op de site getoond die er niet hoort. Geen fijne ontwikkeling dus. Hoe is deze hacker binnen gekomen? Wat heeft de hacker zoal gedaan om binnen te komen, en wat heeft hij binnen gedaan?

Dergelijke informatie is terug te zien in een Audit log.
WP Security Audit Log plugin is een bekende plugin die hierin faciliteert.

 

# Verbind met de juiste protocollen en vanaf veilige verbindingen

Het gebruik van een SSL certificaat (https) is reeds genoemd. Als het goed is, wordt dit alleen voor de bezoekers gebruikt. Als beheerder heb je meer mogelijkheden om de bestanden te plaatsen en de site te onderhouden.
Gebruik geen openbare wifi punten en internet cafè computers (los van WordPress, dit is beveiliging technisch een slecht idee).

Ook gebruik van de semi-openbare wifi (zoals bijvoorbeeld ook van bekende wegrestaurants) wordt afgeraden. Met de huidige (4G) technieken is het opzetten van een “hotspot” via de mobiele telefoon veiliger.
Gebruik SSH, FTPS, SFTP of andere protocollen die ‘secure’ zijn zodat de verbinding encrypted is. Dus niet: “FTP”.

De reden dat dergelijke verbindingen worden afgeraden, is dat deze doorgaans gemakkelijk af te luisteren zijn door hackers. Een hacker kan ook een openbaar WiFi-netwerk aanmaken met een betrouwbare naam, hierdoor gaat al je data via het netwerk van de hacker en loop je risico. Bij een internetcafe kan er altijd een stukje soft-of hardware staan op de computer die bijvoorbeeld jouw wachtwoorden kan lezen (een zogenaamde keylogger). Wees hier dus voorzichtig mee. Bekijk ook (voor de geïnteresseerden onder ons) deze film, waarin “Hackman” Lieke van Lexmond hackt.

 

# Voorkom directory listing

Directory listing geeft een weergave van bestanden en mappen zoals ze aanwezig zijn op de server. Deze bestanden en mappen worden bijvoorbeeld getoond wanneer er geen “index.html of index.php” bestand staat. Wanneer dat het geval is, liggen alle bestanden letterlijk op straat. Je kan dit voorkomen door de volgende regel op te nemen in de .htaccess

Options All -Indexes

 

# Vergeet de eigen pc of laptop niet!

Veelal komen hacks voor doordat een gebruikersnaam of wachtwoord is gelekt. De oorzaak hiervan is vaak te zoeken in een Virus, Malware of andere ongewenste ‘troep’ op de computer. Gebruik dus altijd een goede virusscanner en zorg ook dat de updates (voor zowel Apple als Windows) up-to-date zijn en gebruik geen tooltjes om software te activeren of wachtwoorden te genereren. Deze hebben vaak een ‘achterdeurtje’ of installeren meer dan wat er wellicht wordt verwacht

Tip:
Informeer naar onze managed oplossingen (voor zakelijke gebruikers)!

 

 

# Controleer de .htaccess en maak er (meer) gebruik van

Naast het voorkomen van directory indexing kan je ook voorkomen dat bepaalde bestanden worden ‘geserveerd’ aan de bezoekers. Onderstaande kan dan ook een handig voorbeeld zijn (naast de XMLRPC, zie boven),

Voeg onderstaande toe aan de .htaccess

order allow,deny
deny from all

Ook kan je de toegang tot wp-login.php op dezelfde manierblokkeren.
Voeg aan de .htaccess toe;

order allow,deny
deny from all
# allow access from my IP address
allow from 192.168.5.1

 

 

# Overweeg automatische WordPress updates.

Inderdaad: overweeg. Heb je een relatief eenvoudige WordPress websites met niet al te veel plugins en bijzonder thema? Dan is dit waarschijnlijk een goede keuze.
Heb je meer plugins, een uitgebreid thema met wellicht een webshop (WooCommerce) of maatwerk toegepast in het thema? Dan moeten de risico’s worden afgewogen.
Iedere update heeft een kans op stuk gaan van thema’s, plugin’s en comptabiliteiten met de vereiste of gebruikte PHP versies). Als de site automatisch wordt bijgewerkt, en hij gaat stuk: wanneer kom je er dan achter en hoe snel kan je de site weer herstellen? (wederom de back-up is hierin meer dan aan te raden!)

Indien automatisch updaten is gewenst;
Plaats de volgende code in de wp-config.php

# Enable all core updates, including minor and major:
define( ‘WP_AUTO_UPDATE_CORE’, true );

 

 

# Schakel error reporting uit

In een productieomgeving (een website die live is voor het publiek) wil je geen foutmeldingen tonen. Naast het feit dat het niet netjes oogt, kunnen foutmeldingen ook cruciale informatie prijsgeven van het platform, waaronder zelfs gebruikersnamen en wachtwoorden van de database. Zorg er dan ook voor dat de “error reporting” uit staat (pas de wp-config.php aan met de volgende code):

error_reporting(0);
@ini_set(‘display_errors’, 0);

 

 

# Controleer bekende, eerder gelekte wachtwoorden

Door meerdere datalekken is er een (groot) archief op het internet ontstaan met oude wachtwoorden en bijpassende mail e-adressen. Deze archieven zijn openbaar toegankelijk (bijvoorbeeld https://haveibeenpwned.com) en het is dus zeer raadzaam om dergelijke lijsten te controleren op aanwezigheid van jouw e-mail adres.
Hierbij dan ook wat tips over de wachtwoorden;

  • Wijzig wachtwoorden met enige regelmaat
  • Hergebruik wachtwoorden niet
  • Pas verschillende wachtwoorden toe voor diverse sites en applicaties
  • Deel wachtwoorden niet (met derden)
  • Zorg voor voldoende complexiteit (denk aan wachtwoord lengte, hoofdletter gebruik, spaties, bijzondere leestekens).
  • Een wachtwoord zin (met spaties!) is vaak ook een goed wachtwoord met Hoofdletter, komma en punt aan het einde.

 

# Gehackt, wat nu?

Ook kan je provider, zonder een dergelijke log, assisteren om te onderzoeken wat er heeft plaatsgevonden. Let wel op, dit is een arbeidsintensieve klus en afhankelijk van de aard, de gevolgen en de benodigde tijd is het raadzaam om hier vooraf duidelijke afspraken over te maken (ook gezien de AVG wetgeving en de bewaartermijnen van logbestanden). Om welke gegevens gaat het, wat is er met de gegevens gebeurt, welke kosten brengt het onderzoek met zich mee, enz. Laat je dan ook goed informeren wanneer dit actueel is.

Uiteraard kan je altijd contact met ons opnemen om te horen wat wij voor jou kunnen betekenen. Wij zijn tenslotte een “full service ICT dienstverlener”.
Zowel bij vragen over;

  • Hosten van websites en applicaties
  • Ondersteuning bij het onderzoeken van problemen en hacks
  • Het beheren van uw bedrijfsnetwerk

kan je altijd contact met ons opnemen!

Heb je vragen, opmerkingen of toevoegingen op deze tips?
Wij horen graag van je. Waar mogelijk zullen wij de tips dan aanpassen en/of bijvoegen.