Aanvallen en brute force

Zo kies en voer je tweestapsverificatie in op WordPress

Tweestapsverificatie in WordPress

Een wachtwoord kan worden geraden, door spyware worden gestolen of na een lek bij een andere site worden hergebruikt. Tweestapsverificatie voegt een tweede bewijs toe dat de aanvaller niet heeft. De WordPress-documentatie wijst erop dat de core dit niet levert: je hebt een plugin of een identiteitsprovider nodig. Zo werken de beschikbare methoden, zo kies je er een, en zo voer je ze in zonder iemand buiten te sluiten.

Waarom dit de meest effectieve maatregel is

De Authentication Cheat Sheet van OWASP noemt meervoudige authenticatie "verreweg de beste verdediging" tegen de meeste aanvallen op wachtwoorden, brute force en credential stuffing inbegrepen. De redenering is eenvoudig: ook als de bot het juiste wachtwoord vindt, mist hij de tweede factor, die elke 30 seconden verandert of je apparaat niet kan verlaten.

Ze beschermt niet tegen alles. Een pluginkwetsbaarheid die de login omzeilt (bijvoorbeeld een privilege-escalatie) wordt niet tegengehouden door tweestapsverificatie. En de implementatie zelf kan fouten bevatten: in november 2024 maakte CVE-2024-10924 het mogelijk de tweestapsverificatie van de plugin Really Simple Security (versies 9.0.0 tot en met 9.1.1.1) te omzeilen en als willekeurige gebruiker in te loggen. Zoals elke plugin moet ook de plugin die je tweestapsverificatie regelt up-to-date worden gehouden.

TOTP, de standaardmethode

De zescijferige code die Google Authenticator, Microsoft Authenticator, 2FAS, Aegis of een wachtwoordmanager toont, is een TOTP (Time-based One-Time Password), gestandaardiseerd in RFC 6238.

Schema: een geheim dat één keer via een QR-code wordt gedeeld; de app en de site berekenen elk dezelfde code op basis van het geheim en de tijd
De TOTP-code wordt aan beide kanten berekend, zonder communicatie op het moment van inloggen.
  • Bij het activeren genereert de site een geheim en toont dat als QR-code. Je scant het één keer.
  • Daarna berekenen de app en de site elk de code op basis van het geheim en de tijd, opgedeeld in stappen van 30 seconden (de standaardwaarde van de RFC).
  • Servers accepteren doorgaans één stap verschil om een klein verschil in klokken op te vangen. Worden de codes steeds geweigerd, controleer dan eerst de tijd op je telefoon.

Voordelen: gratis, werkt zonder netwerk, geen sms of e-mail nodig. Beperking: een phishingsite die je inlogpagina nabootst, kan om de code vragen en die binnen enkele seconden hergebruiken.

Herstelcodes

Een verloren telefoon mag geen verloren site betekenen. Herstelcodes zijn een lijst met codes voor eenmalig gebruik die bij het activeren worden gegenereerd. Bewaar ze buiten je telefoon: in een wachtwoordmanager, een kluis of op papier op een veilige plek. Elke code werkt maar één keer; genereer een nieuwe lijst als ze op raakt.

Passkeys

Passkeys zijn gebaseerd op de standaard WebAuthn van het W3C. In plaats van een gedeeld geheim maakt het apparaat een sleutelpaar aan: de privésleutel blijft op het apparaat (of in de gesynchroniseerde sleutelhanger), de site kent alleen de publieke sleutel. Bij het inloggen ondertekent het apparaat een uitdaging na een lokale ontgrendeling (vingerafdruk, gezicht, pincode).

Hun doorslaggevende voordeel: de sleutel is gekoppeld aan de domeinnaam van de site. Op een nepsite is er simpelweg geen sleutel om te gebruiken, wat ze bestand maakt tegen phishing. De WordPress-documentatie beveelt ze om die reden aan.

Er zijn twee soorten. Gesynchroniseerde passkeys (sleutelhanger van de telefoon of de wachtwoordmanager) staan op al je apparaten en overleven het verlies van een ervan. Apparaatgebonden passkeys (hardwarebeveiligingssleutel) kunnen niet worden gekopieerd. NIST (SP 800-63B-4, augustus 2025) laat synchroniseerbare authenticators toe op niveau AAL2, maar niet op het hoogste niveau, AAL3.

In WordPress lopen passkeys nog via plugins: bijvoorbeeld de plugin Two-Factor, gepubliceerd onder het WordPress.org-account, aangevuld met WebAuthn Provider for Two Factor.

Methoden die je beter vermijdt

Vergelijkingstabel: e-mail, sms, TOTP-app en passkey beoordeeld op bescherming tegen een gestolen wachtwoord, phishing en verlies van de telefoon
Alleen passkeys zijn bestand tegen phishing.
  • Code per e-mail: als de mailbox is gecompromitteerd, of hetzelfde wachtwoord heeft, valt de tweede factor samen met de eerste. NIST sluit e-mail uit als kanaal voor out-of-band-authenticatie.
  • Sms: NIST classificeert sms als een "beperkte" authenticator, vanwege de risico's van onderschepping en kaping van het nummer (SIM-swapping). Beter dan niets, maar te vermijden voor beheerders.
