Hushfort

Hoe beperk ik het aantal inlogpogingen in WordPress?

Door Eureka Studio · Bijgewerkt op

Kort antwoord

WordPress laat iedereen eindeloos wachtwoorden raden. Om inlogpogingen te beperken gebruik je een plugin die mislukte inlogpogingen per IP binnen een tijdvenster telt en dat IP een tijdje blokkeert, bijvoorbeeld: 8 mislukte pogingen in 5 minuten betekent 15 minuten wachten. Zorg dat mislukte 2FA-codes en applicatiewachtwoorden ook meetellen, en zet je eigen IP op de lijst met toegestane IP's.

Stappen

  1. 1Stap 1

    Kijk hoe onbeperkt raden eruitziet

    Zonder limiet beantwoordt WordPress elk verkeerd wachtwoord met dezelfde foutmelding, zo vaak als erom gevraagd wordt, en de standaardmelding bevestigt zelfs dat de gebruikersnaam bestaat.

    Twee verkeerde wachtwoorden ingevoerd in het inlogformulier van WordPress; elke keer meldt WordPress dat het wachtwoord voor demo-admin onjuist is en laat het de volgende poging door
  2. 2Stap 2

    Zet Inloglimieten aan en stel de regels in

    Open in WordPress Hushfort → Limieten & beperkingen en zet Inloglimieten inschakelen aan. De standaardwaarden zijn 8 mislukte pogingen binnen 5 minuten, daarna een blokkade van 15 minuten; na 4 blokkades binnen 24 uur duurt de blokkade 1.440 minuten. Klik op Wijzigingen opslaan.

    Het tabblad Limieten & beperkingen van Hushfort: inloglimieten staan aan, met 8 toegestane mislukte pogingen, een tijdvenster van 5 minuten en een blokkadeduur van 15 minuten
  3. 3Stap 3

    Zet je eigen IP op de lijst en controleer de IP-bron

    Stel verderop de IP-bron in. "Automatisch (alleen geverifieerde proxy-headers)" past bij de meeste sites, ook die achter Cloudflare. Voeg daarna het IP van je kantoor of thuis toe onder Toegestane IP's, zodat je jezelf nooit kunt buitensluiten, en sla op.

    IP-bron ingesteld op Automatisch (alleen geverifieerde proxy-headers) en 203.0.113.10 toegevoegd onder Toegestane IP's
  4. 4Stap 4

    Ontvang een e-mail als een IP wordt geblokkeerd

    Zet Waarschuwingsmail aan en vul een of meer adressen in, gescheiden door komma's. De schakelaar heeft werkende SMTP op de site nodig; zonder SMTP laat Hushfort de optie uit en legt het uit waarom.

    Waarschuwingsmail ingeschakeld met twee waarschuwingsadressen ingevuld, daarna opgeslagen
  5. 5Stap 5

    Zie de limiet aan het werk

    Na het toegestane aantal mislukte pogingen wordt het IP geblokkeerd in plaats van dat het nog een kans krijgt. Geschiedenis toont elke actieve blokkade met de geprobeerde gebruikersnaam, het aantal pogingen en wanneer de blokkade afloopt, met een knop Deblokkeren.

    Het scherm Geschiedenis van Hushfort: actieve blokkades voor drie IP-adressen met de gebruikersnamen die ze probeerden, elk 8 pogingen en nog 15 minuten te gaan, boven de volledige geschiedenis van mislukte pogingen

Waarom het ertoe doet

Een brute-force-aanval is niets meer dan geduld: probeer een wachtwoord, heb het mis, probeer het volgende. WordPress vindt dat prima. Het beantwoordt duizend verkeerde gokken vanaf hetzelfde adres net zo beleefd als de eerste. Heeft een account een zwak of hergebruikt wachtwoord, dan is het een kwestie van tijd.

Een inloglimiet verandert de rekensom. Kan een IP maar een handvol pogingen doen voordat het een kwartier moet wachten, dan kost het raden van een fatsoenlijk wachtwoord jaren in plaats van uren. Bovendien hoeft je server de inlogpagina niet steeds opnieuw voor een bot op te bouwen.

Wat het in zijn eentje niet afdekt. Aanvallers met duizenden IP-adressen kunnen vanaf elk adres een paar gokken doen. Daarom werkt een inloglimiet het best samen met tweefactorauthenticatie, waardoor een geraden wachtwoord zonder de code waardeloos is.

Veelgemaakte fouten

  • Alleen het inlogformulier tellen. Wachtwoorden kunnen ook worden geprobeerd via xmlrpc.php, via applicatiewachtwoorden van de REST API en bij de stap van de 2FA-code. Tellen die niet mee voor de limiet, dan gebruiken aanvallers gewoon die. Sluit ook inloggen via XML-RPC af; lees hoe je XML-RPC veilig uitschakelt.
  • Achter een proxy het verkeerde IP lezen. Zit je site achter Cloudflare en leest de plugin het adres van de proxy, dan kan één bot alle bezoekers buitensluiten. Vertrouwt hij daarentegen blind de header X-Forwarded-For, dan kan een bot bij elk verzoek een nieuw IP verzinnen en wordt hij nooit geteld. De veilige regel: vertrouw proxy-headers alleen als het verzoek echt van de proxy komt.
  • Te lange blokkades. Een blokkade van 24 uur voor drie typefouten straft je eigen medewerkers. Hou de eerste blokkade kort en maak herhaalde blokkades langer.
  • Geen lijst met toegestane IP's. Voeg je eigen vaste IP toe, zodat een vergeten wachtwoord je nooit buitensluit.

