Je winkelwagen is leeg
Producten die je toevoegt, verschijnen hier.
94% van alle inlogpogingen komt van bots. Leer hoe je website beschermt tegen brute-force, credential stuffing en PhaaS met 6 bewezen beveiligingslagen.
Samenvatting: website inlogbeveiliging
94% van alle inlogpogingen op het web zijn afkomstig van bots, niet van echte bezoekers. Aanvallers breken niet langer in: ze loggen in met gestolen wachtwoorden uit eerdere datalekken. Dit artikel beschrijft 6 bewezen beveiligingslagen, van edge-niveau rate limiting tot phishing-resistente passkeys, waarmee je inlogpagina effectief beschermd is ook als één laag faalt.
Wanneer iemand jouw website probeert binnen te komen, is de kans groot dat het geen mens is. Cloudflare analyseerde in zijn Threat Report 2026 honderden miljarden verbindingen en ontdekte dat 94% van alle inlogpogingen afkomstig is van geautomatiseerde bots.[1] Van de resterende menselijke pogingen maakt 46% gebruik van inloggegevens die al eerder waren gestolen bij een datalek elders.
De aanvallers raden geen wachtwoorden. Ze hoeven dat niet. Er circuleren momenteel 24 miljard gestolen username-wachtwoordcombinaties in underground databases.[4] Die worden automatisch uitgetest op jouw inlogpagina, duizenden tegelijk, elk uur van de dag.
Dit artikel geeft je een gelaagd verdedigingsmodel voor je inlogpagina: van Cloudflare rate limiting tot phishing
KeurigOnline zegtPhishing
KeurigOnline zegtWordPress

