Checklist wordpress veiligheid
WordPress bestaat uit php, een database, een besturingssysteem en een hardware/vps omgeving. Daarnaast bestaat elke website uit een URL en vaak ook uit mail functies en api koppelingen. Uiteraard moeten al deze onderdelen veilig zijn en dus niet alleen wordpress zelf
Iedereen die een aanvulling weet is welkom deze door te geven zodat de lijst wellicht completer wordt. De lijst is in volgorde, dus de belangrijkste maatregelen bovenaan. De lijst is gesplitst in maatregelen die je vanuit het CMS (wordpress zelf) kunt regelen, zaken die je meestal zelf kunt maar die via sftp/de files en/of de database lopen en zaken die door de serverbeheerder/hoster geregeld kunnen worden. Achter elke regel staat een ruwe schatting van hoeveel tijd de maatregel in beslag neemt en of er kosten/investeringen bij komen.
Algemene aandachtspunten:
- Bepaal privacy, integriteits en uptime waarden. Hoe hoger de risico’s, zoveel verder zou je door zou moeten met onderstaande puntenlijst (c.a. uur werk voor goede risico analyse in combinatie met contracten en overleg)
- zorg voor veilige, lange wachtwoorden en voorkom gedeelde/generieke accounts zoals admin, root e.d. (c.a. 10 minuten)
Advanced/hoger risico maatregelen:
- Laat de omgeving regelmatig pentesten, zeker als er maatwerk software is
- Zorg voor offline logging van het verkeer van/maar de site (centraal log systeem, investering nodig)
- Beperk het aantal functies op 1 systeem (mail apart van web, enz)
- Beperk het aantal websites op 1 ip
Instellingen/verbeteringen in WordPress zelf voor de security:
- Zorg voor updates van alle onderdelen van wordpress (uur werk per jaar)
- Zo min mogelijk plugins. Neem de tijd om je eens te verdiepen in templates en wat waar staat. Google analytics scripts kun je eenvoudig in een paar minuten via de interface van wordpress in de header plaatsen.
- Beveiliging: hierin zijn twee sporen: de purist plaatst alle beveiligingsmaatregelen in de code en configuratie files van de server. Een andere aanpak is het plaatsen van een security plugin, in elk geval waarmee brute force wordt tegengegaan. Wordfence? (via plugin; 5 minuten, anders meer werk)
- Als je toch iets download zoals een plugin, controleer dan de bron van de download en doe dit op een werkstation met anti virus software (1 minuut per plugin)
- Zet reacties uit of stel zo in dat je eerst moet goedkeuren (1 minuut)
- Verwijder de ‘hello word’ post en default thema’s twenty.. (2 minuten)
- Minimale rechten; maak iemand die teksten schrijft geen beheerder (1 uur met testen en uitleg)
Advanced/hoger risico maatregelen:
- Plaats een catcha op formulieren (15 minuten)
- Pas de ‘salt’ waarden aan voorafgaand aan de installatie (5 minuten)
- Voeg two-factor toe op wordpress login scherm (15 minuten)
- Zet login pagina op ‘geheime’ plek in plaats van /wp-admin (15 minuten)
Zaken die via de files en de database geregeld kunnen worden:
- Offline backups van files en database (uur per jaar inclusief testen restore)
- Zorg voor de juiste ‘read’ rechte op de folders. NB: config file moet niet leesbaar zijn… (10 minuten)
Advanced/hoger risico maategelen:
- Verwijder het wordpress wp-config-sample.php en wp-activate.php (1 minuut)
- Plaats een andere prefix voor de tabellen (wp_ vervangen voor bijvoorbeeld ps_) (1 minuut, maar kan alleen tijdens installatie)
Zaken die via serverbeheer/de hoster gedaan kunnen worden
- Zorg voor updates van het OS van de server… Vaak is dit niet in eigen beheer maar wel even belangrijk als updates van wordpress zelf (tijd hangt van platform af, minimaal paar uur per jaar per server)
- Zet uiteraard een certificaat op de server, en wees je bewust van de verschillende opties (EV?) (1 uur)
- Gebruik alleen secure ftp. Ftp is niet veilig. (15 minuten)
- Zorg voor 100% score op internet.nl (ook goed voor je SEO, kan soms in 15 minuten geregeld zijn, zeker bij moderne hosting partij)
- Zorg voor monitoring (site up?, defacement, server parameters?) (paar uur werk, soms kleine investering nodig)
Advanced/hoger risico maatregelen:
- Zet limieten op mails, hosting bandbreedte, disk space
- Beperk ssh toegang tot eigen IP’s of gebruik beveiliging. Idem voor rdp op windows besturingsystemen
- Disable xmlrpc (zo veel mogelijk)
- Zet php execution op upload folder uit
- Zorg voor de goede tijd op de server en tijdzone
- Zet cgi uit (tenzij dit nodig zou zijn voor de werking van de site)
- Zorg dat de server niet remote pingt
- Blok ‘gevaarlijke’ landen/niet doelgroep landen
- Zorg dat alle poorten en ingangen op de server beveiligd zijn met certificaat
- Breng gelaagdheid aan: de routeer het verkeer eerst door een firewall waar zaken worden afgevangen (investering nodig)
- Ddos bescherming: Is je hoster aangesloten bij NAWAS? Cloudflare?
- Plaats een layer 7 aparte firewall. Kan opensource zijn of betaalde appliance (investering nodig)
- Zorg voor two factor authenticatie op server beheer en control panel
- Disable phpmyadmin voor remote users
- Server baseline: zorg voor een lijst met optimale veiligheidsregels voor de server en implementeer deze.
De lijst is mede tot stand gekomen dankzij de wordpress meetup in Rotterdam met dank aan Level level en Redkiwi en dankzij Pieter van de de wordpress meetup Grun.
Heb je vragen over de lijst? Heb je hulp nodig met veilig maken van wordpress? Wil je een pentest door ons laten doen? We helpen graag.