MethodeBestand tegen gestolen wachtwoordBestand tegen phishingKostenVoor wie
Code per e-mailGedeeltelijkNeeGratisKlanten, bij gebrek aan beter
SmsJaNeeAfhankelijk van de dienstTe vermijden voor beheerders
TOTP-appJaNeeGratisAlle accounts van de site
Gesynchroniseerde passkeyJaJaGratisBeheerders die vertrouwd zijn met hun apparaten
HardwarebeveiligingssleutelJaJaAanschaf van een sleutel (neem er twee)De meest gevoelige accounts
De methoden voor een tweede factor vergeleken

Invoeren per rol

Tweestapsverificatie in één keer voor iedereen verplichten leidt tot blokkades en supportvragen. Werk op basis van risiconiveau:

  1. Beheerders: verplicht, zonder uitzondering. Dit is het account dat alles kan, ook code installeren.
  2. Redacteuren en winkelbeheerders: verplicht, na een aangekondigde voorbereidingsperiode.
  3. Auteurs en schrijvers: sterk aanbevolen, verplicht als de site veel externe schrijvers heeft.
  4. Abonnees en klanten: aangeboden, zelden verplicht.

Tijdens de invoering:

  • breng gebruikers op de hoogte, met een korte geïllustreerde handleiding en de lijst met compatibele apps;
  • controleer dat iedereen zijn herstelcodes heeft bewaard;
  • wijs minstens twee beheerders aan die de tweestapsverificatie van een ander kunnen resetten;
  • documenteer de noodprocedure (FTP-toegang of controlepaneel van de hostingprovider, noodconstante als de plugin daarin voorziet).

Vergeet de applicatiewachtwoorden niet

De applicatiewachtwoorden van WordPress (sinds versie 5.6) dienen voor de REST API en XML-RPC. Ze gaan niet via het inlogscherm: afhankelijk van de gebruikte plugin kunnen ze dus aan de tweede factor ontsnappen. Dat is handig voor integraties, maar elk wachtwoord moet gerechtvaardigd zijn: inventariseer ze in de gebruikersprofielen en trek de wachtwoorden in die niet meer worden gebruikt.

Met WP Masquerade

WP Masquerade Pro bevat tweestapsverificatie via een TOTP-app. De QR-code wordt op je eigen site gegenereerd, zonder dat het geheim naar een externe dienst gaat, en het geheim wordt versleuteld opgeslagen. Bij het activeren krijg je tien herstelcodes voor eenmalig gebruik, die gehasht worden opgeslagen. Via het tabblad Bescherming maak je haar verplicht per rol: de betrokken gebruikers worden naar hun profiel gestuurd zolang ze haar niet hebben ingesteld. Na vijf verkeerde codes moet het account wachten tussen twee pogingen, en die mislukte pogingen tellen mee voor het beperken van inlogpogingen. Een beveiligd account accepteert op XML-RPC en de REST API alleen nog applicatiewachtwoorden. Als laatste redmiddel schort de constante CMP_DISABLE_2FA in wp-config.php de tweestapsverificatie voor de hele site op. De plugin ondersteunt geen passkeys: daarvoor blijft een aparte plugin nodig.

Franstalige video (WPMarmite): waarom en hoe je tweestapsverificatie in WordPress gebruikt.
In het Engels: kennismaking met passkeys, inloggen door je apparaat te ontgrendelen.

Tweefactorauthenticatie is maar een van de zeven beschermingslagen uit onze complete methode om WordPress te beveiligen.

Lees ook: Een WordPress-ledenomgeving maken en rollen en gebruikers beheren.

Lees ook: De WordPress-inlogpagina beveiligen: de complete gids.

Om te onthouden

  • De WordPress-core levert geen tweestapsverificatie: je hebt een plugin nodig.
  • TOTP (RFC 6238) is de basismethode: gratis, zonder netwerk, aan te vullen met herstelcodes.
  • Passkeys zijn als enige bestand tegen phishing, dankzij hun koppeling aan de domeinnaam.
  • Vermijd e-mail en sms voor beheerders.
  • Voer haar per rol in, te beginnen bij de beheerders, en inventariseer de applicatiewachtwoorden.

Bronnen

Andere geraadpleegde bronnen: officiële documentatie en officiële pagina's van de leveranciers.

Aanvallen en brute force6 min

Zo herken en stop je een brute-force-aanval op WordPress

Woordenboeken, credential stuffing, netwerken van gehackte machines: wat er echt schuilgaat achter de duizenden inlogpogingen die een WordPress-site ontvangt, en de verdedigingen die ertoe doen.

Aanvallen en brute force8 min

De WordPress-inlogpagina beveiligen: de complete gids

De zeven beschermingen van de WordPress-inlogpagina, op volgorde van prioriteit, met de juiste configuratie per type site en de fouten waarmee je jezelf buitensluit.

WordPress-beveiliging, zonder ruis

Eén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.

Begin gratis, stap over op Pro wanneer je eraan toe bent

De gratis versie verbergt WordPress al en verplaatst de inlogpagina. Pro voegt aliassen, tweestapsverificatie en bewaking toe.