U opent het e-mailrapport van uw beveiligingsplugin en ziet het: 1.847 geblokkeerde inlogpogingen in de afgelopen week, vanuit tientallen landen waar u nog nooit een klant heeft gehad. Voor veel ondernemers is dat het moment waarop ze zich voor het eerst afvragen wie er eigenlijk aan hun website zit te rammelen, en waarom.

Het antwoord is nuchterder dan het lijkt. Wat u ziet, is een brute-force-aanval op WordPress, en die overkomt vrijwel elke website die op een domein staat. Het is zelden persoonlijk. In dit artikel leggen wij uit wat er precies gebeurt, hoe u het herkent zonder beveiligingsplugin, en welke maatregelen het risico terugbrengen tot iets waar u niet meer wakker van hoeft te liggen.

Wat een brute-force-aanval op WordPress precies is

“Brute force” betekent letterlijk: met grof geweld. Een programma probeert in hoog tempo combinaties van gebruikersnamen en wachtwoorden op uw inlogpagina, in de hoop dat er één werkt. Het programma is niet slim; het is volhardend. Het werkt lijsten af met veelgebruikte wachtwoorden en met wachtwoorden die bij eerdere datalekken zijn buitgemaakt.

Die programma’s draaien meestal op een netwerk van besmette computers en servers, verspreid over de hele wereld. Daarom ziet u pogingen uit Vietnam, Brazilië en Oekraïne, terwijl de persoon die het netwerk bestuurt heel ergens anders zit. De aanvaller heeft uw website niet uitgekozen; het programma werkt gewoon lijsten met domeinnamen af en herkent aan de inlogpagina dat het om WordPress gaat.

Naast de gewone inlogpagina is er nog een tweede ingang die vaak wordt misbruikt: het bestand xmlrpc.php. Dat is een oude koppeling waarmee externe programma’s met WordPress kunnen praten. Via een bepaalde functie kunnen daarmee honderden wachtwoorden in één enkel verzoek worden geprobeerd, wat de aanval veel efficiënter maakt. In een apart artikel leest u waarom XML-RPC uitschakelen voor de meeste sites verstandig is.

Hoe u het herkent

Zonder beveiligingsplugin merkt u een brute-force-aanval meestal niet, en dat is precies het probleem. De aanval is stil. Wat u wél kunt opmerken:

  • Uw website of het beheergedeelte wordt in vlagen traag, zonder duidelijke reden. Duizenden inlogverzoeken per uur kosten serverkracht.
  • Uw hostingpartij stuurt een melding over “verhoogd resourcegebruik” of over een tijdelijke blokkade van uw account.
  • In de toegangslogboeken van de server (meestal te vinden in uw hostingpaneel) ziet u lange reeksen POST-verzoeken naar wp-login.php of xmlrpc.php, vaak enkele per seconde vanaf hetzelfde IP-adres.
  • U ontvangt e-mails over wachtwoordresets die u niet heeft aangevraagd.

Heeft u wel een beveiligingsplugin, dan ziet u de pogingen in het overzicht van geblokkeerde logins. Belangrijk daarbij: kijk vooral welke gebruikersnamen worden geprobeerd. Ziet u “admin”, “administrator” en “test”, dan gokt het programma. Ziet u de echte gebruikersnaam van uw collega, dan is die naam ergens gelekt of te raden via uw website, en verdient dat account extra aandacht.

Waarom de meeste aanvallen mislukken (en sommige niet)

Het geruststellende nieuws: een brute-force-aanval slaagt alleen als het wachtwoord zwak of gelekt is. Een lang, uniek wachtwoord wordt in de praktijk niet geraden. De aanvaller probeert dan dagen of weken en geeft op, of gaat eindeloos door zonder resultaat.

De aanvallen die wél slagen, hebben bijna altijd een van deze oorzaken: een wachtwoord dat ook elders in gebruik was en daar gelekt is, een oud account van een oud-medewerker met een simpel wachtwoord, of een bureau dat bij tientallen klanten hetzelfde wachtwoord gebruikte. Het is dus niet de aanval zelf die het verschil maakt, maar wat er aan uw kant staat.

Wat u zelf kunt doen

  1. Zorg dat elk account een sterk, uniek wachtwoord heeft. Dit is de basis. Zonder dit helpt de rest maar half.
  2. Beperk het aantal inlogpogingen. Een plugin die na een aantal mislukte pogingen het IP-adres tijdelijk blokkeert, haalt de angel uit de aanval. Het programma kan dan geen duizenden wachtwoorden meer proberen, maar hooguit een handvol.
  3. Zet tweestapsverificatie aan. Zelfs als een wachtwoord toch wordt geraden, komt de aanvaller niet verder zonder de code op uw telefoon. Het is de maatregel met het grootste effect voor de minste moeite.
  4. Verwijder de gebruikersnaam “admin”. Die wordt bij vrijwel elke aanval als eerste geprobeerd. Maak een nieuwe beheerder aan met een andere naam en verwijder de oude.
  5. Schakel XML-RPC uit als u geen apps of externe diensten gebruikt die het nodig hebben.

Op serverniveau kan uw hostingpartij nog meer doen: verzoeken naar de inlogpagina afremmen, bekende aanvalsnetwerken weren en de inlogpagina achter een extra wachtwoord zetten. Vraag ernaar; bij goede WordPress-hosting is een deel hiervan al standaard ingericht.

Een voorbeeld: de installateur uit Apeldoorn

Een installatiebedrijf uit Apeldoorn belde omdat hun website “elke ochtend traag” was. De hostingpartij zag niets bijzonders. In de serverlogboeken bleek dat tussen zes en acht uur ‘s ochtends een vast IP-bereik zo’n vijfduizend keer per uur op wp-login.php inlogde, met de gebruikersnaam van de eigenaar. Die naam stond gewoon in de URL van zijn auteurspagina.

De oplossing was overzichtelijk: een limiet op inlogpogingen, tweestapsverificatie voor de twee beheerders en het afschermen van de auteurspagina’s. De aanvallen gingen door, maar werden na drie pogingen geblokkeerd en kostten daarmee nauwelijks nog serverkracht. De ochtendtraagheid verdween. Voor wie de basis liever in één keer goed laat inrichten en controleren, is een abonnement voor websitebeveiliging met firewall en loginbeveiliging een logische stap; WebMaintor richt dit voor klanten in als onderdeel van het onderhoud, maar uw eigen bureau kan het uiteraard ook.

Conclusie

Een brute-force-aanval is geen teken dat u iets fout doet. Het is achtergrondruis op het internet, die elke WordPress-site treft. Wat telt, is of die ruis ergens op stuit. Met sterke wachtwoorden, een limiet op inlogpogingen en tweestapsverificatie voor beheerders is de kans dat zo’n aanval slaagt in de praktijk verwaarloosbaar. Doe die drie dingen deze week, en het getal in uw weekrapport wordt een curiositeit in plaats van een zorg.