Ga terug naar het overzicht

 

Hoe krijgt u WordPress veilig(er)? 


 

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. 

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 (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."

 

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 het 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 u uiteraard wel updaten, en blijven updaten zodat u altijd de nieuwste versie heeft draaien. Dit is wellicht de meest belangrijke tip. 

Met alleen het updaten komt u 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 kunnen worden. 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 u er kan doorvoeren hoe beter! 

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


Onderstaand hebben wij meer dan 20 maatregelen voor u uitgewerkt: 

1. 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 DOOS 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 

2. Gebruikers verwijderen die niet actief zijn 

Dit is een relatief makkelijke stap die u 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. 

3. Moeilijke wachtwoorden (lengte) 

8% van de WordPress sites wordt gehackt door een simpel wachtwoord. Zorg er dan ook voor dat uw 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. 

4. Update, update, update 

Bij 61% van de gehackte sites was de oorzaak dat deze niet up-to-date waren. Daarom is één 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! 

5.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. U 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 zorgt u dat de user deze heeft en de rest alleen leesrechten. De wp-config.php moet op 600. 

6. Gebruik plug ins 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. De authenticators gebruiken van bijvoorbeeld Google of Microsoft, beide werken eenvoudig en zijn te installeren via de Google Playstore of Apple Appstore. 

7. 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 uw site up-to-date is door regelmatig te updaten). 
Het verbergen van de WordPress versie kan via de meeste plug ins, ook kan je dit forceren in de functions.php door onderstaande toe te voegen (hiermee wordt het versienummer ook uit RSS feeds verwijderd); 

8. 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. 

9. Gebruik een SSL certificaat 

Een SSL certificaat versleuteld het verkeer van en naar uw 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. 

10. Gebruik een andere username dan 'ad min' 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 u 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). Uw 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. 

11. Voorkom publicatie van de gebruikersnamen (meestal via het theme) 

Wanneer u 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 uw 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=l 

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

12. Gebruik alleen plug-ins 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 plug ins en thema's. En gratis bestaat niet. Een oude Schotse man zei ooit: 
"There is no such thing as a free mea!". 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 plug-ins en thema's in plaats van te zoeken naar dezelfde plugi 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 plug ins waar hackers vaak op inbreken zijn: TimThumb, Revslider, and Gravity Forms. 

13. Verwijder ongebruikte plug ins en thema's 

Gezien bovenstaande: gebruikt u 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. 


14. Gebruik captcha's (in de formulieren) 

U wilt geen SPAM ontvangen, maar u 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 wij u graag naar ons reactieformulier onderop deze pagina. Het is soms vervelend om 'alle verkeersborden te selecteren', maar het houdt wel een hoop SPAM tegen. 

15. 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.

16. 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 u 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 l" een gebruikersnaam te vinden is. Er is namelijk geen "plank 3" meer maar een "sdfd_plank3" ... 

17. Maak geregeld back-ups 

Dit punt vraagt weinig opheldering; iedereen beseft de waarde van een back-up. Echt niemand maakt ze. Aangezien het uw WordPress site is, is het jouw verantwoordelijkheid om daar een back-up van te maken die u kunt 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 plug ins (met alle ellende van dien) en u kunt ze gemakkelijk zelf terug zetten. 

18. 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 u 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 plug in die hierin faciliteert. 

19. 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 heeft u 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 uw data via het netwerk van de hacker en loopt u risico. Bij een internetcafe kan er altijd een stukje soft-of hardware staan op de computer die bijvoorbeeld wachtwoorden kan lezen (een zogenaamde keylogger). 

20. 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. U kunt dit voorkomen door de volgende regel op te nemen in de .htaccess 

21. 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}!

22. Controleerde .htaccess en maak er (meer) gebruik van 

Naast het voorkomen van directory indexing kunt u 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 kunt u de toegang tot wp-login.php op dezelfde manier blokkeren. Voeg aan de .htaccess toe; order allow,deny deny from all, allow access from my IP address allow trom 792.768.5.7 

23. Overweeg automatische WordPress updates

Inderdaad: overweeg. Heeft u een relatief eenvoudige WordPress websites met niet al te veel plug ins en bijzonder thema? Dan is dit waarschijnlijk een goede keuze. 
Heeft u meer plug-ins, 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 komt u er dan achter en hoe snel kan u 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 care updates, including minor and major: detine( 'WP_AUTO_UPDATE_CORE: true ); 

24. Schakel error reporting uit 

In een productieomgeving (een website die live is voor het publiek) wilt u 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);

25. Controleer bekende, eerder gelekte wachtwoorden 

Door meerdere data lekken 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 uw 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.

26. Gehackt, wat nu? 

Ook kan u 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 log bestanden). Om welke gegevens gaat het, wat is er met de gegevens gebeurt, welke kosten brengt het onderzoek met zich mee, enz. Laat u dan ook goed informeren wanneer dit actueel is. Uiteraard kun 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

U kunt altijd contact met ons opnemen!

E: sales@pmnetworking.nl

T: +31 (0) 88 - 6811 611