Zonder plugin

WordPress heeft een hook, wp_login_failed, die na elke mislukte inlogpoging afgaat. Je kunt mislukte pogingen tellen met een transient en logins weigeren als het aantal te hoog wordt. Een minimale versie als must-use-plugin (wp-content/mu-plugins/login-limit.php):

<?php
add_action( 'wp_login_failed', function () {
    $key = 'll_' . md5( $_SERVER['REMOTE_ADDR'] );
    $n   = (int) get_transient( $key );
    set_transient( $key, $n + 1, 15 * MINUTE_IN_SECONDS );
} );

add_filter( 'authenticate', function ( $user ) {
    $key = 'll_' . md5( $_SERVER['REMOTE_ADDR'] );
    if ( (int) get_transient( $key ) >= 8 ) {
        return new WP_Error( 'too_many', 'Too many failed attempts. Try again later.' );
    }
    return $user;
}, 30 );

Het werkt, maar wees eerlijk over wat het mist: het leest alleen REMOTE_ADDR, dus achter een proxy telt het de proxy; het telt gokken via XML-RPC-multicall niet als afzonderlijke pogingen; het heeft geen lijst met toegestane IP's, geen waarschuwingsmail en geen log. Elk daarvan is extra code om te schrijven en te onderhouden.

Sommige hosts bieden ook tools op serverniveau, zoals fail2ban dat het toegangslog in de gaten houdt. Dat is sterk als je host het voor je draait; op gedeelde hosting kun je het meestal niet zelf instellen.

Als er iets misgaat

  • Je hebt jezelf buitengesloten. Wacht tot de blokkade afloopt, probeer het vanaf een ander netwerk zoals mobiele data, of vraag een andere beheerder je IP aan de lijst met toegestane IP's toe te voegen.
  • Iedereen wordt tegelijk geblokkeerd. Je site zit waarschijnlijk achter een proxy en de plugin leest het IP van de proxy. Wijzig de instelling IP-bron.
  • Er vinden nooit blokkades plaats. Controleer of de IP-bron een header vertrouwt die bots kunnen vervalsen. Toont elke poging een ander "IP", dan is dat de oorzaak.

Alle manieren om weer binnen te komen vind je in Buitengesloten na het wijzigen van de inlog-URL.

Met Hushfort

Inloglimieten is onderdeel van Hushfort Pro, de add-on bovenop Hushfort Security, de gratis WordPress-beveiligingsplugin.

De laag Inloglimieten van Hushfort telt mislukte inlogpogingen per IP (of per IP en gebruikersnaam) binnen een tijdvenster dat jij kiest, en blokkeert het IP voor een duur die jij kiest. Herhaalde blokkades binnen 24 uur kunnen een langere, verlengde blokkade opleveren.

  • Mislukte 2FA-codes en mislukte logins met applicatiewachtwoorden tellen ook mee, dus er is geen zijdeur om te raden.
  • Proxy-headers worden alleen vertrouwd als het verzoek echt van Cloudflare of een privénetwerk komt.
  • Waarschuwingsmails gaan naar zoveel adressen als je opgeeft.
  • Elke mislukte en geblokkeerde poging verschijnt in een filterbare Geschiedenis.
  • De lijst met toegestane IP's wordt gedeeld met elke andere laag van Hushfort, dus je voegt jezelf maar één keer toe.

Als je Hushfort deactiveert, worden alle bestaande blokkades opgeheven.

Veelgestelde vragen

Hoeveel inlogpogingen moet ik toestaan?

Genoeg voor iemand die zich een paar keer vertypt, weinig genoeg om raden zinloos te maken. Zo'n 5 tot 10 mislukte pogingen binnen een paar minuten, met een blokkade van 15 minuten, is een rustige middenweg.

Beperkt WordPress inlogpogingen standaard?

Nee. WordPress zelf accepteert onbeperkt mislukte inlogpogingen. Sommige hosts voegen een limiet toe op de server, dus vraag het na bij de jouwe, maar reken er niet op.

Kan een inloglimiet mij buitensluiten van mijn eigen site?

Dat kan als je je blijft vertypen. Zet je eigen IP op de lijst met toegestane IP's, of wacht tot de blokkade afloopt. Een andere beheerder kan je IP ook aan die lijst toevoegen.

Is het beperken van inlogpogingen genoeg om brute force te stoppen?

Het vertraagt raden tot een slakkengang, maar aanvallers met veel IP-adressen kunnen hun pogingen spreiden. Combineer het met tweefactorauthenticatie, sterke wachtwoorden en het afsluiten van inloggen via XML-RPC.

Waarom treffen blokkades achter Cloudflare de verkeerde mensen?

Achter een proxy lijkt elke bezoeker van het IP van de proxy te komen. Stel de IP-bron zo in dat de plugin de header met het echte IP vertrouwt, en alleen als het verzoek echt van die proxy komt.

Meld een bug of vraag een functie aan

Je bericht gaat rechtstreeks naar het team dat Hushfort bouwt.

Waar gaat het over?

Alleen gebruikt om je te antwoorden.

We gebruiken deze gegevens alleen om je te antwoorden. Privacy