Aanvallers richten zich niet meer op softwarefouten of serverexploits. Ze richten zich op inloggegevens: jouw gebruikersnaam en wachtwoord. Drie aanvalstypen domineren het dreigingslandschap.
Bij een brute force-aanval
KeurigOnline zegtBrute force-aanval
Credential stuffing is slimmer en gevaarlijker. De aanvaller gebruikt geen willekeurige wachtwoorden, maar username-wachtwoordcombinaties die al zijn gelekt bij een datalek bij een andere dienst. Denk aan het lek bij een webshop, een forum of een andere hostingprovider. Die gestolen combinaties worden automatisch uitgetest op jouw inlogpagina.
Het werkt omdat mensen wachtwoorden hergebruiken. Uit Cloudflare-data blijkt dat 63% van alle geslaagde logins op beschermde sites gebruikmaakt van eerder gecompromitteerde inloggegevens.[1] En er is geen gebrek aan materiaal: 24 miljard gestolen credential-paren circuleren momenteel in underground databases, goed voor circa drie complete inlogcombinaties per aardbewoner.[4]
Password spraying omzeilt lockout-systemen die accounts blokkeren na te veel foutieve pogingen. In plaats van veel pogingen op één account te doen, probeert de aanvaller één veelgebruikt wachtwoord uit op duizenden accounts tegelijk. Eén poging per account per dag valt zelden op in logs en triggert geen automatische blokkade.
Gestolen inloggegevens waren in 2025 de meest gebruikte initiële aanvalsvector en verantwoordelijk voor 22% van alle bevestigde datalekken.[2] De gemiddelde kosten van een datalek via gecompromitteerde inloggegevens bedragen 4,67 miljoen dollar, met een gemiddelde ontdektijd van 246 dagen.[5]
Voor mkb-bedrijven is het beeld niet beter: kleine ondernemingen worden gemiddeld elke 11 seconden getroffen door geautomatiseerde aanvallen, en 12% van alle authenticatiepogingen bij mkb-bedrijven is credential stuffing.[4]
Één beveiligingsmaatregel is niet genoeg. CrowdStrike toonde in zijn Global Threat Report 2026 aan dat 82% van alle detecties volledig malware-vrij was: aanvallers logden gewoon in met geldige inloggegevens.[3] Een firewall
KeurigOnline zegtFirewall
6 lagen voor je inlogpagina
De volgende secties werken elke laag concreet uit, met configuratievoorbeelden en aanbevolen tools. Begin bij laag 1: die biedt de meeste bescherming voor de minste moeite.
Met een gratis Cloudflare-account stel je een rate limit rule in via Security > WAF > Rate limiting rules. Gebruik de volgende configuratie:
Veld: URI Path bevat /wp-login.php
OF URI Path bevat /xmlrpc.php
Methode: POST
Actie: Challenge (Turnstile) na 5 pogingen per 60 seconden per IP
Block bij herhaalde overschrijding (duur: 1-24 uur)
Stel de drempel in op maximaal 5 POST-verzoeken per IP per 60 seconden. De "Challenge"-actie toont Cloudflare Turnstile bij de eerste overschrijding. Turnstile is de gratis, privacyvriendelijke CAPTCHA
KeurigOnline zegtCaptcha
Tip: maak twee aparte rate limit rules, één voor /wp-login.php en één voor /xmlrpc.php. Zo stel je de drempel per pad apart in en zie je in de Analytics-tab welk pad het zwaarst aangevallen wordt.
Gebruik je geen Cloudflare, dan configureer je rate limiting op serverniveau. In Nginx
KeurigOnline zegtNginx
limit_req_zone $binary_remote_addr zone=loginzone:10m rate=5r/m;
location = /wp-login.php {
limit_req zone=loginzone burst=3 nodelay;
fastcgi_pass unix:/run/php/php-fpm.sock;
include fastcgi_params;
}
In Apache
KeurigOnline zegtApachemod_evasive of mod_security voor vergelijkbare beperkingen. Meer kant-en-klare serverconfiguratieblokken vind je in ons overzicht van .htaccess-snippets voor jouw website.
Naast rate limiting activeer je IP-reputatielijsten in Cloudflare via Security > Settings > Security Level: stel dit in op "High". Dit blokkeert IP-adressen die Cloudflare al kent als bron van aanvallen, nog vóór jouw rate limit rule wordt bereikt. Als jouw website uitsluitend Nederlandse bezoekers verwacht, overweeg dan geoblocking voor regio's van waaruit je nooit legitiem verkeer ontvangt. Dat vermindert het aanvalsoppervlak aanzienlijk zonder de gebruikerservaring voor echte bezoekers te raken.
Multifactorauthenticatie voegt een verificatiestap toe naast het wachtwoord. Zelfs als een aanvaller je wachtwoord heeft via credential stuffing, kan hij niet inloggen zonder de tweede factor. Microsoft berekende dat MFA 99,9% van geautomatiseerde accountcompromitteringen blokkeert.[8] Niet alle MFA-vormen zijn even sterk. Er zijn drie niveaus, in oplopende veiligheid.
Je ontvangt een eenmalige code via sms of e-mail. Dit is beter dan geen MFA, maar heeft zwakheden. Bij SIM-swapping neemt een aanvaller je telefoonnummer over en ontvangt zo je sms-codes. Bovendien onderscheppen moderne PhaaS-platformen deze codes in realtime via Adversary-in-the-Middle-aanvallen. Meer hierover in het volgende hoofdstuk.
Apps als Google Authenticator of Authy genereren elke 30 seconden een nieuwe 6-cijferige code op basis van een gedeeld geheim. Dit is sterk, maar niet onkwetsbaar. Bij 80% van de MFA-bypass-aanvallen steelt de aanvaller de sessiecookie ná de succesvolle MFA-verificatie, waardoor de aanvaller is ingelogd terwijl jij denkt dat alles in orde is.[5]
FIDO2-sleutels en passkeys zijn phishing-resistant. De cryptografische sleutel is gebonden aan de exacte domeinnaam
KeurigOnline zegtDomeinnaam
MFA instellen in WordPress
WordPress is het doelwit bij uitstek, simpelweg omdat het op meer dan 40% van alle websites draait. Aanvallers weten exact waar de inlogpagina staat: /wp-login.php. En ze weten dat /xmlrpc.php een tweede ingang biedt die nogal eens vergeten wordt. Hieronder een concreet stappenplan, van snelste impact naar diepgaandere bescherming.
Stel de Cloudflare-rules in voor /wp-login.php én /xmlrpc.php zoals beschreven in de vorige sectie. Dit is de eerste en meest impactvolle stap: blokkeer het botverkeer voordat het je server raakt.
Als je geen legacy integraties hebt die XML
KeurigOnline zegtXML
# Blokkeer xmlrpc.php volledig
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
Voeg dit toe aan het .htaccess-bestand in de WordPress-root. Meer handige .htaccess-snippets voor jouw website vind je in ons overzichtsartikel, inclusief aanvullende beveiligingsconfiguratieblokken.
Installeer de plugin Limit Login Attempts Reloaded als backstop op applicatieniveau. Aanbevolen instellingen: lockout na 5 mislukte pogingen, blokkade van het IP-adres voor 24 uur, en een e-mailmelding aan de admin bij elke lockout. Dit is de laatste vanglijn als de Cloudflare-rate-limit onverhoopt omzeild wordt.
Voeg een extra authenticatielaag toe vóór de WordPress-loginpagina. Via .htaccess en een .htpasswd-bestand eis je een gebruikersnaam en wachtwoord, nog voordat WordPress laadt:
# Bescherm wp-login.php met HTTP Basic Auth
<Files wp-login.php>
AuthType Basic
AuthName "Beheerderstoegang"
AuthUserFile /pad/naar/.htpasswd
Require valid-user
</Files>
Genereer het .htpasswd-bestand via de commandoregel met htpasswd -c /pad/naar/.htpasswd gebruikersnaam. Bewaar het bestand buiten de webroot zodat het niet direct opvraagbaar is.
Met de plugin WPS Hide Login verander je de URL van /wp-login.php naar een zelfgekozen pad. Dit is geen vervanging voor de maatregelen hierboven, maar het filtert geautomatiseerde scanners die standaard /wp-login.php zoeken en niets anders proberen. Verwacht een directe daling van het aanvalsverkeer op de inlogpagina na activatie.
Let op:

Je hebt MFA ingeschakeld, je inlogpagina is beschermd met rate limiting, je wachtwoord is sterk en uniek. Dan toch krijgt een aanvaller toegang. Hoe?
Via Phishing-as-a-Service (PhaaS): kant-en-klare phishing-toolkits die criminelen als maandabonnement kopen voor 200 tot 350 euro. Ze bevatten AI-gegenereerde nep-e-mails, realtime dashboards en technologie die MFA-codes in real-time onderschept. De drempel om een aanval te lanceren is vrijwel nul: geen technische kennis vereist.
Bij een Adversary-in-the-Middle (AiTM)-aanval plaatst het PhaaS-platform een onzichtbare reverse proxy
KeurigOnline zegtReverse proxy
Barracuda Networks detecteerde in januari en februari 2025 meer dan 1 miljoen PhaaS-aanvallen. Het platform Tycoon 2FA
KeurigOnline zegt2FA
FIDO2 en passkeys zijn de enige MFA-methode die AiTM structureel tegenhoudt. De cryptografische sleutel is gebonden aan de exacte domeinnaam. Een phishing-proxy die op een ander domein draait, krijgt nooit een geldige sleutelrespons terug. Passkeys zijn phishing-resistant by design.
DMARC
KeurigOnline zegtDMARC
KeurigOnline zegtDKIM
KeurigOnline zegtDNS
Conditional Access blokkeert inlogpogingen vanaf onbekende apparaten of ongebruikelijke locaties. Als een sessie plots verschijnt vanuit een ander land of op een nieuw apparaat, wordt die geblokkeerd of vereist een extra verificatiestap. Dit is beschikbaar via Azure AD, Google Workspace of andere identiteitsplatformen.
PhaaS-tegenmaatregelen op een rij
Een aanval die je vroeg detecteert, kun je stoppen. Een aanval die pas na 246 dagen wordt ontdekt, kost gemiddeld 4,67 miljoen dollar.[5] Goede monitoring is daarmee niet alleen technisch zinvol, maar financieel de moeite meer dan waard.
Kijk in je access logs op de volgende patronen:
/wp-login.php, /xmlrpc.php, /login of andere authenticatie-endpoints. Een plotselinge stijging van 50 naar 5.000 POST-verzoeken per uur is een duidelijk signaal.python-requests of curl bij inlogpogingen, zijn betrouwbare aanvalssignalen.Cloudflare Security Events is de snelste optie als je al Cloudflare gebruikt. Via Security > Events zie je realtime een overzicht van geblokkeerde verzoeken, rate-limited IP-adressen en CAPTCHA-uitdagingen. Filter op endpoint om te zien welke aanvalspaden het zwaarst worden belast.
GoAccess is een open-source commandoregeltool voor real-time analyse van access logs. Draai het rechtstreeks op je server:
goaccess /var/log/apache2/access.log -c --log-format=COMBINED
Je krijgt direct een dashboard met topverzoeken, foutcodes en geografische verdeling van verkeer. GoAccess werkt ook met Nginx
KeurigOnline zegtNginx
Wordfence Live Traffic toont in WordPress-dashboard inlogpogingen, geblokkeerde IP-adressen en aanvalsbronnen per minuut, zonder dat je in serverlogbestanden hoeft te zoeken.
Configureer een e-mailwaarschuwing wanneer het aantal mislukte logins een drempel overschrijdt, bijvoorbeeld meer dan 50 mislukte pogingen per uur. In Wordfence stel je dit in via Wordfence > Alerts. In Cloudflare maak je Notifications aan op basis van security-events via Account > Notifications.
Schrijf logingebeurtenissen ook naar een externe logfile of een eenvoudig SIEM. Als je ooit een incident moet reconstrueren, is een aantoonbare audit trail onmisbaar. Zorg er tegelijk voor dat je een SSL-certificaat correct hebt ingesteld: zonder HTTPS gaan inloggegevens onversleuteld over het netwerk en zijn ze onderschepbaar voordat ze je server bereiken.
Gebruik onderstaande lijst als werkplan. Elke stap bevat een tijdindicatie: direct uitvoerbaar binnen een uur, te plannen voor deze week, of evalueerbaar dit kwartaal.
Inlogbeveiliging in 10 stappen
/wp-login.php en /xmlrpc.php: maximaal 5 POST-verzoeken per IP per minuut, Challenge bij eerste overschrijding, Block bij herhaling. (Direct)Met de eerste vijf stappen sluit je de grootste aanvalsvectoren al in de loop van één werkdag. De overige vijf verlagen het restrisico en bereiden je voor op geavanceerdere dreigingen zoals PhaaS.
Bij een brute force-aanval
KeurigOnline zegtBrute force-aanval
Nee. Een sterk wachtwoord dat je hergebruikt op meerdere sites is nutteloos zodra één van die sites een datalek heeft. De gestolen combinatie wordt dan automatisch uitgetest op alle andere sites. Unieke wachtwoorden per dienst, beheerd via een wachtwoordmanager
KeurigOnline zegtWachtwoordmanager
MFA blokkeert 99,9% van geautomatiseerde accountcompromitteringen. Maar moderne PhaaS-platformen met Adversary-in-the-Middle-technologie omzeilen SMS-codes en TOTP-codes door de sessiecookie in realtime te onderscheppen, nog terwijl je aan het inloggen bent. De enige MFA-methode die hiertegen bestand is, zijn FIDO2-sleutels en passkeys: die zijn cryptografisch gebonden aan de exacte domeinnaam
KeurigOnline zegtDomeinnaam
De snelste eerste stap: activeer een Cloudflare rate limit rule met maximaal 5 POST-verzoeken per minuut per IP op /wp-login.php en /xmlrpc.php. Dit blokkeert geautomatiseerde aanvallen voordat ze je server bereiken, en is binnen 10 minuten ingesteld. Voeg daarna een 2FA-plugin toe voor alle adminaccounts. Met die twee maatregelen sluit je het grootste deel van het aanvalsoppervlak al af.
Controleer je access logs op herhaalde POST-requests naar /wp-login.php of andere inlog-endpoints. Signalen zijn: een plotselinge piek in 401- en 403-foutcodes, langzamere responstijden op de inlogpagina, en inlogpogingen vanuit landen of met user agents die je normaal niet ziet. Gebruik je Cloudflare, dan geeft de Security Events-pagina een realtime overzicht van geblokkeerde verzoeken en aanvalsbronnen. Wordfence Live Traffic doet hetzelfde rechtstreeks in je WordPress
KeurigOnline zegtWordPress
PhaaS zijn kant-en-klare phishing-toolkits die criminelen als maandabonnement kopen voor 200 tot 350 euro. Ze bevatten AI-gegenereerde nep-e-mails, MFA-bypass-technologie (AiTM) en realtime dashboards. De drempel om een aanval te lanceren is vrijwel nul, ook voor mensen zonder technische kennis. Barracuda detecteerde in slechts twee maanden tijd meer dan 1 miljoen PhaaS-aanvallen. Elke website kan doelwit zijn, ook kleine mkb-sites.
CAPTCHA
KeurigOnline zegtCaptcha